# LMIA Employers Canada: positive LMIA list by province and NOC (`tapering_andalusite/lmia-employers`) Actor

LMIA employers in Canada: every employer with a positive LMIA (approved to hire foreign workers), from ESDC's quarterly open data. Filter by province, NOC code or employer name. Contains information licensed under the Open Government Licence - Canada. Not endorsed by the Government of Canada.

- **URL**: https://apify.com/tapering_andalusite/lmia-employers.md
- **Developed by:** [Greg Blackwood](https://apify.com/tapering_andalusite) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Canada LMIA employers

Every employer that received a positive Labour Market Impact Assessment (LMIA), from Employment and Social Development Canada's quarterly open data, as one clean table.

ESDC publishes these as separate spreadsheets each quarter, with title rows and footnotes. This actor reads the newest ones from the official open data catalogue and returns one row per employer, occupation and stream.

### What you get

| Field | Example |
|---|---|
| quarter | 2025Q3 |
| province | British Columbia |
| stream | Global Talent Stream |
| employer | Example Software Inc. |
| address | Vancouver, BC V6C 1E5 |
| noc | 21231 |
| occupation | Software engineers and designers |
| incorporate_status | Unknown |
| lmias | 1 |
| positions | 2 |

Rows for employers with no Canadian province (head offices abroad) have `province` empty.

### Input

- `quarters`: how many of the newest quarters to read (default 1; one quarter is about 7,000-18,000 rows before filters).
- `province`: full name, for example `British Columbia`.
- `employer`: text the employer name must contain.
- `noc`: NOC 2021 code prefix, for example `21` for engineering and IT.

### Good to know

- A positive LMIA in the past doesn't mean the employer is hiring now, or will hire you.
- ESDC notes that employer names are typed by hand, so spellings vary.
- This is data only. It isn't immigration advice.

### Source and licence

Contains information licensed under the Open Government Licence - Canada. Source: ESDC, "Temporary Foreign Worker Program (TFWP): Positive Labour Market Impact Assessment (LMIA) Employers List", open.canada.ca. Not endorsed by the Government of Canada.

# Actor input Schema

## `quarters` (type: `integer`):

Newest N quarters. One quarter is about 7,000-18,000 rows before filters.

## `province` (type: `string`):

Full name, for example British Columbia.

## `employer` (type: `string`):

Text in the employer name.

## `noc` (type: `string`):

For example 21 for engineering and IT.

## Actor input object example

```json
{
  "quarters": 1,
  "province": "British Columbia",
  "noc": "21"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "province": "British Columbia",
    "noc": "21"
};

// Run the Actor and wait for it to finish
const run = await client.actor("tapering_andalusite/lmia-employers").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 = {
    "province": "British Columbia",
    "noc": "21",
}

# Run the Actor and wait for it to finish
run = client.actor("tapering_andalusite/lmia-employers").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "province": "British Columbia",
  "noc": "21"
}' |
apify call tapering_andalusite/lmia-employers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tapering_andalusite/lmia-employers"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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