Job Bank Canada Scraper (jobbank.gc.ca) avatar

Job Bank Canada Scraper (jobbank.gc.ca)

Pricing

from $3.00 / 1,000 serp results

Go to Apify Store
Job Bank Canada Scraper (jobbank.gc.ca)

Job Bank Canada Scraper (jobbank.gc.ca)

Extract Canadian job postings from jobbank.gc.ca, the Government of Canada's official job board. Returns title, employer, city and province, salary in CAD, NOC 2021 classification, job language (English / French / Bilingual), education, experience, vacancy count and hours. Pay-per-result.

Pricing

from $3.00 / 1,000 serp results

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Extract Canadian job postings from Job Bank, the Government of Canada's official job board. Every posting is verified by Employment and Social Development Canada. No login. No captcha. Pay-per-result.

What it does

Scrapes live vacancies from jobbank.gc.ca and returns clean, structured JSON. Coverage includes every province and territory, every NOC 2021 occupation, and all employment types (permanent, temporary, casual, seasonal, apprenticeship). Trades, healthcare, tech, finance, education, hospitality, agriculture, transport, government roles.

Works with:

  • Search keywords, e.g. "nurse", "welder", "developer", "accountant".
  • Any search URL copy-pasted from the site (all filters preserved).
  • Location or city + province filter.
  • Province and employment-type filters.

Sample output

{
"_type": "job",
"id": "50121324",
"job_bank_id": "50121324",
"title": "Health Care Aide",
"employer_name": "Surf Lodge Nursing Home",
"location": "Souris, PE, C0A 2B0",
"city": "Souris",
"province": "PE",
"postal_code": "C0A 2B0",
"country": "CA",
"salary_min": 20.50,
"salary_max": 23.00,
"salary_currency": "CAD",
"salary_period": "hourly",
"salary_text": "$20.50 to $23.00 hourly",
"wage_rate_type": "hourly",
"hours_per_week": 37.5,
"employment_type": "Permanent employment, Full time",
"workplace_type": null,
"employment_conditions": ["Day", "Evening", "Night", "Weekend"],
"vacancy_count": 3,
"noc_code": "33102",
"noc_title": "Nurse aides, orderlies and patient service associates",
"education_required": "No degree, certificate or diploma",
"experience_required_text": "Will train",
"experience_required_years": null,
"job_language": "English",
"work_permits_accepted": null,
"description": "Education: No degree, certificate or diploma. Work setting: Nursing home/home for the aged. Tasks: Assist in daily living activities...",
"description_full": "Education\nNo degree, certificate or diploma\n\nWork setting\nNursing home/home for the aged\n\nTasks\n- Assist in daily living activities\n- Take patients' blood pressure, temperature and pulse\n- Make beds and maintain patient rooms",
"description_html": "<ul><li>Assist in daily living activities</li><li>Take patients' blood pressure, temperature and pulse</li><li>Make beds and maintain patient rooms</li></ul>",
"description_md": "- Assist in daily living activities\n- Take patients' blood pressure, temperature and pulse\n- Make beds and maintain patient rooms",
"responsibilities": null,
"job_benefits": "Health care plan",
"skills": null,
"posted_at_text": "August 20, 2026",
"posted_at_datetime": "2026-08-20T00:00:00Z",
"closing_at": "2026-09-19",
"job_url": "https://www.jobbank.gc.ca/jobsearch/jobposting/50121324",
"application_url": "https://www.jobbank.gc.ca/jobsearch/jobposting/50121324",
"apply_url": "https://macleodcares.com/careers/",
"company_profile_url": "https://www.jobbank.gc.ca/jobsearch/empprofile/50121324",
"source_platform": "jobbank.gc.ca",
"search_query": "health care aide in Prince Edward Island",
"scraped_at": "2026-08-22T10:14:33Z",
"company_about": null,
"company_phone": null,
"company_email": null,
"company_website": "http://macleodcares.com",
"company_address_street": null,
"company_address_city": "Souris",
"company_address_province": "PE",
"company_address_postcode": "C0A 2B0",
"company_address_country": "Canada",
"company_business_type": null,
"company_business_size": "Small-sized business",
"company_size_range": "Small-sized business (between 1 and 4 employees)",
"company_industry_naics": null,
"company_industry": "Health care and social assistance",
"company_profile_modified_at": "2026-07-09",
"company_locations_count": 1,
"company_logo_url": null,
"company_active_jobs_count": 2,
"company_active_jobs": [
{
"title": "Health Care Aide",
"job_url": "https://www.jobbank.gc.ca/jobsearch/jobposting/50121324",
"location": "Souris, PE",
"salary_text": "$20.50 to $23.00 hourly"
}
],
"company_workplace_amenities": ["Accessible parking", "Variable work hours available"],
"company_support_groups": ["Supports newcomers and/or refugees with foreign credential recognition"],
"company_learning_opportunities": ["On-the-job training"],
"company_green_initiatives": ["Training for employees on environmental sustainability"]
}

Pricing

$0.001 per actor start + $0.005 per full-detail row (or $0.003 per SERP-only row) + optional $0.005 per unique employer profile enriched. About $5 per 1,000 jobs in full mode.

You only pay for rows that successfully return data. Failed fetches are not charged.

New to Apify? Every account gets a $5 free monthly platform credit, enough for around 1,000 full-mode results on this actor before you commit to paying anything. Test extensively first.

Input

