Complete reference for the CleverTech Canadian Municipal Data Platform. All endpoints return JSON with consistent pagination.
Cross-cutting endpoints available across all verticals.
/api/cities
List all available cities and their verticals
/api/status
API status, version, and endpoint index
/health
Health check — database connectivity per city
Get started in minutes with copy-paste examples tailored to your use case. Click any card to expand.
Integrate property assessments, zoning, and census data into your real estate platform. Power comps, market analysis, and property due diligence with municipal-grade data across 18 Canadian cities.
curl -H "X-API-Key: ctk_..." \
"https://clevertech.ca/api/calgary/property/search?min_value=400000&max_value=800000&property_type=Residential&limit=20"
Build AI agents that query property records, verify zoning compliance, and analyze census demographics. All endpoints are JSON-first and designed for tool-calling / function-calling workflows.
curl -H "X-API-Key: ctk_..." \
"https://clevertech.ca/api/calgary/zoning/by-gps?lat=51.0447&lon=-114.0719"
Access building permit history, property valuations, and zoning classifications for risk assessment, underwriting, and claims verification across Canadian municipalities.
curl -H "X-API-Key: ctk_..." \
"https://clevertech.ca/api/calgary/building/search?status=Issued&limit=50"
Analyze zoning patterns, census demographics, and building permit trends for planning studies, policy research, and municipal development projects.
curl -H "X-API-Key: ctk_..." \
"https://clevertech.ca/api/calgary/census/by-gps?lat=51.0447&lon=-114.0719"
Each vertical has city-scoped endpoints. Replace {city} with a city slug from the reference table below.
Historical property assessment values, ownership records, and tax data for residential and commercial properties.
{city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
/api/{city}/property/search
Search & filter assessments with pagination
/api/{city}/property/stats
Aggregate statistics (avg value, counts by type)
/api/{city}/property/by-roll/{roll}
Single property by roll number
/api/{city}/property/by-dls?dls=
Lookup by DLS coordinates
/api/{city}/property/batch
Batch lookup up to 100 properties
/api/{city}/property/export
Export full dataset (CSV/JSON)
qFull-text search (address, neighbourhood)limitResults per page (default 20, max 100)offsetPagination offsetmin_valueMinimum assessed value filtermax_valueMaximum assessed value filterproperty_typeResidential, Commercial, etc.sortSort field: assessed_value, address, etc.curl -H "X-API-Key: ctk_..." "https://clevertech.ca/api/calgary/property/search?q=Willow+Park&limit=5"
import requests
response = requests.get(
"https://clevertech.ca/api/calgary/property/search",
params={"q": "Willow Park", "limit": 5},
headers={"X-API-Key": "ctk_..."}
)
data = response.json()
print(data["total"], "properties found")
const response = await fetch(
"https://clevertech.ca/api/calgary/property/search?q=Willow+Park&limit=5",
{ headers: { "X-API-Key": "ctk_..." } }
);
const data = await response.json();
console.log(data.total, "properties found");
curl -H "X-API-Key: ctk_..." "https://clevertech.ca/api/calgary/property/by-roll/12345678"
response = requests.get(
"https://clevertech.ca/api/calgary/property/by-roll/12345678",
headers={"X-API-Key": "ctk_..."}
)
print(response.json())
const response = await fetch(
"https://clevertech.ca/api/calgary/property/by-roll/12345678",
{ headers: { "X-API-Key": "ctk_..." } }
);
const data = await response.json();
console.log(data);
Statistics Canada census data — demographics, income, housing, and education profiles mapped to municipal boundaries and DAs.
{city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
/api/{city}/census/by-gps?lat=&lon=
Census data by GPS coordinates
/api/{city}/census/by-dls?dls=
Census data by DLS code
/api/{city}/census/profile?da_id=
Profile by Dissemination Area ID
/api/{city}/census/stats
Aggregate census statistics
/api/{city}/census/list
List all DAs for a city
/api/{city}/census/batch
Batch census lookup
latLatitude for GPS lookuplonLongitude for GPS lookupdlsDLS coordinate string (Q-SS-TWP-R-M format)da_idDissemination Area IDlimitResults per pageoffsetPagination offsetcurl -H "X-API-Key: ctk_..." "https://clevertech.ca/api/calgary/census/by-gps?lat=51.0447&lon=-114.0719"
response = requests.get(
"https://clevertech.ca/api/calgary/census/by-gps",
params={"lat": 51.0447, "lon": -114.0719},
headers={"X-API-Key": "ctk_..."}
)
data = response.json()
print("Population:", data.get("population"))
const response = await fetch(
"https://clevertech.ca/api/calgary/census/by-gps?lat=51.0447&lon=-114.0719",
{ headers: { "X-API-Key": "ctk_..." } }
);
const data = await response.json();
console.log("Population:", data.population);
Zoning bylaws, land-use categories, district codes, and regulatory boundaries. 218K+ district records across 18 cities.
{city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
/api/{city}/zoning
Zone districts with pagination
/api/{city}/zoning/codes
Unique zone codes for a city
/api/{city}/zoning/categories
Major land-use categories
/api/{city}/zoning/search?q=
Full-text search across zones
/api/{city}/zoning/by-code/{code}
Districts by zone code
/api/{city}/zoning/by-gps?lat=&lon=
Zone lookup by GPS
/api/{city}/zoning/stats
Aggregate zoning statistics
/api/{city}/zoning/export
Export zone data (GeoJSON/JSON)
qFull-text search querycodeFilter by zone codecategoryFilter by major categorylimitResults per page (default 20)offsetPagination offsetcurl -H "X-API-Key: ctk_..." "https://clevertech.ca/api/calgary/zoning/by-gps?lat=51.0447&lon=-114.0719"
response = requests.get(
"https://clevertech.ca/api/calgary/zoning/by-gps",
params={"lat": 51.0447, "lon": -114.0719},
headers={"X-API-Key": "ctk_..."}
)
zone = response.json()
print(zone.get("zone_code"), zone.get("category"))
const response = await fetch(
"https://clevertech.ca/api/calgary/zoning/by-gps?lat=51.0447&lon=-114.0719",
{ headers: { "X-API-Key": "ctk_..." } }
);
const zone = await response.json();
console.log(zone.zone_code, zone.category);
Building permit records — construction type, valuation, floor area, and contractor data. Track development activity across cities.
{city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
/api/{city}/building/search
Search & filter permits
/api/{city}/building/stats
Aggregate permit statistics
/api/{city}/building/{permit_id}
Single permit detail
/api/{city}/building/batch
Batch permit lookup
/api/{city}/building/export
Export permits (CSV/JSON)
qFull-text searchstatusFilter by permit statustypePermit type filtermin_valueMinimum estimated valuemax_valueMaximum estimated valuelimitResults per pageoffsetPagination offsetcurl -H "X-API-Key: ctk_..." "https://clevertech.ca/api/calgary/building/search?status=Issued&limit=10"
response = requests.get(
"https://clevertech.ca/api/calgary/building/search",
params={"status": "Issued", "limit": 10},
headers={"X-API-Key": "ctk_..."}
)
data = response.json()
print(data["total"], "permits found")
const response = await fetch(
"https://clevertech.ca/api/calgary/building/search?status=Issued&limit=10",
{ headers: { "X-API-Key": "ctk_..." } }
);
const data = await response.json();
console.log(data.total, "permits found");
Canadian federal corporation registry — search companies, directors, and filings. Advanced filtering by province, industry, and status.
/api/registry/search
Full-text corporation search
/api/registry/corporation/{id}
Corporation detail by ID
/api/registry/advanced
Advanced filtering & faceted search
/api/registry/province/{code}
Corporations by province
/api/registry/stats
Aggregate registry statistics
qCorporation name searchprovinceProvince code filter (ON, AB, BC, etc.)statusActive, Dissolved, etc.industryNAICS industry codelimitResults per pageoffsetPagination offsetDynamic Land Scoring — comparative property valuation models, global rankings, and cross-city summaries for data-driven investment decisions.
{city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
/api/dls/compare
Multi-property comparison up to 50 properties
/api/dls/rankings/global
Global property rankings
/api/dls/summary/{city}
City-level DLS summary
cityCity slug for summarymetricRanking metric: value, growth, yieldlimitResults per pageoffsetPagination offsetSubscribe to real-time notifications when zoning changes occur in your areas of interest. Webhook delivery with configurable filters.
/api/alerts/subscribe
Register a webhook subscription
/api/alerts/subscriptions
List active subscriptions
/api/alerts/subscription/{sub_id}
Deactivate a subscription
/api/alerts/snapshots
Point-in-time zoning snapshots
/api/alerts/stats
Alert delivery statistics
cityCity slug to monitorcategoryZone category filterwebhook_urlYour webhook endpoint URLAPI keys provide higher rate limits and access to paid tiers. Two ways to obtain a key:
OAuth 2.0 Device Authorization (RFC 8628) — the standard way for headless tools to obtain API keys. No password needed.
POST /auth/device/codeGenerate a device code. Body: {"client_name": "my-tool", "scopes": "*"}POST /auth/device/tokenPoll for API key. Body: {"device_code": "..."}. Returns ctk_... key when user authorizes.GET /auth/device/verifyBrowser confirmation page. Open the verification_uri_complete URL to authorize.POST /auth/device/code → open verification_uri_complete in browser → click Authorize → poll POST /auth/device/token until you get a ctk_... API key.Header-based (obtain key via device auth above, or from the dashboard)
AuthorizationBearer ctk_... (standard HTTP auth)X-API-Keyctk_... (alternative header)Example: Using your API key
curlcurl -H "X-API-Key: ctk_..." https://clevertech.ca/api/calgary/property/search?limit=5Pythonrequests.get(url, headers={"X-API-Key": "ctk_..."})JavaScriptfetch(url, {headers: {"X-API-Key": "ctk_..."}})Rate Limit Tiers
| Tier | Rate Limit | API Key Prefix |
|---|---|---|
| Developer (Free) | 200/day | ctk_... |
| Pro | 5,000/day | ctk_... |
| Enterprise | 50,000/day | ctk_... |
See /pricing for full details, features, and SLA commitments.
All list endpoints return consistent paginated responses with metadata.
{
"query": "search term",
"count": 20,
"total": 15234,
"limit": 20,
"offset": 0,
"results": [...]
}
limitResults per page (default 20, max 100)offsetZero-based offset for paginationformatResponse format: json (default) or csvUse these slugs in your API calls (e.g., /api/calgary/property/search).
| Slug | City | Verticals | Quick Test |
|---|---|---|---|
/calgary |
Calgary, AB | Property Census Zoning Building Business_License | Try it → |
/halifax |
Halifax, NS | Property Census Zoning Building | Try it → |
/saskatoon |
Saskatoon, SK | Property Census Zoning Building | Try it → |
/toronto |
Toronto, ON | Property Census Zoning Building | Try it → |
/montreal |
Montreal, QC | Property Census Zoning Building | Try it → |
/vancouver |
Vancouver, BC | Property Census Zoning Building Business_License | Try it → |
/edmonton |
Edmonton, AB | Property Census Zoning Building Business_License | Try it → |
/ottawa |
Ottawa, ON | Property Census Zoning Building | Try it → |
/winnipeg |
Winnipeg, MB | Property Census Zoning Building Business_License | Try it → |
/quebec-city |
Quebec City, QC | Property Census Zoning Building | Try it → |
/hamilton |
Hamilton, ON | Property Census Zoning Building | Try it → |
/kitchener |
Kitchener-Waterloo, ON | Property Census Zoning Building | Try it → |
/mississauga |
Mississauga, ON | Property Census Zoning Building | Try it → |
/markham |
Markham, ON | Property Census Zoning Building | Try it → |
/vaughan |
Vaughan, ON | Property Census Zoning Building | Try it → |
/london |
London, ON | Property Census Zoning Building | Try it → |