# Job Bank Canada Scraper: LMIA & Hyperlocal Jobs (`getascraper/jobbank-scraper`) Actor

Scrape Job Bank Canada (jobbank.gc.ca) in bulk. Extracts job titles, salary rates, direct employer names, emails, state/city locations, and LMIA requested/approved immigration statuses. Runs fast and reliably without needing any user login. $0.99/1k.

- **URL**: https://apify.com/getascraper/jobbank-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 22 total users, 12 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.67 / 1,000 job leads

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

### What does Job Bank Canada Scraper do?

Get complete, high-quality B2B job listings and employer contacts from Canada's national job directory (Job Bank): job titles, direct employer names, salary rates, weekly hours, operating cities/provinces, education levels, experience requirements, apply instructions, and Labour Market Impact Assessment (LMIA) requested/approved statuses, ready for your CRM in under 10 seconds. This scraper connects directly to public directories unblocked, meaning no accounts or API keys are required. Built for recruitment agencies, HR tech platforms, sales prospectors, and immigration consultancies tracking LMIA opportunities in Canada.

### Why use Job Bank Canada Scraper?

- **I am an immigration consultant** compiling list of employers actively requesting LMIAs to help foreign workers locate eligible sponsorship roles.
- **I am a recruitment agency lead** harvesting active job requirements and hiring companies to identify warm new client prospects in my region.
- **I am an HR tech data manager** auto-enriching candidate databases with current Canadian salaries, hours, and vacancy trends.
- **I am a job board aggregator** fetching the complete national feed of verified Canadian jobs without complex API limits or login walls.
- **I am a market research analyst** building weekly reports on regional job demand, median wage rates, and educational requirements across different Canadian territories.

### How to use Job Bank Canada Scraper

1. Create a free Apify account (no credit card needed).
2. Open the Job Bank Canada Scraper in the Apify Console.
3. Enter your target search keywords (such as `carpenter`) or regional location filters (such as `Brampton`).
4. Set optional filters to exclude student jobs or only fetch LMIA-friendly openings.
5. Click **Start** and download your structured Canadian job leads database as CSV, Excel, or JSON.

### Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `searchKeyword` | string | No | Job title, skills keyword, or business name to search for (for example, `carpenter`). |
| `location` | string | No | Canadian city, town, or province name (for example, `Brampton` or `Ontario`). |
| `excludeStudent` | boolean | No | Skip job postings restricted only to student employment. Defaults to false. |
| `onlyLmiaRequested` | boolean | No | Filters and shows only jobs where the employer is actively requesting or has obtained an LMIA for foreign worker sponsorship. Defaults to false. |
| `maxItems` | integer | No | Maximum number of job postings to retrieve. Defaults to 100. |
| `proxyConfiguration` | object | Yes | Proxy settings. Standard automatic configuration is highly optimized. |

### Output

A structured dataset of Canadian job postings with salary rates, employer details, experience levels, and immigration/LMIA status. Free users get up to 50 results per run, paid plans scale to 1,000,000.

