Every year, homeowners in Canada lose money to unlicensed contractors — and every province has an official registry that would have caught the problem in 30 seconds. The trouble is that each province has its own registry, its own search form, and its own data format.
In this guide: how contractor licensing works in Canada, how to check a licence for free, and how to get the full licence datasets by API if you're building something — a lead-gen tool, a due-diligence check, or an AI agent.
There is no federal contractor licence. The two biggest provincial systems:
Quebec — RBQ (Régie du bâtiment du Québec). Nearly every construction contractor in Quebec must hold an RBQ licence — general contractors, plumbers, electricians, roofers, excavators. The licence number is 10 digits (format XXXX-XXXX-XX
), and the RBQ publishes the full list of ~54,000 active licences as open data (CC-BY 4.0), refreshed daily.
Ontario — HCRA (Home Construction Regulatory Authority). Ontario licenses new home builders and vendors through the HCRA. The Ontario Builder Directory shows licence status, years active, homes built, and regulatory actions. (Trades like electricians are regulated separately by ESA and others.)
If you just need to verify a single contractor before signing a contract, use a lookup site:
** CheckContractors.ca** — free search across both registries in one place. Type the business name or licence number, get the status, licence categories, city, and licensing date. Every profile links back to the official registry so you can double-check the live record.
What to look for before hiring:
If you need the data in bulk — every licensed plumber in Laval, all new home builders in Mississauga, a daily feed of newly licensed businesses — the registries themselves don't offer a convenient API. That's what the Contractor License Scraper Canada Actor does: it turns both registries into clean JSON/CSV.
Example: all licensed contractors in the Montérégie region, active only:
{
"provinces": ["quebec"],
"regions": ["Monteregie"],
"activeOnly": true
}
Each record looks like this:
{
"licenseNumber": "5717-0235-01",
"holderName": "CONSTRUCTION EXEMPLE INC.",
"city": "Montréal",
"region": "Montréal",
"categories": ["Entrepreneur spécialisé"],
"subcategoryCodes": ["6.2"],
"bondAmount": 40000,
"status": "Active",
"province": "QC",
"source": "rbq-open-data"
}
Run it on a schedule with onlyNewSinceLastRun: true
and you get an incremental feed of brand-new licensed businesses — useful for B2B lead generation, insurance underwriting, or enriching building-permit data.
Calling it from Python:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("truenorthdata/canada-contractor-licenses").call(
run_input={
"provinces": ["quebec"],
"keywords": ["plomberie"],
"activeOnly": True,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["holderName"], item["licenseNumber"], item["city"])
The Actor is also exposed over the Model Context Protocol, so Claude, Cursor, or any MCP client can query licences in plain language ("find licensed roofing contractors in Laval"):
https://mcp.apify.com?tools=truenorthdata/canada-contractor-licenses
Yes. Both sources are official government data: the RBQ list is open data under CC-BY 4.0 (Quebec), and the HCRA Builder Directory is the public record Ontario maintains specifically so buyers can verify builders. No private sites are scraped.
Questions or a province you'd like added (BC is next on the roadmap)? Open an issue on the Actor page.