Сервер ожидает заголовок User-Agent. Попробуйте:
import requests
url = 'https://datos.madrid.es/egob/catalogo/202625-0-aparcamientos-publicos.json'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0'}
response = requests.get(url, headers=headers)
print(response.json())
Вывод:
{'@context': {'c': 'http://www.w3.org/2002/12/cal#', 'dcterms': 'http://purl.org/dc/terms/', 'geo': 'http://www.w3.org/2003/01/geo/wgs84_pos#', 'loc': 'http://purl.org/ctic/infraestructuras/localizacion#', 'org': 'http://purl.org/ctic/infraestructuras/organizacion#', 'vcard': 'http://www.w3.org/2006/vcard/ns#', 'schema': 'https://schema.org/', 'title': 'vcard:fn', 'id': 'dcterms:identifier', 'relation': 'dcterms:relation', 'references': 'dcterms:references', 'address': 'vcard:adr', 'area': 'loc:barrio', 'district': 'loc :distrito', ...
Чтобы получить объект @graph, просто используйте обычный JSON синтаксический анализ:
print(response.json()['@graph'])
Или, если хотите в виде строки:
import json
...
print(json.dumps(response.json()['@graph']))
Или перебирать объекты графиков:
for graph in response.json()['@graph']:
print(json.dumps(graph))