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 / Monitor new records
Monitor new records
Poll for records added since your last check and act on them automatically.
To act on new records as they appear, poll BuildData on a schedule and keep the IDs you have already seen. Sort by newest and stop once you hit a known record.
import requests
URL = "https://api.builddata.ca/permit"
HEADERS = {"X-API-Key": "YOUR_API_KEY"}
seen = set() # persist this between runs
r = requests.get(URL, headers=HEADERS, params={"limit": 100}).json()
for record in r.get("results", []):
rid = record.get("record_id")
if rid in seen:
continue
seen.add(rid)
notify(record) # email, Slack, CRM, ...Run it on a cron (hourly or daily) and route new records to email, Slack, or your CRM.
This loop needs a paid plan. The free tier runs 30 days behind, so a poller on a free key will keep finding the same records it saw yesterday and nothing newer.
Ready to build?Create a free key and start calling BuildData in minutes. No card required.
Get your API key →