DEV Community

Dave Zavin
Dave Zavin

Posted on

Two free n8n templates for Canadian B2B lead lists (copy-paste import)

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

  1. In n8n: open a new workflow → ⋮ menu → Import from clipboard (or Import from File).
  2. Paste the JSON below.
  3. In the HTTP node, replace YOUR_APIFY_API_TOKEN with your Apify API token (console.apify.com → Settings → Integrations).
  4. In the Google Sheets node, connect your Google account and set YOUR_GOOGLE_SHEET_ID + tab name.
  5. 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": []
}
Enter fullscreen mode Exit fullscreen mode

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": []
}
Enter fullscreen mode Exit fullscreen mode

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 / issuedWithinDays control how far back each run looks; onlyNewSinceLastRun keeps 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)