Documentation menu
Cookbook
OverviewNew permit leadsHighest-value permitsFurnace and rewire permitsPermits near a pointMegaproject pipelineProjects near a siteZoning at an addressEverything at one addressEndpoints
GET/zoneGET/geocodeGET/reverse-geocodeGET/zoningPOST/permit/estimateGET/contractor/statsGET/contractor/coverageGET/contractorGET/propertyGET/address/normalizeGET/opening_soonGET/openingGET/businessGET/business/statsGET/business/coverageGET/contractor/{name_normalized}GET/permitGET/inspectionGET/licenceGET/development_permitGET/planning_applicationGET/assessmentGET/major_projectGET/heritage_statusGET/occupancy_permitGET/permit/statsGET/inspection/statsGET/licence/statsGET/development_permit/statsGET/planning_application/statsGET/assessment/statsGET/major_project/statsGET/heritage_status/statsGET/occupancy_permit/statsGET/permit/coverageGET/inspection/coverageGET/licence/coverageGET/development_permit/coverageGET/planning_application/coverageGET/assessment/coverageGET/major_project/coverageGET/heritage_status/coverageGET/occupancy_permit/coverageGET/permit/{record_id}/historyGET/permit/{record_id}GET/inspection/{record_id}GET/licence/{record_id}GET/development_permit/{record_id}GET/planning_application/{record_id}GET/assessment/{record_id}GET/major_project/{record_id}GET/heritage_status/{record_id}GET/occupancy_permit/{record_id}Docs / Guides / Export results to CSV or a spreadsheet
Export results to CSV or a spreadsheet
Pull records across pages and write them to a CSV you can open in Excel or Sheets.
Pull every matching record from BuildData and write a CSV you can open in Excel or Google Sheets. This loops pages until the results run out.
import csv, requests
URL = "https://api.builddata.ca/permit"
HEADERS = {"X-API-Key": "YOUR_API_KEY"}
rows, cursor = [], None
while True:
params = {"limit": 500}
if cursor:
params["cursor"] = cursor
r = requests.get(URL, headers=HEADERS, params=params).json()
rows += r.get("results", [])
cursor = r.get("next_cursor")
if not cursor:
break
with open("export.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=rows[0].keys())
w.writeheader()
w.writerows(rows)Swap in the filters from the endpoint's reference page to export exactly the slice you want.
Ready to build?Create a free key and start calling BuildData in minutes. No card required.
Get your API key →