requests module

import requests

url = "...."

r = requests.get(url)

# retrieve status code
r.status_code 

# retrieve json formatted response
r.json()

# write non-binary output
with ("out-file.txt", "w") as fobj:
    fobj.write(r.content)


# write binary output (e.g., for zip-files and other binary formats)
with ("out-file", "wb") as fobj:
    fobj.write(r.content)

Recursive request in case of non-successful return code:


url = "...."

def request_until_success(url):
    r = requests.get(url)

    if r. status_code != 200:
        # possibly delay renewed requests here ...

        return request_until_success(url)

    return r