Two free n8n templates for Canadian B2B lead lists (copy-paste import)
If you run outbound, you already know the best lists are trigger-based: a company that just incorporated, a property that just pulled a building permit. Those are people who just started spending — reach them first and you win the deal.
Below are two ready-to-run n8n workflows that build those lists for you on a schedule and drop them into a Google Sheet (or your CRM). Both pull from official Canadian open data via Apify actors, and both deduplicate automatically — each run only appends leads you haven't seen.
No coding. Copy the JSON, import it into n8n, plug in two credentials, done.
Template 1 — Daily feed of newly incorporated Canadian companies
Every morning this appends the previous day's newly registered Canadian federal companies to a Google Sheet — a fresh outbound list of brand-new businesses (great for banks, insurers, SaaS, agencies, and anyone selling to new companies).
How to use it
- In n8n: open a new workflow → ⋮ menu → Import from clipboard (or Import from File).
- Paste the JSON below.
- In the HTTP node, replace
YOUR_APIFY_API_TOKENwith your Apify API token (console.apify.com → Settings → Integrations). - In the Google Sheets node, connect your Google account and set
YOUR_GOOGLE_SHEET_ID+ tab name. - Activate. Swap the Sheet node for HubSpot / Pipedrive / Salesforce to route leads straight into your CRM.
{
"name": "Daily new Canadian companies → Google Sheet (TrueNorthData)",
"nodes": [
{
"parameters": {
"rule": { "interval": [ { "field": "days", "triggerAtHour": 8 } ] }
},
"id": "a1b2c3d4-1111-4aaa-8000-000000000001",
"name": "Every day at 8am",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [260, 300]
},
{
"parameters": {
"method": "POST",
"url": "https://api.apify.com/v2/acts/truenorthdata~canada-new-incorporations/run-sync-get-dataset-items",
"sendQuery": true,
"queryParameters": { "parameters": [ { "name": "token", "value": "YOUR_APIFY_API_TOKEN" } ] },
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"incorporatedWithinDays\": 3,\n \"onlyNewSinceLastRun\": true\n}",
"options": {}
},
"id": "a1b2c3d4-2222-4aaa-8000-000000000002",
"name": "Apify: new incorporations (net-new)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [520, 300]
},
{
"parameters": {
"operation": "append",
"documentId": { "__rl": true, "value": "YOUR_GOOGLE_SHEET_ID", "mode": "id" },
"sheetName": { "__rl": true, "value": "Sheet1", "mode": "name" },
"columns": { "mappingMode": "autoMapInputData", "value": {}, "matchingColumns": [] },
"options": {}
},
"id": "a1b2c3d4-3333-4aaa-8000-000000000003",
"name": "Append to Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [780, 300]
}
],
"connections": {
"Every day at 8am": { "main": [[{ "node": "Apify: new incorporations (net-new)", "type": "main", "index": 0 }]] },
"Apify: new incorporations (net-new)": { "main": [[{ "node": "Append to Google Sheet", "type": "main", "index": 0 }]] }
},
"active": false,
"settings": { "executionOrder": "v1" },
"pinData": {},
"meta": { "templateCredsSetupCompleted": false },
"tags": []
}
Why it stays fresh: onlyNewSinceLastRun: true means every run only appends companies you haven't pulled before — no dupes. incorporatedWithinDays: 3 plus the actor's live-registry probe catch companies incorporated in the last few days that the bulk government file hasn't published yet.
Actor: Canada New Incorporations
Template 2 — Weekly Canadian building-permit leads
Every Monday this pulls fresh building permits from Toronto, Vancouver, Calgary, Edmonton and Montréal, filters to your trade and minimum project value, and appends them to a Sheet — a weekly list of properties actively spending on construction. Ideal for contractors, trades, and building-material suppliers.
Tune it to your business in the HTTP node body: change keywords (roof, solar, pool, hvac, deck, basement…), set your minProjectValue, and drop any cities you don't serve.
{
"name": "Weekly Canadian building-permit leads → Google Sheet (TrueNorthData)",
"nodes": [
{
"parameters": {
"rule": { "interval": [ { "field": "weeks", "triggerAtDay": [1], "triggerAtHour": 8 } ] }
},
"id": "b1b2c3d4-1111-4bbb-8000-000000000001",
"name": "Every Monday 8am",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [260, 300]
},
{
"parameters": {
"method": "POST",
"url": "https://api.apify.com/v2/acts/truenorthdata~canada-building-permits/run-sync-get-dataset-items",
"sendQuery": true,
"queryParameters": { "parameters": [ { "name": "token", "value": "YOUR_APIFY_API_TOKEN" } ] },
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"cities\": [\"toronto\", \"vancouver\", \"calgary\", \"edmonton\", \"montreal\"],\n \"issuedWithinDays\": 7,\n \"keywords\": [\"roof\"],\n \"minProjectValue\": 20000,\n \"onlyNewSinceLastRun\": true\n}",
"options": {}
},
"id": "b1b2c3d4-2222-4bbb-8000-000000000002",
"name": "Apify: fresh permits (net-new)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [520, 300]
},
{
"parameters": {
"operation": "append",
"documentId": { "__rl": true, "value": "YOUR_GOOGLE_SHEET_ID", "mode": "id" },
"sheetName": { "__rl": true, "value": "Sheet1", "mode": "name" },
"columns": { "mappingMode": "autoMapInputData", "value": {}, "matchingColumns": [] },
"options": {}
},
"id": "b1b2c3d4-3333-4bbb-8000-000000000003",
"name": "Append to Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [780, 300]
}
],
"connections": {
"Every Monday 8am": { "main": [[{ "node": "Apify: fresh permits (net-new)", "type": "main", "index": 0 }]] },
"Apify: fresh permits (net-new)": { "main": [[{ "node": "Append to Google Sheet", "type": "main", "index": 0 }]] }
},
"active": false,
"settings": { "executionOrder": "v1" },
"pinData": {},
"meta": { "templateCredsSetupCompleted": false },
"tags": []
}
Actor: Canada Building Permits
Setup notes (both templates)
- Apify token: free tier is enough to test. Get it at console.apify.com → Settings → Integrations.
- Route anywhere: the Google Sheets node is just an example. Replace it with an HTTP node to your CRM, a Slack alert, or an email digest.
-
Widen or narrow the window:
incorporatedWithinDays/issuedWithinDayscontrol how far back each run looks;onlyNewSinceLastRunkeeps it deduped.
Both actors are built on official Canadian open data (Corporations Canada; municipal open-data programs). More Canadian data actors: TrueNorthData on Apify.
Questions or a city/dataset you want added? Drop a comment.
Top comments (0)