# Corporations Canada Registry Scraper (`crawlerbros/corporations-canada-scraper`) Actor

Look up federally incorporated Canadian companies on Corporations Canada (ised-isde.canada.ca). Search by corporate name with province/status/act filters, or fetch exact records by corporation number, business number (BN), or internal corporation ID.

- **URL**: https://apify.com/crawlerbros/corporations-canada-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Corporations Canada Registry Scraper

Look up federally incorporated Canadian companies directly from **Corporations Canada** (ised-isde.canada.ca), the official federal corporate registry operated by Innovation, Science and Economic Development Canada (ISED). Search by corporate name, or fetch an exact record by corporation number, CRA business number (BN), or internal corporation ID — and get back the full public filing: registered office address, directors, individuals with significant control, annual filing history, corporate name history, and the full certificate/filing history.

This is the same database used to confirm whether a company is a legitimate federally incorporated Canadian corporation, verify its current legal name and status, or find its officers and registered address for due diligence, KYC, sales prospecting, or compliance research.

### What this actor does

- **Four lookup modes:**
  - `search` — free-text corporate name search with optional province, status, and governing-act filters
  - `byCorporationNumber` — exact lookup by federal corporation number (e.g. `426160-7`)
  - `byBusinessNumber` — exact lookup by CRA business number / BN (e.g. `847871746`)
  - `byCorporationId` — direct fetch using the registry's internal corporation ID
- **Full public filing per corporation:** legal name, corporation number, business number, status, governing legislation, registered office address, directors, individuals with significant control (or exemption reason), annual filing history, corporate name history, and every certificate/filing on record (incorporation, amendments, restated articles, revival, proxy circulars, financial statements)
- **Filters:** province/territory of registered office, corporation status (active/dissolved/etc.), governing federal act
- **No login, no cookies, no paid proxy** — reads Corporations Canada's public search pages directly
- **Empty fields are omitted** — every record only contains data the registry actually published for that corporation

### Output per corporation

| Field | Description |
|---|---|
| `corpId` | Corporations Canada's internal corporation ID |
| `corpName` | Current legal name |
| `corpNumber` | Federal corporation number (e.g. `426160-7`) |
| `businessNumber` | CRA business number, including program-account suffix if on file (e.g. `847871746RC0001`) |
| `status` | Current status text (e.g. `Active`, `Dissolved for non-compliance (s. 212) on 2009-04-17`) |
| `statusDate` | Date associated with the status, when the registry publishes one (dissolution/discontinuance date) |
| `governingLegislation` | Federal act the corporation is incorporated under |
| `governingLegislationDate` | Date the corporation came under that act (incorporation, continuance, or amalgamation date) |
| `registeredOfficeAddress` | Full registered office address as filed |
| `registeredOfficeProvince` | Two-letter province/territory code parsed from the address |
| `registeredOfficePostalCode` | Postal code parsed from the address |
| `directorsMin` / `directorsMax` | Minimum/maximum number of directors permitted per the articles |
| `directors[]` | Current directors on file — `name`, `address` |
| `iscExemptionReason` | Why the corporation is exempt from disclosing individuals with significant control (public companies, wholly-owned subsidiaries, etc.) — present instead of `iscIndividuals` when an exemption applies |
| `iscIndividuals[]` | Individuals with significant control on file — `name`, `address`, `typeOfInterest`, `startDate` |
| `iscLastUpdated` | Date the ISC information was last updated or confirmed |
| `anniversaryDate` | Corporation's anniversary date (MM-DD) — the annual-filing trigger date |
| `lastAnnualMeetingDate` | Date of the last annual meeting on file |
| `annualFilingPeriodStart` / `annualFilingPeriodEnd` | The 60-day annual-filing window (MM-DD) |
| `corporationType` | e.g. `Distributing corporation`, `Non-Soliciting`, when published |
| `annualFilings[]` | Filing status per year — `year`, `status` (e.g. `Filed`, `Not due`, `Overdue`) |
| `corporateNameHistory[]` | Every legal name the corporation has held — `name`, `fromDate`, `toDate` (omitted for the current name) |
| `filingHistory[]` | Every certificate/filing on record — `type` (e.g. `Certificate of Incorporation`, `Certificate of Amendment`, `Certificate of Restated Articles of Incorporation`, `Certificate of Revival`, `Proxy circular`, `Financial statements`), `date`, and `details` (e.g. `Amendment details: Corporate name`, `As of 2026-04-21`) when published |
| `extraProvincialRegistrationUrl` | Link to check the corporation's provincial/territorial extra-provincial registrations on Canada's Business Registries |
| `sourceUrl` | Canonical Corporations Canada detail page for this record |
| `scrapedAt` | UTC timestamp of when the record was scraped |
| `recordType` | Always `corporation` |