FieldTypeDescription
searchQueriesarrayKeywords like "nurse", "welder", "developer". Each runs as a separate search.
startUrlsarrayPaste search URLs from the site directly. All filters preserved.
locationstringCity or region, e.g. "Toronto", "Vancouver, BC". Applied to keyword searches.
provinceselectTwo-letter province code, applied when the location does not already include one.
employmentTypeselectPermanent, Temporary, Casual or Seasonal.
includeJobDetailsbooleanFetch each posting for full description, NOC code, salary, hours, education, language, and detail-only fields.
includeCompanyDetailsbooleanFetch each unique employer profile for business size, other open roles, and any contact fields. Implies includeJobDetails=true.
maxResultsintegerTotal row cap across all queries.
maxResultsPerQueryintegerRow cap per query.
maxConcurrencyintegerConcurrent detail-page requests. Default 6.

Output fields

Identity: id, job_bank_id, title, job_url, source_platform, _type.

Employer + location: employer_name, location, city, province, postal_code, country.

Salary in CAD: salary_min, salary_max, salary_currency, salary_period, salary_text, wage_rate_type, hours_per_week.

Employment: employment_type (compound string, e.g. "Permanent employment, Full time"), workplace_type, employment_conditions, vacancy_count.

Canadian taxonomy: noc_code (NOC 2021), noc_title.

Requirements: education_required, experience_required_text, experience_required_years, job_language (English / French / Bilingual), work_permits_accepted.

Content (full mode): description (single-line normalised), description_full (paragraph-and-bullet plain text), description_html (raw HTML), description_md (Markdown with headings, bullets, bold, links), responsibilities, job_benefits, skills.

Dates + apply: posted_at_text, posted_at_datetime (ISO 8601), closing_at, application_url, apply_url, company_profile_url.

Employer profile (includeCompanyDetails=true): company_business_type, company_business_size, company_size_range (size label + employee count range), company_industry_naics, company_industry (sector label), company_profile_modified_at (ISO date), company_locations_count, company_logo_url, company_about, company_phone, company_email, company_website, company_address_*, company_active_jobs_count, company_active_jobs[], company_workplace_amenities[], company_support_groups[], company_learning_opportunities[], company_green_initiatives[].

Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

Apify MCP server URL:

https://mcp.apify.com?tools=nanoscrape/jobbank-ca-scraper

Example prompt once connected:

"Use jobbank-ca-scraper to find all bilingual French / English nursing vacancies in Quebec paying more than $40 per hour. Return as a table with employer, city, wage, closing date."

Clients that support dynamic tool discovery (Claude.ai, VS Code) receive the full input schema automatically.

Why this scraper

  • Official Government of Canada source. Every posting is verified by ESDC; no scraped-off-Craigslist noise.
  • NOC 2021 codes surfaced. The unique Canadian occupation taxonomy is exposed as a native field, so filtering, joining, and analytics against StatsCan wage data works out of the box.
  • Bilingual metadata. job_language distinguishes English, French, and true bilingual roles, which is critical for the Canadian labour market.
  • CA-specific fields. vacancy_count, hours_per_week, education_required, experience_required_years, wage_rate_type and Canadian postal codes come as structured fields, not free text.
  • No login. No captcha. Job Bank is a public government service.

Common use cases

  • Immigration consultants surfacing LMIA-eligible postings by NOC code.
  • Recruitment agencies aggregating Canadian jobs into their candidate CRM.
  • Provincial labour-market analysts tracking demand by NOC and region.
  • Bilingual staffing firms filtering the French-language postings in Quebec, Ontario and New Brunswick.
  • Compensation-benchmark teams building CAD wage ranges by occupation and city.

Notes and limits

  • Salary is emitted with salary_period set to one of hourly, weekly, monthly, annual or piece-work; do not compare salary_min values across periods without normalising.
  • application_url is Job Bank's own posting URL when the employer only accepts applications through the government-hosted apply flow. When the listing includes an external career-portal link ("Learn more about this job" button), that URL is in the separate apply_url field. apply_url is null for listings without an external link.
  • company_profile_url is the employer's Job Bank profile page. Some listings do not have a linked employer profile — when absent, company_profile_url is null and all empprofile-derived fields (company_about, company_size_range, company_industry, company_profile_modified_at, company_industry_naics, company_logo_url, company_workplace_amenities, company_support_groups, company_learning_opportunities, company_green_initiatives) are also null or empty arrays. These fields only populate when includeCompanyDetails=true AND the job listing has a linked /jobsearch/empprofile/{id} page.
  • company_website is extracted from the employer anchor on the job detail page (when the employer name links out to an external site). It may also be populated from the employer profile page. Both sources are checked; the detail-page anchor takes priority. When neither source provides a URL, company_website is null.
  • company_* fields are only populated when includeCompanyDetails is enabled. Job Bank employer profiles vary widely in completeness. company_business_size, company_locations_count, and company_active_jobs_count populate on most profiles; company_website, company_email, and company_phone are less common.
  • description_md is real Markdown: headings become #/##, bullet lists become - items, bold/italic tags are preserved as **/*, and hyperlinks become [text](url).
  • job_language is inferred from the posting's Languages field. Postings that say only "English" or only "French" are labelled as such; postings that mention both are labelled Bilingual (English + French).
  • The site currently lists 100,000+ live postings. Practical per-query maximum is a few thousand rows due to the site's own pagination cap.

Support

For issues, feature requests, or field gaps, please open an issue on the Issues tab. We typically respond within 24 hours.

Contact: contact@nanoscrape.com