At the DC Tech Hackathon, I had access to the Dun & Bradstreet Direct 2.0 API. Their documentation isn’t great, so I wrote a quick Python example of authenticating and requesting data (also available as a Gist):
#!/usr/bin/env python
"""Sample code for authenticating and requesting data from D&B Direct API. See
http://developer.dnb.com/ for more information.
"""
import requests # pip install requests
# Register at http://developer.dnb.com/register-v2
DNB_USERNAME = ""
DNB_PASSWORD = ""
def get_dnb_token(username, password, url="https://maxcvservices.dnb.com/rest/Authentication"):
"""Get a new authentication token.
See http://developer.dnb.com/docs/2.0/common/authentication-process
:param username: D&B username
:type username: str
:param password: D&B password
:type password: str
:returns: authentication token or "INVALID CREDENTIALS"
:rtype: str
"""
r = requests.post(
url,
headers={
"x-dnb-user": username,
"x-dnb-pwd": password,
}
)
return r.headers["Authorization"]
def get_rtng_trnd(duns, token):
""" Get a D&B Rating & Trend
See http://developer.dnb.com/docs/2.0/assessment/3.0/ratings
:param duns: DUNS number
:type token: str
:param token: authentication token
:type token: str
:returns: dict
:rtype: dict
"""
url = "https://maxcvservices.dnb.com/V3.0/organizations/%s/products/RTNG_TRND"
headers = {"Authorization": token}
r = requests.get(url % duns, headers=headers)
return r.json()["OrderProductResponse"]
if __name__ == '__main__':
token = get_dnb_token(DNB_USERNAME, DNB_PASSWORD)
sample_duns = "804735132" # Gorman Manufacturing
print get_rtng_trnd(sample_duns, token)
Thanks for your patience this weekend, Dylan! And for sharing this. We learned so much from everyone, and came away with some very useful enhancement ideas – including a library for Python and other languages.