Field availability depends on what the corporation has on file and its governing act — e.g. not-for-profit corporations don't have an individuals-with-significant-control section, and older/dissolved corporations may be missing some filing details.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | select | `search` | `search` / `byCorporationNumber` / `byBusinessNumber` / `byCorporationId` |
| `corpName` | string | `Shopify` | Free-text corporate name search (mode=search) |
| `corpProvince` | select | Any | Restrict to a province/territory of registered office (mode=search) |
| `corpStatus` | select | Any | Restrict to `Active` / `Inactive - Amalgamated` / `Inactive - Discontinued` / `Dissolved` (mode=search) |
| `corpAct` | select | Any | Restrict to a governing federal act (mode=search) |
| `corpNumbers` | array | – | Exact corporation numbers, e.g. `426160-7` (mode=byCorporationNumber) |
| `businessNumbers` | array | – | Exact CRA business numbers, e.g. `847871746` (mode=byBusinessNumber) |
| `corporationIds` | array | – | Internal corporation IDs, e.g. `4261607` (mode=byCorporationId) |
| `includeFullDetails` | boolean | `true` | Fetch the full detail page per match. Turn off for a fast name/number/status-only listing |
| `maxItems` | integer | `20` | Hard cap on emitted records (1–200) |

#### Example: search by name with filters

```json
{
  "mode": "search",
  "corpName": "Bank",
  "corpProvince": "ON",
  "corpStatus": "1",
  "corpAct": "6",
  "maxItems": 50
}
```

#### Example: exact lookup by corporation number

```json
{
  "mode": "byCorporationNumber",
  "corpNumbers": ["426160-7"]
}
```

#### Example: exact lookup by business number (BN)

```json
{
  "mode": "byBusinessNumber",
  "businessNumbers": ["847871746"]
}
```

#### Example: direct fetch by corporation ID

```json
{
  "mode": "byCorporationId",
  "corporationIds": ["4261607"]
}
```

### Use cases

- **KYC / AML due diligence** — confirm a counterparty is a genuine federally incorporated Canadian corporation and check its current status
- **Sales & lead research** — pull directors and registered addresses for federally incorporated prospects
- **Compliance monitoring** — track annual-filing status and corporate name changes over time
- **Corporate research & journalism** — trace a company's incorporation history, name changes, and ownership disclosures
- **Legal & M\&A due diligence** — verify governing legislation, incorporation date, and director records before a transaction
- **Data enrichment** — attach official registry data (corporation number, BN, status) to an existing company database

### FAQ

**What is Corporations Canada?** The federal corporate registry operated by Innovation, Science and Economic Development Canada (ISED) for corporations incorporated under federal acts such as the *Canada Business Corporations Act* and the *Canada Not-for-profit Corporations Act*.

