RenoIntel Internal — Data Delivery
Partner & Integration Guide
April 2026 · Confidential

Data Delivery & Integration

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.

121k+
Permit records available
28
Cities in unified schema
Daily
Ingestion cadence
JSON / CSV
Output formats
Delivery Methods
REST API
REST API
Query live permit data over HTTPS. Paginated, filterable by city, permit type, date range, and value. Suitable for real-time dashboards, CRMs, and automated workflows.
ProtocolHTTPS / JSON
AuthBearer token
Rate limit1,000 req / min
PaginationCursor-based
Latency< 200 ms p95
📦
SFTP
SFTP Drop
Scheduled CSV files delivered to a partner SFTP server or our hosted endpoint. Ideal for data warehouse ingestion, ETL pipelines, and teams that prefer batch processing.
ProtocolSFTP / SSH-2
AuthSSH key pair
CadenceDaily · Weekly · Custom
FormatCSV (UTF-8, gzip opt.)
File namingrenointel_YYYYMMDD.csv
📄
CSV Export
Bulk CSV / Export
One-time or recurring bulk exports scoped to specific cities, date ranges, or permit types. Delivered as a download link or directly into partner storage. Compatible with Excel, Tableau, Looker, and BigQuery.
DeliveryDownload link / S3
ScopeCity · Type · Date range
EncodingUTF-8, comma-delimited
Max rowsUnlimited (chunked)
SLAGenerated within 1 hr
REST API — Example Request & Response

Query permits by city with optional filters. The API returns paginated JSON with a consistent schema across all cities.

cURL GET /api/v1/permits
# 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"
JSON Response 200 OK · application/json
{
  "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
      }
    }
  ]
}
SFTP & CSV — File Format Example

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.

SFTP file naming convention: 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.
CSV renointel_permits_20260425.csv (sample rows)
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
Unified Data Schema

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
Delivery by Partner Tier

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 Email + Slack Named contact
Partner Onboarding — How to Get Set Up

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.

1
Onboarding

Request Access & Select Your Tier

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.

2
Onboarding

Receive Credentials

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.

3
Configuration

Configure Your Integration

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.

4
Testing

Validate with Sandbox Data

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.

5
Configuration

Map Fields to Your Schema (Optional)

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_valuejob_value, or issue_datelead_trigger_date. Provide your target schema and RenoIntel will configure the output transform — no code required on your end.

6
Go Live

Switch to Production & Start Receiving Data

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).

CRM & Platform Integrations

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.

Salesforce
Enterprise CRM
Map issued permits directly to Salesforce Leads or custom 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.
REST API CSV Import Zapier
HubSpot
SMB CRM & Marketing
Create Contacts or Deals from new permit records using HubSpot's native API or via Zapier. Set deal stage based on permit type (renovation vs. new build) and trigger automated email sequences to contractors or homeowners in the target postal code.
REST API Zapier / Make CSV Import
Zoho CRM
Mid-Market CRM
Use Zoho's Import API or built-in CSV import to create Leads from permit records. Combine with Zoho Analytics to build territory heat maps by permit volume and value. Webhooks can trigger instant lead creation on new permit issuance.
REST API CSV Import Webhook
Pipedrive
Sales Pipeline CRM
Push new permits into Pipedrive as Deals with custom fields for permit type, value, and city. Use Pipedrive's workflow automation to route deals to the right sales rep by region. Integrate via Zapier or the Pipedrive REST API.
REST API Zapier
Buildertrend
Construction CRM
Industry-specific CRM used by GCs and renovation contractors. Import permit leads via CSV to populate the lead pipeline. Match permit addresses to active project areas to identify upsell and territory expansion opportunities.
CSV Import SFTP Drop
JobNimbus
Contractor & Roofing CRM
Popular among roofing, siding, and exterior renovation contractors. Use daily permit CSV drops to surface new job opportunities by postal code. Map permit_type to JobNimbus job categories for automatic pipeline routing.
CSV Import Zapier

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 🗄️ BigQuery
Authentication & Security

REST API

All 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+.

SFTP

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.

Internal reference document — RenoIntel · Updated April 2026 · Schema version 2.1 · Confidential — not for external distribution without approval