692+ Endpoints · REST · JSON

API Documentation

Complete reference for the CleverTech Canadian Municipal Data Platform. All endpoints return JSON with consistent pagination.

General Endpoints

Cross-cutting endpoints available across all verticals.

GET /api/cities List all available cities and their verticals
GET /api/status API status, version, and endpoint index
GET /health Health check — database connectivity per city

Data Verticals

Each vertical has city-scoped endpoints. Replace {city} with a city slug from the reference table below.

Property Assessment

Historical property assessment values, ownership records, and tax data for residential and commercial properties.

City slug: Replace {city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
GET /api/{city}/property/search Search & filter assessments with pagination
GET /api/{city}/property/stats Aggregate statistics (avg value, counts by type)
GET /api/{city}/property/by-roll/{roll} Single property by roll number
GET /api/{city}/property/by-dls?dls= Lookup by DLS coordinates
POST /api/{city}/property/batch Batch lookup up to 100 properties
GET /api/{city}/property/export Export full dataset (CSV/JSON)
Query Parameters
qFull-text search (address, neighbourhood)
limitResults per page (default 20, max 100)
offsetPagination offset
min_valueMinimum assessed value filter
max_valueMaximum assessed value filter
property_typeResidential, Commercial, etc.
sortSort field: assessed_value, address, etc.

Census Profiles

Statistics Canada census data — demographics, income, housing, and education profiles mapped to municipal boundaries and DAs.

City slug: Replace {city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
GET /api/{city}/census/by-gps?lat=&lon= Census data by GPS coordinates
GET /api/{city}/census/by-dls?dls= Census data by DLS code
GET /api/{city}/census/profile?da_id= Profile by Dissemination Area ID
GET /api/{city}/census/stats Aggregate census statistics
GET /api/{city}/census/list List all DAs for a city
POST /api/{city}/census/batch Batch census lookup
Query Parameters
latLatitude for GPS lookup
lonLongitude for GPS lookup
dlsDLS coordinate string (Q-SS-TWP-R-M format)
da_idDissemination Area ID
limitResults per page
offsetPagination offset

Zoning & Land Use

Zoning bylaws, land-use categories, district codes, and regulatory boundaries. 218K+ district records across 18 cities.

City slug: Replace {city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
GET /api/{city}/zoning Zone districts with pagination
GET /api/{city}/zoning/codes Unique zone codes for a city
GET /api/{city}/zoning/categories Major land-use categories
GET /api/{city}/zoning/search?q= Full-text search across zones
GET /api/{city}/zoning/by-code/{code} Districts by zone code
GET /api/{city}/zoning/by-gps?lat=&lon= Zone lookup by GPS
GET /api/{city}/zoning/stats Aggregate zoning statistics
GET /api/{city}/zoning/export Export zone data (GeoJSON/JSON)
Query Parameters
qFull-text search query
codeFilter by zone code
categoryFilter by major category
limitResults per page (default 20)
offsetPagination offset

Building Permits

Building permit records — construction type, valuation, floor area, and contractor data. Track development activity across cities.

City slug: Replace {city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
GET /api/{city}/building/search Search & filter permits
GET /api/{city}/building/stats Aggregate permit statistics
GET /api/{city}/building/{permit_id} Single permit detail
POST /api/{city}/building/batch Batch permit lookup
GET /api/{city}/building/export Export permits (CSV/JSON)
Query Parameters
qFull-text search
statusFilter by permit status
typePermit type filter
min_valueMinimum estimated value
max_valueMaximum estimated value
limitResults per page
offsetPagination offset

Business Registry

Canadian federal corporation registry — search companies, directors, and filings. Advanced filtering by province, industry, and status.

GET /api/registry/search Full-text corporation search
GET /api/registry/corporation/{id} Corporation detail by ID
GET /api/registry/advanced Advanced filtering & faceted search
GET /api/registry/province/{code} Corporations by province
GET /api/registry/stats Aggregate registry statistics
Query Parameters
qCorporation name search
provinceProvince code filter (ON, AB, BC, etc.)
statusActive, Dissolved, etc.
industryNAICS industry code
limitResults per page
offsetPagination offset

DLS Valuation

Dynamic Land Scoring — comparative property valuation models, global rankings, and cross-city summaries for data-driven investment decisions.

City slug: Replace {city} with any enabled city: calgary, toronto, vancouver, etc. See /api/cities for the full list.
POST /api/dls/compare Multi-property comparison up to 50 properties
GET /api/dls/rankings/global Global property rankings
GET /api/dls/summary/{city} City-level DLS summary
Query Parameters
cityCity slug for summary
metricRanking metric: value, growth, yield
limitResults per page
offsetPagination offset

Zoning Alerts

Subscribe to real-time notifications when zoning changes occur in your areas of interest. Webhook delivery with configurable filters.

POST /api/alerts/subscribe Register a webhook subscription
GET /api/alerts/subscriptions List active subscriptions
DELETE /api/alerts/subscription/{sub_id} Deactivate a subscription
GET /api/alerts/snapshots Point-in-time zoning snapshots
GET /api/alerts/stats Alert delivery statistics
Query Parameters
cityCity slug to monitor
categoryZone category filter
webhook_urlYour webhook endpoint URL

Reference

Authentication

API keys provide higher rate limits and access to paid tiers. Two ways to obtain a key:

Device Authorization (CLI / Bots)

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.
Flow: POST /auth/device/code → open verification_uri_complete in browser → click Authorize → poll POST /auth/device/token until you get a ctk_... API key.
Discovery: /.well-known/oauth-authorization-server (RFC 8414 metadata — any OAuth client can auto-configure from this)

Header-based (obtain key via device auth above, or from the dashboard)

AuthorizationBearer ctk_... (standard HTTP auth)
X-API-Keyctk_... (alternative header)
Rate limits without auth: 50 calls/day anonymous, 200/day for free Developer accounts.
Tip: All endpoints are open for reading — authentication unlocks higher limits and API key access.

Example: Using your API key

curlcurl -H "X-API-Key: ctk_..." https://clevertech.ca/api/calgary/property/search?limit=5
Pythonrequests.get(url, headers={"X-API-Key": "ctk_..."})
JavaScriptfetch(url, {headers: {"X-API-Key": "ctk_..."}})

City Slug Reference

Use these slugs in your API calls (e.g., /api/calgary/property/search).

SlugCityVerticalsQuick 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 →

Need machine-readable specs?

OAuth Discovery (RFC 8414) List All Cities