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
QuickstartCookbook
OverviewNew permit leadsHighest-value permitsPermits near a pointMegaproject pipelineProjects near a siteZoning at an addressEndpoints
GET/zoneGET/geocodeGET/reverse-geocodeGET/zoningGET/contractor/statsGET/contractor/coverageGET/contractor/{name_normalized}GET/contractorGET/permitGET/inspectionGET/licenceGET/development_permitGET/planning_applicationGET/assessmentGET/major_projectGET/permit/statsGET/inspection/statsGET/licence/statsGET/development_permit/statsGET/planning_application/statsGET/assessment/statsGET/major_project/statsGET/permit/coverageGET/inspection/coverageGET/licence/coverageGET/development_permit/coverageGET/planning_application/coverageGET/assessment/coverageGET/major_project/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}GET/major_project/{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.Track $100M+ capital projects under constructionMajor projects are the earliest and largest end of the construction funnel, years ahead of a building permit. Filter to the ones actually being built and rank them by capital cost.Find planned projects within range of a locationSurface upcoming capital work around a branch, depot or job site so you can plan coverage before the work goes to tender.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 property assessmentsGET/major_projectSearch major capital projectsGET/permit/statsBuilding permit statisticsGET/inspection/statsBuilding inspection statisticsGET/licence/statsBusiness licence statisticsGET/development_permit/statsDevelopment permit statisticsGET/planning_application/statsPlanning application statisticsGET/assessment/statsProperty assessment statisticsGET/major_project/statsMajor project statisticsGET/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/coverageProperty assessment count per cityGET/major_project/coverageMajor project count per cityGET/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 property assessment by IDGET/major_project/{record_id}Get major project by ID
Ready to build?Subscribe on RapidAPI to get your key and start calling BuildData in minutes.
Get your API key →