# Canada Contractor Licence Data — RBQ + HCRA Verify (`truenorthdata/canada-contractor-licenses`) Actor

Verify Canadian contractor licences at scale. Quebec RBQ and Ontario HCRA records — name, licence number, status (incl. Revoked/Suspended), location — as JSON/CSV. Screen vendors, badge marketplaces, price risk. Re-run to catch status changes. Free single lookups at CheckContractors.ca.

- **URL**: https://apify.com/truenorthdata/canada-contractor-licenses.md
- **Developed by:** [Vadim Zabin](https://apify.com/truenorthdata) (community)
- **Categories:** Automation, Lead generation, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 contractor licence records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Contractor License Scraper Canada - Quebec RBQ Registry

Get **every active construction contractor licence in Quebec** from the official Régie du bâtiment du Québec (RBQ) registry — as clean, structured data. Licence number, company name, trade names, NEQ, address, region, phone, email, licence categories and trade classes, bond amount and restrictions.

Data comes from the official [RBQ open dataset](https://www.donneesquebec.ca/recherche/dataset/licencesactives) (CC-BY 4.0, refreshed **daily**). No scraping of private sites, no legal grey zone.

### Why you'd use it

- **B2B lead generation** — every licensed roofer, plumber, excavator or GC in a region, with phone numbers and emails. Filter by trade class and city.
- **New contractor leads** — incremental mode returns only licences that appeared since your last run: brand-new construction businesses, first on the market.
- **Contractor verification / due diligence** — check licence status, restrictions, trade classes and bond before hiring or insuring.
- **Enrichment for building permits** — pairs with [Building Permits Canada](https://apify.com/truenorthdata/canada-building-permits) by the same author: permits tell you who's building, licences tell you who's licensed for what.

### Just need to look up one contractor?

Use our free web lookup — [**CheckContractors.ca**](https://checkcontractors.ca) — every RBQ licence and HCRA builder, searchable by business name or licence number. This Actor is the engine behind it; run the Actor when you need the data in bulk, filtered, or on a schedule.

### Input

| Field | Description |
|---|---|
| `provinces` | `["quebec", "ontario"]` — BC on the roadmap |
| `keywords` | Match against company name, trade names, city, trade class labels |
| `licenseClasses` | RBQ codes, e.g. `"1.3"`, `"6.2"`, `"15.5"`. Prefix match supported |
| `regions` | Administrative region / city substring, e.g. `"Monteregie"` |
| `onlyNewSinceLastRun` | Incremental monitoring mode |
| `maxResults` | Cost guard, default 500 |

### Output example

```json
{
    "licenseNumber": "5717-0235-01",
    "holderName": "CONSTRUCTION EXEMPLE INC.",
    "otherNames": ["Toitures Exemple"],
    "neq": "1160000000",
    "address": "123 RUE PRINCIPALE",
    "city": "Montréal",
    "region": "Montréal",
    "postalCode": "H1A 1A1",
    "phone": "514-555-0100",
    "email": "info@exemple.ca",
    "categories": ["Entrepreneur spécialisé"],
    "subcategories": ["Spécialisée 6.2"],
    "subcategoryCodes": ["6.2"],
    "bondAmount": 40000,
    "status": "Active",
    "province": "QC",
    "source": "rbq-open-data",
    "country": "CA"
}
```

### FAQ

**How fresh is the data?** RBQ publishes the full active-licence file daily; each run downloads the latest snapshot.

**Is this legal?** Yes — official open data under Creative Commons CC-BY 4.0 (Quebec).

**What do the licence class codes mean?** RBQ Annex: 1.x general contractor classes, 2.x–17.x specialized trades (e.g. 6.2 wood & plastic, 15.5 plumbing). Full list in RBQ documentation.

**Ontario?** Supported — the Ontario HCRA Builder Directory (new home builders and vendors) is included; use `provinces: ["ontario"]` with `keywords` like `"homes"` or `"construction"`. BC (BC Housing Licensed Residential Builders) is on the roadmap — open an issue to vote.

**How do I get contractor leads without coding?** Press *Run* — the default input returns 500 licensed Quebec contractors as a table you can export to Excel or CSV.

### Use with AI agents (MCP)

This Actor works as a tool for AI agents via the [Apify MCP server](https://mcp.apify.com). Claude, Cursor, or any MCP-compatible agent can query Canadian contractor licences on demand — e.g. *"find licensed roofing contractors in Laval with active status"*.

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=truenorthdata/canada-contractor-licenses"
    }
  }
}
```

On first connection you'll sign in to Apify via OAuth. Works with agentic payments (x402/Skyfire) too.

### Use in Clay and n8n (no code)

Plug licensed-contractor data straight into the tools your team already uses.

**Clay** — add a source → **Import from Apify Actor** → search `canada-contractor-licenses` → set your input (province, keywords). Turn on auto-update to keep a fresh licence list, then enrich with email and LinkedIn.

**n8n** — add the official **Apify** node (`@apify/n8n-nodes-apify`): **Run Actor** on `truenorthdata/canada-contractor-licenses`, then **Get Dataset Items**, and route to Google Sheets, a CRM, or Slack. Add a **Schedule** trigger for an automatic refresh.

**Ready-made n8n templates:** import a working lead-gen workflow in one click — see [Two free n8n templates for Canadian B2B lead lists](https://dev.to/truenorthdata/two-free-n8n-templates-for-canadian-b2b-lead-lists-copy-paste-import-1mkd).

### More Canada open-data Actors by TrueNorthData

- [Canada Tenders Scraper](https://apify.com/truenorthdata/canada-tenders-scraper) — federal + Québec government tenders (CanadaBuys, SEAO)
- [Building Permits Canada](https://apify.com/truenorthdata/canada-building-permits) — fresh building permits from Toronto, Vancouver, Calgary, Edmonton & Montréal
- [Canada Charities Scraper](https://apify.com/truenorthdata/canada-charities) — CRA registered charities directory
- [Canada New Incorporations](https://apify.com/truenorthdata/canada-new-incorporations) — fresh federal company registrations, daily

All built on official Canadian open data. See also [CheckContractors.ca](https://checkcontractors.ca) — free public contractor-licence lookup.

# Actor input Schema

## `provinces` (type: `array`):

Which provincial registries to fetch. Quebec = RBQ (all trade licences). Ontario = HCRA Ontario Builder Directory (home builders/vendors, with phone, email, website, homes-built counts). BC is on the roadmap.

## `keywords` (type: `array`):

Filter by company name, trade name, city or trade class label (e.g. 'toiture', 'excavation', 'Montreal'). Case-insensitive. For Ontario (HCRA), each keyword is also used as the builder-name search term against the directory, so keywords make Ontario runs far faster and more targeted.

## `licenseClasses` (type: `array`):

Quebec only. RBQ category/subcategory codes, e.g. '1.3' (general buildings), '6.2' (wood & plastic), '15.5' (plumbing). Prefix match: '6' matches 6.1, 6.2... (Ontario/HCRA builders have no trade-class codes.)

## `regions` (type: `array`):

Region or city substring. Quebec: administrative region or municipality (e.g. 'Monteregie', 'Montreal'). Ontario: builder office city (e.g. 'Toronto', 'Ottawa', 'Barrie').

## `activeOnly` (type: `boolean`):

Return only currently valid licences (Ontario 'Licensed', Quebec 'Active'). Turn off to include expired, revoked, refused or cancelled licences. Default on = clean lead-gen list.

## `enrich` (type: `boolean`):

Ontario (HCRA) only. Fetch each builder's detail record (phone, email, website, address, homes-built, warranty claims) — one extra request per builder. Leave off for fast full-directory sweeps; turn on for targeted (keyword) runs where you need contact data. When unset, it defaults on for keyword runs and off for full sweeps.

## `onlyNewSinceLastRun` (type: `boolean`):

Incremental mode: return only licences not seen in previous runs. New licences = brand-new contractor businesses = fresh leads.

## `maxResults` (type: `integer`):

Stop after this many licences (cost guard). 0 = no limit.

## Actor input object example

```json
{
  "provinces": [
    "quebec"
  ],
  "activeOnly": true,
  "enrich": false,
  "onlyNewSinceLastRun": false,
  "maxResults": 500
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "provinces": [
        "quebec"
    ],
    "maxResults": 500
};

// Run the Actor and wait for it to finish
const run = await client.actor("truenorthdata/canada-contractor-licenses").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "provinces": ["quebec"],
    "maxResults": 500,
}

# Run the Actor and wait for it to finish
run = client.actor("truenorthdata/canada-contractor-licenses").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "provinces": [
    "quebec"
  ],
  "maxResults": 500
}' |
apify call truenorthdata/canada-contractor-licenses --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=truenorthdata/canada-contractor-licenses",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/12LOXUyGiwSzGurng/builds/lpnHFsdahcF20knvf/openapi.json
