Canada Job Postings Data: Salaries by NOC & Region (Job Bank) avatar

Canada Job Postings Data: Salaries by NOC & Region (Job Bank)

Pricing

from $0.80 / 1,000 job postings

Go to Apify Store
Canada Job Postings Data: Salaries by NOC & Region (Job Bank)

Canada Job Postings Data: Salaries by NOC & Region (Job Bank)

Canadian job postings from Job Bank open data as clean JSON. Filter by NOC code, keyword, province, region and French requirement. Salaries normalized to annual CAD, plus monthly aggregates.

Pricing

from $0.80 / 1,000 job postings

Rating

0.0

(0)

Developer

Maritimio

Maritimio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

What does Canada Job Postings Data do?

This Actor turns the Government of Canada's Job Bank open data into clean JSON you can filter. Pick occupations (NOC 2021 codes or keywords), provinces, economic regions, months and a French-language requirement, and get back:

  • Individual job postings, each with its salary normalized to annual CAD so hourly, weekly and monthly wages compare on one scale.
  • Monthly aggregates per occupation and region: posting count, vacancies, median annual salary and the share of postings that require French.

It reads the official monthly files that Employment and Social Development Canada (ESDC) publishes on open.canada.ca under the Open Government Licence - Canada. It does not scrape any website.

You pay only for rows you receive. Months published in a layout the Actor cannot read are skipped and free.

Why use it?

  • Annual salaries you can compare. Every posted wage with a usable amount and unit is converted to a full-time annual figure (hour × 2,080, day × 260, week × 52, every two weeks × 26, month × 12). The original amount and unit stay in the row.
  • Bad source values are flagged, not hidden. Some postings carry unit errors, such as "$60,000 hourly". When the annualized midpoint falls outside $10,000 to $600,000, the row is marked salaryQuality: "implausible", keeps its original numbers, and is left out of medians.
  • French requirement as a yes or no. Postings that require French or bilingualism are frenchRequired: true. "English or French" is false, because either language is accepted. Useful for Quebec workforce planning.
  • Regional detail. Filter and aggregate by Statistics Canada economic region (such as Montérégie, Montréal or Toronto), or by province.
  • Fast and light. A focused query on one month takes a few seconds; a full year for all of Canada takes about two minutes.

What data do you get?

Field groupFields
JobjobTitle, originalJobTitle, firstPostingDate, month, vacancies, employmentType, employmentTerm, education, experience
Occupation and industrynoc2021, noc2021Title, noc2016, noc2016Title, naicsSector
Locationprovince, provinceCode, economicRegion, city, postalCode
SalarysalaryMin, salaryMax, salaryPer, salaryText, annualSalaryMinCad, annualSalaryMaxCad, annualSalaryMidCad, salaryQuality
LanguageofficialLanguage, frenchRequired
Otherbenefits (dental, pension, RRSP and others), placementAgency, fromPartnerSite

What the source does not include: employer names, job descriptions and links to the posting. ESDC leaves them out of the open data.

How do I use it?

  1. Add NOC 2021 codes (for example 21232 for software developers, or 2123 for that whole group) or keywords.
  2. Optionally choose provinces, economic regions and a French required filter.
  3. Set a start and end month, or leave both empty for the latest month.
  4. Choose postings, aggregates or both, then click Start.

How much does it cost?

EventPrice
One job posting$0.0008
One aggregate row (one month, one occupation, one region)$0.002
Run start (Apify standard)$0.00005

So 1,000 postings cost $0.80. Use Maximum postings (default 1,000) and Apify's maximum cost setting to cap any run. The Actor stops cleanly when a cap is reached.

Input example

{
"nocCodes": ["21231", "21232"],
"provinces": ["QC", "ON"],
"startMonth": "2026-01",
"endMonth": "2026-09",
"frenchRequired": "any",
"includePostings": true,
"includeAggregates": true,
"maxPostings": 1000
}

Output example

A posting:

{
"type": "posting",
"month": "2025-12",
"firstPostingDate": "2025-12-17",
"jobTitle": "Java programmer",
"originalJobTitle": "Développeur junior intermédiaire Java Back-End",
"noc2021": "21232",
"noc2021Title": "Software developers and programmers",
"province": "Québec",
"provinceCode": "QC",
"economicRegion": "Montérégie Region",
"city": "Saint-Jean-sur-Richelieu",
"vacancies": 1,
"salaryMin": 70000,
"salaryMax": 70000,
"salaryPer": "Year",
"annualSalaryMidCad": 70000,
"salaryQuality": "ok",
"officialLanguage": null,
"frenchRequired": null,
"fromPartnerSite": true,
"attribution": "Contains information licensed under the Open Government Licence - Canada ...",
"sourceUrl": "https://open.canada.ca/data/en/dataset/ea639e28-c0fc-48bf-b5dd-b8899bd43072"
}

An aggregate row:

{
"type": "aggregate",
"regionLevel": "economicRegion",
"month": "2026-09",
"noc2021": "21232",
"noc2021Title": "Software developers and programmers",
"province": "Québec",
"provinceCode": "QC",
"economicRegion": "Montréal Region",
"postings": 19,
"vacancies": 23,
"postingsWithSalary": 19,
"medianAnnualSalaryCad": 104000,
"postingsWithLanguage": 6,
"frenchRequiredShare": 0.67
}

frenchRequiredShare is based on postingsWithLanguage, the postings that state a language (here 4 of 6). The run summary (months read, counts, skipped months and the licence attribution) is saved as OUTPUT in the run's key-value store.

Things to know about the data

  • Coverage. January 2023 to May 2024, and October 2024 to the latest month. ESDC published June to September 2024 in a different file layout; those months are skipped and free.
  • French requirement starts in January 2026. Earlier files have no language field, so frenchRequired is null there, and the French filter excludes those months' postings.
  • Partner-site postings. More than half of the postings (fromPartnerSite: true) are ads Job Bank republishes from partner job boards. They have a title, occupation, location and salary, but no education or experience data, and often no language data.
  • No telework filter. The source has a telework column, but in every file checked it reads only "No" or blank, so a filter on it would mislead you.
  • Medians use the midpoint of each posting's annual salary range and skip missing or implausible salaries. postingsWithSalary tells you how many postings each median is based on.
  • Months are by first posting date, as ESDC publishes them.

FAQ

Is this data free to use commercially? Yes. ESDC publishes it under the Open Government Licence - Canada, which allows commercial use with attribution. Every row carries the attribution text, so it travels with the data.

How fresh is it? ESDC usually publishes each month's file in the first days of the following month, though some months have come out later. The Actor reads the catalogue on every run, so a new month is available as soon as it is published.

Can I use it from an AI agent? Yes. Call it through the Apify API or the Apify MCP server. Every row type has the fields documented above.

Something broke or you need a feature? Open an issue on the Issues tab.

Licence and attribution

Contains information licensed under the Open Government Licence - Canada. Source: Employment and Social Development Canada, Job Postings Advertised on Canada's National Job Bank Website.

This Actor is not affiliated with or endorsed by the Government of Canada, ESDC or Job Bank.