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}Search building inspections
Parameters
| Parameter | Type | Description | |
|---|---|---|---|
municipality | string | optional | |
q | string | optional | Full-text search across data fields. Space-separated words require all terms (e.g. "wood panel"). Use OR to match any term ("wood OR panel OR acoustic"), quotes for exact phrases ("supply arrangement"), and a leading minus to exclude ("software -hardware"). |
permit_type | string | optional | Filter by permit type (partial match) |
status_canonical | string | optional | Normalized permit status: issued, in_review, completed, expired, cancelled, unknown |
issued_after | string | optional | Filter by date >= YYYY-MM-DD (issued_date) |
issued_before | string | optional | Filter by date <= YYYY-MM-DD |
lat | number | optional | Latitude for proximity search |
lng | number | optional | Longitude for proximity search |
radius_km | number | optional | Radius in km (requires lat and lng, max 25) |
sort_by | string | optional | Sort field: published (publication_date for tenders, award_date for contracts), date (event date), value (contract/agreement value), closing (closing_date for tenders) |
sort_order | string | optional | Sort order: asc or desc |
limit | integer | optional | |
offset | integer | optional | |
cursor | string | optional | Pagination cursor from next_cursor in a previous response. Use instead of offset for deep pagination. |
Request
curl --request GET \
--url 'https://builddata-canadian-construction-data-api.p.rapidapi.com/inspection' \
--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/inspection"
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/inspection", {
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/inspection");
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/inspection")
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/inspection", 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/inspection"))
.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());Example response
{
"entity_type": "permit",
"count": 1,
"offset": 0,
"results": [
{
"record_id": "24 223023 PLB:00",
"municipality": "toronto",
"lat": 43.65401,
"lng": -79.42376,
"work": "Building Permit Related(PS)",
"status": "Permit Issued",
"address": "865 COLLEGE ST",
"description": "Plumbing - INTERIOR ALTERNATION OF 3RD FLOOR SUITE",
"issued_date": "2025-01-29",
"permit_type": "Plumbing(PS)",
"application_date": "2024-10-07",
"construction_value": null
}
]
}Ready to build?Subscribe on RapidAPI to get your key and start calling BuildData in minutes.
Get your API key →