```json
{
  "job_id": "3605267",
  "internal_id": "49761827",
  "title": "carpenter",
  "url": "https://www.jobbank.gc.ca/jobsearch/jobposting/49761827",
  "employer": "SOMERSET RENOVATIONS LTD.",
  "posted_date": "June 21, 2026",
  "location": "Brampton, ON L6X 3J1",
  "zip_code": "L6X 3J1",
  "salary": "$36.25 hourly",
  "hours": "35 hours per week",
  "employment_type": "Permanent employment Full time",
  "vacancies": 1,
  "education": "Secondary (high) school graduation certificate",
  "experience": "2 years to less than 3 years",
  "lmia_status": "LMIA requested",
  "work_type": "On site",
  "apply_instructions": "Sign in to apply directly on Job Bank...",
  "expiry_date": "2026-07-12",
  "scraped_at": "2026-06-21T10:00:00.000Z"
}
````

### Data table

| Field | Type | Description |
| --- | --- | --- |
| `job_id` | string | Public job number displayed on Job Bank (e.g. `3605267`). |
| `internal_id` | string | Internal database ID used in URL routing (e.g. `49761827`). |
| `title` | string | Official job title. |
| `url` | string | Canonical Job Bank detail URL. |
| `employer` | string | Name of the hiring company or employer. |
| `posted_date` | string | Date when the job was posted. |
| `location` | string | Full physical location (city, province, and postal code). |
| `zip_code` | string | Extracted Canadian Postal Code abbreviation. |
| `salary` | string | Listed salary rate (for example, `$36.25 hourly`). |
| `hours` | string | Weekly operating hours required. |
| `employment_type` | string | Employment conditions (for example, Permanent, Full time). |
| `vacancies` | integer | Number of open vacancies. |
| `education` | string | Required education level or credentials. |
| `experience` | string | Required operating experience. |
| `lmia_status` | string | LMIA status (for example, `LMIA requested`, `LMIA approved`, `none`). |
| `work_type` | string | Work environment classification (On site, Hybrid, Remote). |
| `apply_instructions` | string | Guidance on how to apply. |
| `expiry_date` | string | Expiry or close date for the job advertisement. |
| `scraped_at` | string | ISO 8601 timestamp of when this record was collected. |

### Pricing

The Actor costs **$0.99 per 1,000 results**. A typical run extracting 500 job postings from a category search costs about $0.50. Because the scraper connects directly to Job Bank's server-rendered HTML pages instead of launching heavy browsers, proxy and compute bandwidth consumption is extremely low, keeping your total costs at the absolute minimum.

### Tips or advanced options

- **No browser overhead.** Because this scraper connects directly to unblocked server endpoints, it does not launch Chrome or execute heavy scripts. This makes it 100x faster than browser-based scrapers, running in a fraction of the time.
- **Set caps to save budget.** Validate data formats by setting max items to 5 on your first run before processing massive national directories.
- **Track LMIA opportunities.** Enable the `onlyLmiaRequested` filter to isolate immigration-friendly employer leads automatically.
- **Default proxies are optimal.** Standard datacenter proxies reach Job Bank with high success. Switch to residential only if you experience blocks during extremely large crawls.

### FAQ, disclaimers, and support

##### Is the Job Bank Canada scraper legal?

Yes. The Job Bank Canada scraper accesses public list directory pages that are publicly visible to any logged-out human in a browser. It does not require login, bypass paywalls, or private user accounts. You are responsible for compliance with Job Bank terms of service and local laws.

##### Does this scraper require proxies?

No. Job Bank endpoints use standard unblocked infrastructure that is open to public search engines. No residential proxy is needed for normal runs. If a very high-volume run starts drawing rate limits, you can easily switch to residential in the proxy configuration.

##### Why is the Job ID different from the URL path?

Job Bank uses a public-facing Job Number (such as `3605267`) on the search cards, while utilizing an internal database ID (such as `49761827`) in their detail routing. The scraper automatically reverse-engineers and maps both fields.

**Disclaimer:** This Actor accesses public web listing data only. It does not bypass authentication, paywalls, or anti-bot systems on the live site. Job Bank is the registered trademark of the Government of Canada / ESDC. This Actor is affiliation-free, and not endorsed or sponsored by the Government of Canada.

# Actor input Schema

## `searchKeyword` (type: `string`):

Enter the job title, business keyword, or skill you want to search for (for example, carpenter, nurse, or retail cashier).

## `location` (type: `string`):

Enter the city, town, or province name where the jobs are located (for example, Brampton, Toronto, or Ontario).

## `excludeStudent` (type: `boolean`):

If enabled, skips any postings restricted only to student employment.

## `onlyLmiaRequested` (type: `boolean`):

Filters and shows only jobs where the employer is actively requesting or has obtained an LMIA for foreign worker sponsorship. Highly valued for immigration leads!

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

The maximum number of job postings you want to extract and save to your spreadsheet.

## `proxyConfiguration` (type: `object`):

Standard Datacenter Proxies are sufficient and highly cost-effective for Job Bank.

## Actor input object example

```json
{
  "excludeStudent": false,
  "onlyLmiaRequested": false,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/jobbank-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 = { "proxyConfiguration": { "useApifyProxy": True } }

# Run the Actor and wait for it to finish
run = client.actor("getascraper/jobbank-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 '{
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/jobbank-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Job Bank Canada Scraper: LMIA & Hyperlocal Jobs",
        "description": "Scrape Job Bank Canada (jobbank.gc.ca) in bulk. Extracts job titles, salary rates, direct employer names, emails, state/city locations, and LMIA requested/approved immigration statuses. Runs fast and reliably without needing any user login. $0.99/1k.",
        "version": "0.1",
        "x-build-id": "7KXGBg7RgfHjv5jlU"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~jobbank-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-jobbank-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/getascraper~jobbank-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-jobbank-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/getascraper~jobbank-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-jobbank-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchKeyword": {
                        "title": "Job title or skills keyword",
                        "type": "string",
                        "description": "Enter the job title, business keyword, or skill you want to search for (for example, carpenter, nurse, or retail cashier)."
                    },
                    "location": {
                        "title": "Canadian city or province",
                        "type": "string",
                        "description": "Enter the city, town, or province name where the jobs are located (for example, Brampton, Toronto, or Ontario)."
                    },
                    "excludeStudent": {
                        "title": "Exclude student job listings",
                        "type": "boolean",
                        "description": "If enabled, skips any postings restricted only to student employment.",
                        "default": false
                    },
                    "onlyLmiaRequested": {
                        "title": "Only show immigration-friendly jobs (LMIA requested)",
                        "type": "boolean",
                        "description": "Filters and shows only jobs where the employer is actively requesting or has obtained an LMIA for foreign worker sponsorship. Highly valued for immigration leads!",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Maximum job listings to save",
                        "minimum": 1,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "The maximum number of job postings you want to extract and save to your spreadsheet.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Network connection settings",
                        "type": "object",
                        "description": "Standard Datacenter Proxies are sufficient and highly cost-effective for Job Bank.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