**Does this cover provincially incorporated companies?** No. Corporations Canada's database only covers corporations created under **federal** law. Companies incorporated provincially (most small businesses) or under financial-institution legislation aren't included — check the relevant provincial/territorial registry or [Canada's Business Registries](https://canadasbusinessregistries.ca/) instead.

**What's the difference between a corporation number and a business number (BN)?** The corporation number (e.g. `426160-7`) is assigned by Corporations Canada at incorporation. The business number (BN) is the 9-digit CRA tax identifier, often shown with a program-account suffix like `RC0001` for a GST/HST account. Either can be used to look up the same corporation.

**Why do some records have `iscExemptionReason` instead of `iscIndividuals`?** Corporations Canada exempts certain corporations — for example public companies listed on a designated stock exchange, or their wholly-owned subsidiaries — from disclosing individuals with significant control. The exemption reason is published in place of the individual-level data.

**Why don't dissolved corporations have director or filing details?** Once a corporation is dissolved, Corporations Canada may retain only partial historical data. The actor returns whatever the registry currently publishes for that record — it never fabricates missing fields.

**How current is this data?** Corporations Canada updates its public records within hours of a filed transaction, and the actor reads the live registry on every run — there's no caching delay.

**Can I search corporations outside a specific province?** Yes — leave `corpProvince` on "Any" to search nationwide, or restrict results to a single province/territory of registered office.

**Is a proxy or login required?** No. Corporations Canada's search and detail pages are fully public; the actor doesn't use cookies, an API key, or a paid proxy.

**Is this affiliated with Corporations Canada or the Government of Canada?** No, this is a third-party actor using the public Corporations Canada search and detail pages. It is not affiliated with, endorsed by, or operated by Innovation, Science and Economic Development Canada (ISED) or the Government of Canada.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `corpName` (type: `string`):

Free-text corporate name search, e.g. `Shopify`. Matches whole or partial legal names on Corporations Canada.

## `corpProvince` (type: `string`):

Restrict search results to corporations whose registered office is in this province/territory.

## `corpStatus` (type: `string`):

Restrict search results to corporations with this status.

## `corpAct` (type: `string`):

Restrict search results to corporations incorporated under this federal act.

## `corpNumbers` (type: `array`):

Exact corporation numbers to look up, e.g. `426160-7`.

## `businessNumbers` (type: `array`):

Exact CRA business numbers to look up, e.g. `847871746` (with or without the `RC0001` program-account suffix).

## `corporationIds` (type: `array`):

Internal Corporations Canada `corpId` values to fetch directly, e.g. `4261607`. Get these from a prior search result's `corpId` field or from a bookmarked `fdrlCrpDtls.html?corpId=...` URL.

## `includeFullDetails` (type: `boolean`):

Fetch the full corporation detail page for every match (registered office address, directors, individuals with significant control, annual filings, corporate name history). When off, only the fast list-level fields are returned (name, numbers, status).

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "search",
  "corpName": "Shopify",
  "corpProvince": "",
  "corpStatus": "",
  "corpAct": "",
  "corpNumbers": [],
  "businessNumbers": [],
  "corporationIds": [],
  "includeFullDetails": true,
  "maxItems": 10
}
```

# Actor output Schema

## `corporations` (type: `string`):

Dataset containing all scraped Corporations Canada records.

# 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 = {
    "mode": "search",
    "corpName": "Shopify",
    "corpProvince": "",
    "corpStatus": "",
    "corpAct": "",
    "corpNumbers": [],
    "businessNumbers": [],
    "corporationIds": [],
    "includeFullDetails": true,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/corporations-canada-scraper").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 = {
    "mode": "search",
    "corpName": "Shopify",
    "corpProvince": "",
    "corpStatus": "",
    "corpAct": "",
    "corpNumbers": [],
    "businessNumbers": [],
    "corporationIds": [],
    "includeFullDetails": True,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/corporations-canada-scraper").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 '{
  "mode": "search",
  "corpName": "Shopify",
  "corpProvince": "",
  "corpStatus": "",
  "corpAct": "",
  "corpNumbers": [],
  "businessNumbers": [],
  "corporationIds": [],
  "includeFullDetails": true,
  "maxItems": 10
}' |
apify call crawlerbros/corporations-canada-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/D3XCrSdioGiCsuy6K/builds/yQFYug51W6pc2xOog/openapi.json
