BuildData API Documentation
Canada-wide construction data API across eight datasets: building permits, building inspections, business licences, development permits, planning applications, property assessments, contractor profiles, and zoning, covering dozens of Canadian cities and provinces.
Documentation menu
Getting started
QuickstartEndpoints
GET/zoneGET/geocodeGET/reverse-geocodeGET/zoningGET/contractor/statsGET/contractor/coverageGET/contractor/{name_normalized}GET/contractorGET/permitGET/inspectionGET/licenceGET/development_permitGET/planning_applicationGET/assessmentGET/permit/statsGET/inspection/statsGET/licence/statsGET/development_permit/statsGET/planning_application/statsGET/assessment/statsGET/permit/coverageGET/inspection/coverageGET/licence/coverageGET/development_permit/coverageGET/planning_application/coverageGET/assessment/coverageGET/permit/feedGET/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}Quickstart
Three steps to your first call:
- Subscribe on RapidAPI and copy your key (there is a free tier).
- Call the base URL
https://builddata-canadian-construction-data-api.p.rapidapi.comwith your key in the headers. - Parse the JSON response.
curl --request GET \
--url 'https://builddata-canadian-construction-data-api.p.rapidapi.com/zone' \
--header 'x-rapidapi-host: builddata-canadian-construction-data-api.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'import requests
url = "https://builddata-canadian-construction-data-api.p.rapidapi.com/zone"
headers = {"x-rapidapi-host": "builddata-canadian-construction-data-api.p.rapidapi.com", "x-rapidapi-key": "YOUR_RAPIDAPI_KEY"}
resp = requests.get(url, headers=headers)
print(resp.json())const res = await fetch("https://builddata-canadian-construction-data-api.p.rapidapi.com/zone", {
headers: {
"x-rapidapi-host": "builddata-canadian-construction-data-api.p.rapidapi.com",
"x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
},
});
const data = await res.json();
console.log(data);<?php
$ch = curl_init("https://builddata-canadian-construction-data-api.p.rapidapi.com/zone");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"x-rapidapi-host: builddata-canadian-construction-data-api.p.rapidapi.com",
"x-rapidapi-key: YOUR_RAPIDAPI_KEY",
]);
echo curl_exec($ch);require "net/http"
require "uri"
uri = URI("https://builddata-canadian-construction-data-api.p.rapidapi.com/zone")
req = Net::HTTP::Get.new(uri)
req["x-rapidapi-host"] = "builddata-canadian-construction-data-api.p.rapidapi.com"
req["x-rapidapi-key"] = "YOUR_RAPIDAPI_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.bodypackage main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://builddata-canadian-construction-data-api.p.rapidapi.com/zone", nil)
req.Header.Add("x-rapidapi-host", "builddata-canadian-construction-data-api.p.rapidapi.com")
req.Header.Add("x-rapidapi-key", "YOUR_RAPIDAPI_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.*;
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://builddata-canadian-construction-data-api.p.rapidapi.com/zone"))
.header("x-rapidapi-host", "builddata-canadian-construction-data-api.p.rapidapi.com")
.header("x-rapidapi-key", "YOUR_RAPIDAPI_KEY")
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());Guides
Getting started and authenticationGet an API key and make your first authenticated call in under five minutes.Filtering, search and paginationNarrow results with filters and full-text search, and page through large result sets.Export results to CSV or a spreadsheetPull records across pages and write them to a CSV you can open in Excel or Sheets.Monitor new recordsPoll for records added since your last check and act on them automatically.
Cookbook
Copy-paste recipes for common BuildData tasks.
Build a weekly new-permit lead listPull residential permits issued in the last week for a city, newest first, as a lead stream for sales.Find the highest-value permits in a city this monthSort a city's permits by construction value to surface the biggest projects.List permits within a radius of a coordinateFind recent permit activity around a job site or property using a lat/lng and radius.Resolve the zoning district at a street addressGeocode an address, then look up the zoning district at that exact coordinate.
Endpoint reference
Every BuildData route. Click through for parameters, examples and a sample response.
GET/zoneGet ZoneGET/geocodeGeocode a Canadian street address to coordinates and postal codeGET/reverse-geocodeReverse geocode coordinates to the nearest Canadian address and postal codeGET/zoningList zoning districts for a city, or zoning coverage across citiesGET/contractor/statsContractor aggregate statsGET/contractor/coverageContractor count per cityGET/contractor/{name_normalized}Get contractor profile by normalized nameGET/contractorSearch Canadian contractor profilesGET/permitSearch building permitsGET/inspectionSearch building inspectionsGET/licenceSearch business licencesGET/development_permitSearch development permitsGET/planning_applicationSearch planning applicationsGET/assessmentSearch records by entity typeGET/permit/statsBuilding permit statisticsGET/inspection/statsBuilding inspection statisticsGET/licence/statsBusiness licence statisticsGET/development_permit/statsDevelopment permit statisticsGET/planning_application/statsPlanning application statisticsGET/assessment/statsStats for an entity typeGET/permit/coverageBuilding permit count per cityGET/inspection/coverageInspection count per cityGET/licence/coverageBusiness licence count per cityGET/development_permit/coverageDevelopment permit count per cityGET/planning_application/coveragePlanning application count per cityGET/assessment/coverageRecord count per city for an entity typeGET/permit/feedPro: matched permit-lead feed (curated, deduplicated, new-since window)GET/permit/{record_id}Get permit by IDGET/inspection/{record_id}Get inspection by IDGET/licence/{record_id}Get licence by IDGET/development_permit/{record_id}Get development permit by IDGET/planning_application/{record_id}Get planning application by IDGET/assessment/{record_id}Get record by ID
Ready to build?Subscribe on RapidAPI to get your key and start calling BuildData in minutes.
Get your API key →