RenoIntel delivers structured permit intelligence through three integration methods — REST API, SFTP, and bulk CSV — each designed for different partner workflows. Every record shares a unified schema across all 28+ cities.
Query permits by city with optional filters. The API returns paginated JSON with a consistent schema across all cities.
# Fetch residential permits issued in Toronto in the last 30 days curl -X GET "https://api.renointel.com/v1/permits" \ -H "Authorization: Bearer ri_live_xxxxxxxxxxxxxxxx" \ -G \ --data-urlencode "city=toronto" \ --data-urlencode "permit_type=residential" \ --data-urlencode "issued_after=2026-03-25" \ --data-urlencode "limit=3"
{
"object": "list",
"total": 1842,
"page": 1,
"limit": 3,
"next_cursor": "cur_a8f3b21c9d",
"data": [
{
"id": "toronto-26-123456",
"address": "142 Roncesvalles Ave",
"city": "Toronto",
"province": "ON",
"postal_code": "M6R 2L5",
"permit_type": "Alteration - Residential",
"description": "Interior renovation - kitchen and two bathrooms, new structural beam",
"permit_value": 87500,
"application_date": "2026-02-14",
"issue_date": "2026-03-28",
"status": "Issued",
"latitude": 43.6497,
"longitude": -79.4489,
"enrichment": {
"neighbourhood": "Roncesvalles",
"property_type": "Semi-detached",
"is_residential": true
}
},
{
"id": "toronto-26-123481",
"address": "887 Danforth Ave",
"city": "Toronto",
"province": "ON",
"postal_code": "M4J 1L8",
"permit_type": "New Construction - Residential",
"description": "Demolish existing and construct new 3-storey semi-detached dwelling",
"permit_value": 620000,
"application_date": "2025-11-03",
"issue_date": "2026-04-01",
"status": "Issued",
"latitude": 43.6784,
"longitude": -79.3521,
"enrichment": {
"neighbourhood": "East Danforth",
"property_type": "Semi-detached",
"is_residential": true
}
},
{
"id": "toronto-26-123502",
"address": "34 Glenwood Crescent",
"city": "Toronto",
"province": "ON",
"postal_code": "M9A 2G1",
"permit_type": "Addition - Residential",
"description": "Second storey addition above existing one-storey detached house",
"permit_value": 195000,
"application_date": "2026-01-22",
"issue_date": "2026-04-10",
"status": "Issued",
"latitude": 43.6614,
"longitude": -79.5227,
"enrichment": {
"neighbourhood": "Etobicoke",
"property_type": "Detached",
"is_residential": true
}
}
]
}
All SFTP and bulk CSV exports use the same column schema. Files are UTF-8 encoded, comma-delimited, with a header row. Dates use ISO 8601 (YYYY-MM-DD). Numeric values are unquoted. Empty fields are empty strings.
renointel_permits_YYYYMMDD.csv — one file per scheduled drop, containing all new and updated records since the previous delivery. A _manifest.json sidecar file is delivered alongside each CSV with row counts, city breakdown, and a SHA-256 checksum.
id,address,city,province,postal_code,permit_type,description,permit_value,application_date,issue_date,status,latitude,longitude,neighbourhood,is_residential toronto-26-123456,142 Roncesvalles Ave,Toronto,ON,M6R 2L5,Alteration - Residential,"Interior renovation - kitchen and two bathrooms, new structural beam",87500,2026-02-14,2026-03-28,Issued,43.6497,-79.4489,Roncesvalles,true toronto-26-123481,887 Danforth Ave,Toronto,ON,M4J 1L8,New Construction - Residential,"Demolish existing and construct new 3-storey semi-detached dwelling",620000,2025-11-03,2026-04-01,Issued,43.6784,-79.3521,East Danforth,true calgary-26-BP-091234,1822 Kensington Rd NW,Calgary,AB,T2N 3R5,Residential Addition,"Rear detached garage addition with secondary suite above",185000,2026-01-10,2026-03-15,Issued,51.0522,-114.0913,Kensington,true montreal-26-P-443821,3482 Rue Saint-Denis,Montréal,QC,H2X 3L6,Renovation résidentielle,"Rénovation intérieure complète - cuisine, salles de bain et planchers",112000,2026-02-28,2026-04-08,Émis,45.5181,-73.5689,Plateau-Mont-Royal,true vancouver-26-BP-22819,1547 W 12th Ave,Vancouver,BC,V6J 2E2,Addition to Single Family Dwelling,"Laneway house construction - 600 sqft",298000,2025-12-01,2026-03-22,Issued,49.2608,-123.1493,Fairview,true brampton-26-B-031142,22 Heartland Blvd,Brampton,ON,L6Z 4N2,New Single Family Home,Two-storey detached dwelling - new build,540000,2025-10-14,2026-02-18,Issued,43.7562,-79.7894,Springdale,true
Every permit record — regardless of source city or province — is normalized to the same schema. Fields marked with an enrichment tag are added by the RenoIntel intelligence layer, not sourced directly from the municipality.
| Field | Type | Description | Example |
|---|---|---|---|
| id | string | Stable unique identifier. Format: {city}-{year}-{source_id} |
toronto-26-123456 |
| address | string | Full civic address as provided by the municipality | 142 Roncesvalles Ave |
| city | string | Municipality name (normalized, English) | Toronto |
| province | string | 2-letter Canadian province code | ON |
| postal_code | string · nullable | Canadian postal code (A1A 1A1 format). Null if not published by city. | M6R 2L5 |
| permit_type | string | Permit category as reported by source. Values vary by city; normalized where possible. | Alteration - Residential |
| description | string · nullable | Free-text work description from the permit application | Interior renovation - kitchen and bathrooms |
| permit_value | number · nullable | Declared construction value in CAD. Null if not disclosed. | 87500 |
| application_date | date · nullable | Date permit application was submitted (YYYY-MM-DD) | 2026-02-14 |
| issue_date | date · nullable | Date permit was issued / approved (YYYY-MM-DD) | 2026-03-28 |
| status | string | Current permit status as reported by the municipality | Issued |
| latitude | number · nullable | WGS84 decimal latitude. Geocoded where not natively provided. | 43.6497 |
| longitude | number · nullable | WGS84 decimal longitude | -79.4489 |
| neighbourhood enriched | string · nullable | Neighbourhood name derived from coordinates via RenoIntel enrichment layer | Roncesvalles |
| is_residential enriched | boolean | Classified by RenoIntel model — true if permit is residential in nature | true |
Access method and cadence depends on the partner agreement tier. All tiers share the same unified schema.
| Feature | Standard | Pro | Enterprise |
|---|---|---|---|
| REST API access | — | ✓ | ✓ |
| SFTP scheduled drop | ✓ Weekly | ✓ Daily | ✓ Custom cadence |
| Bulk CSV export | ✓ | ✓ | ✓ |
| City scope | Up to 5 cities | Up to 15 cities | All cities (28+) |
| Historical depth | 12 months | 24 months | Full history |
| Enrichment fields | — | ✓ Neighbourhood | ✓ All enrichment layers |
| Webhook / real-time push | — | — | ✓ |
| Custom schema mapping | — | — | ✓ |
| Dedicated support | Email + Slack | Named contact |
Most partners are live within one business day. The steps below apply to all delivery methods — API, SFTP, and CSV. Sandbox access is always provided first so you can validate the data before going live.
Contact the RenoIntel team to initiate partner onboarding. Choose your delivery tier (Standard, Pro, or Enterprise) and specify the cities and permit types you need. You'll receive a partner agreement and a brief onboarding questionnaire covering your primary use case and tech stack.
Within one business day, you'll receive access credentials matched to your delivery method. For the REST API: a sandbox key (ri_test_…) and a production key (ri_live_…). For SFTP: provide your public SSH key and receive your partner directory path on sftp.renointel.com. For CSV: a secure download link with expiry.
Set up your connection using the credentials above. For API integrations: add your Bearer token to your HTTP client or CRM connector. For SFTP: configure your ETL pipeline or sFTP client (FileZilla, Cyberduck, or native scripts) to poll sftp.renointel.com on your agreed cadence. For CSV: plug the download URL into Zapier, Make, or your data warehouse import workflow.
Use your ri_test_ API key or the sandbox SFTP directory to run test queries against a realistic dataset (5,000 permit records across 5 cities). Confirm that your field mappings, pagination logic, and downstream CRM or database ingestion are working correctly before flipping to production. RenoIntel support is available on Slack (Pro+) during this phase.
Enterprise partners can request custom field mapping so that RenoIntel output fields are renamed or restructured to match their internal database or CRM schema. For example: permit_value → job_value, or issue_date → lead_trigger_date. Provide your target schema and RenoIntel will configure the output transform — no code required on your end.
Swap your sandbox credentials for production keys, or confirm your SFTP production directory with the team. Your first full dataset delivery (historical + current) will be triggered within the same day. From then on, data refreshes daily on your agreed cadence. Monitor delivery via the _manifest.json sidecar or the partner dashboard (coming Q3 2026).
RenoIntel data flows into any system that accepts JSON or CSV. Below are the most common platforms partners use to act on permit intelligence — from lead routing and deal creation to territory reporting and pipeline triggers.
Permit__c objects. Use Flow or Apex triggers to auto-assign leads by territory (city/neighbourhood) and permit value threshold. Works via REST API or CSV Data Loader import.permit_type to JobNimbus job categories for automatic pipeline routing.No native connector? RenoIntel works with any platform that accepts JSON or CSV. Use Zapier, Make (Integromat), or n8n as a middleware layer to push permit data into any CRM, spreadsheet, Slack channel, or database with zero custom code.
⚡ Zapier 🔧 Make 🔁 n8n 📊 Airtable 📈 Google Sheets 🗄️ BigQueryAll API requests require a Bearer token in the Authorization header. Tokens are scoped to specific cities and data types. Keys are prefixed ri_live_ (production) or ri_test_ (sandbox). Rotate via the partner dashboard. All traffic is TLS 1.2+.
Partners provide a public SSH key (RSA 4096 or Ed25519) during onboarding. Files are delivered to sftp.renointel.com in a partner-specific directory. Each CSV is accompanied by a SHA-256 manifest. Partners may optionally provide their own SFTP endpoint.