#!/usr/bin/env python3 import requests import json print("Searching for Raising Cane's locations") all_results = [] desired_results = 999999 while len(all_results) < desired_results: res = requests.get("https://prod-cdn.us.yextapis.com/v2/accounts/me/search/vertical/query", params={ "experienceKey": "locator", "api_key": "6c78315e15b82a7cccbbf3fad5db0958", "v": "20220511", "version": "PRODUCTION", "locale": "en", "verticalKey": "locations", "filters": json.dumps({ "builtin.location": { "$near": { "lat": 0, "lng": 0, "radius": 100000000, } } }), "limit": 50, "offset": len(all_results), "source": "STANDARD", }) desired_results = int(res.json()['response']['resultsCount']) all_results.extend(res.json()['response']['results']) print(f"Fetched {len(all_results)}/{desired_results} results…") stores = [] for s in all_results: stores.append({ "type": "Feature", "geometry": { "type": "Point", "coordinates": [float(s['data']['yextDisplayCoordinate']['longitude']), float(s['data']['yextDisplayCoordinate']['latitude'])], # yes, [lon, lat] since it's [x, y] }, "properties": { 'name': s['data']['name'], 'nickname': s['data']['c_nickname'], 'address': s['data']['address']['line1'], 'city': s['data']['address']['city'], 'state': s['data']['address']['region'], 'zip': s['data']['address']['postalCode'], 'website': s['data']['websiteUrl'], 'opened': s['data']['c_openDate'], 'hours': s['data']['hours'], }, }) print(f"""{len(stores)} locations found""") geojson = { "type": "FeatureCollection", "features": stores, } with open("data.geojson", "w") as f: f.write(json.dumps(geojson))