import requests import json import pandas as pd from io import StringIO import time url = "https://api.beta.ons.gov.uk/v1/filters?submitted=true" ages = range(0,90) ages = [str(a) for a in ages] years = [2015,2016,2017] years = [str(y) for y in years] post = { "dataset": { "id": "mid-year-pop-est", "edition": "time-series", "version": 4 }, "dimensions": [ { "name": "sex", "options": [ "1", "2" ]}, {"name": "age", "options": ages}, {"name": "time", "options": years} ] } post_data = json.dumps(post) r1 = requests.post(url = url, data = post_data) #works filter_meta = json.loads(r1.text) csv_location = filter_meta["links"]["filter_output"]["href"] output_url = filter_meta['links']['filter_output']['href'] time.sleep(1) r = requests.get(output_url) filter_output_meta = json.loads(r.text) print(filter_output_meta) csv_location = filter_output_meta['downloads']['csv']['href'] # r = requests.get(csv_location) # df = pd.read_csv(StringIO(text)) # df