Eluta.ca Jobs Scraper avatar

Eluta.ca Jobs Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Eluta.ca Jobs Scraper

Eluta.ca Jobs Scraper

Scrape eluta.ca — Canada's national job search engine — by keyword and city. Full descriptions, CAD salary min/max, employer website, NAICS code, HQ geo, Top-100 employer rating, and the real ATS apply link (not an eluta redirect). Incremental monitoring built in. JSON or CSV out.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

13 hours ago

Last modified

Share

Eluta.ca Jobs Scraper — Canadian Jobs, Salaries & Real Apply Links

Turn eluta.ca — Canada's national job search engine, indexing postings directly from ~10,000 employer career sites — into structured hiring data. Search any keyword × location combination (or paste any eluta URL) and get full job descriptions, structured CAD salaries, employer metadata with NAICS codes and HQ coordinates, and the employer's real ATS apply link — not an eluta redirect.

$1 per 1,000 jobs ($0.001/result — a third less than the $1.5 category leader), and the only Eluta actor with real employer-email discovery: opt-in enrichment that looks up the employer's actual contact addresses instead of regexing the description text and hoping an email was typed into it.

How Eluta.ca Jobs Scraper works

Why this actor

  • Real apply URLs. Every job's outbound redirect is resolved to the employer's actual ATS posting (Workday, iCIMS, Greenhouse, SmartRecruiters, Talcura…) — the link a candidate or recruiter actually needs.
  • Full descriptions, not snippets. Complete description HTML + plain text from the job page (typically 1,500–6,000 chars), plus the SERP snippet.
  • Salary-first. Structured CAD salary (salaryMin / salaryMax / salaryType) straight from eluta's own JSON-LD where the employer provides it, with a regex fallback over description text.
  • Employer intelligence built in. Employer website + domain, logo, description, NAICS industry code, HQ street address with latitude/longitude, and the Canada's Top 100 Employers rating where awarded.
  • $1 per 1,000 jobs. $0.005 per run + $0.001 per result — priced below the leading Eluta actor, with the same fields and more.
  • Source transparency. Each row carries the employer career-site domain eluta indexed the posting from (sourceDomain) and the employer's ATS job ID (atsJobId).
  • Monitoring mode. Run it on a schedule and only get postings you haven't seen before — no charge for skipped repeats.

Use cases

WhoWhat
Recruiters & sourcersFresh Canadian postings by keyword/city with direct ATS links and hiring-employer websites
Job-market analystsSalary bands, employment types, NAICS industries and posting velocity across Canada
Lead-gen teamsCompanies actively hiring (with website, domain, HQ geo) as buying-intent signals — add opt-in contact-email enrichment
Job boards & aggregatorsStructured Canadian feed with dedupe-friendly stable IDs and change monitoring
AI agents / LLM appsClean JSON rows with full description text, ready for embedding or summarisation

Input

FieldTypeDefaultNotes
queryarray["software engineer"]Each keyword runs as its own search; eluta in-query qualifiers allowed
locationarray["Toronto"]Combined with every keyword; empty = all of Canada
sortBystringrelevancedate = newest first (best for monitoring), popularity
startUrlsarrayAny eluta.ca URL: /search?q=…, SEO pages (/Nurse-jobs-in-Toronto-ON), employer pages (/jobs-at-…), direct job URLs (/spl/…)
includeDetailsbooleantrueFetch each job's detail page (description, dates, employer metadata, salary). Off = fast SERP-only rows
resolveApplyUrlsbooleantrueResolve the outbound redirect to the employer's real ATS URL
enrichEmailsbooleanfalseOpt-in employer contact-email discovery (billed per email found)
monitoringModebooleanfalseOnly return jobs not delivered on previous runs
maxItemsinteger1000Hard cap across all searches
maxPagesPerSearchinteger20~10 jobs per SERP page
maxConcurrencyinteger10Parallel job-page fetches

Example input

{
"query": ["registered nurse", "software engineer"],
"location": ["Toronto", "Vancouver"],
"sortBy": "date",
"maxItems": 200
}

Monitoring feed (schedule daily; only new postings after the first baseline run):

{
"query": ["data engineer"],
"location": ["Toronto"],
"sortBy": "date",
"monitoringMode": true
}

Output schema

One row per job. All fields always present — unavailable data points are null, never omitted.

Example job record (trimmed real row)

{
"type": "job",
"jobId": "a69ac728cec9333a7faf711a00cec597",
"atsJobId": "23804",
"title": "Registered Nurse Critical Care 6 East Certificate Required",
"companyName": "Humber River Health",
"companySlug": "humber-river-health",
"companyUrl": "https://www.eluta.ca/jobs-at-humber-river-health",
"companyWebsite": "https://www.hrh.ca/",
"companyDomain": "hrh.ca",
"naicsCode": "622110",
"companyHeadquarters": {
"streetAddress": "1235 Wilson",
"addressLocality": "North York",
"addressRegion": "Ontario",
"postalCode": "M3M 0B2",
"addressCountry": "Canada",
"latitude": 43.7256,
"longitude": -79.4849
},
"topEmployer": false,
"topEmployerRating": null,
"location": "North York, ON",
"postedAgo": "1 hour ago",
"postedDate": "2026-08-04T03:38:14",
"closingDate": "2026-09-08T00:00:00",
"employmentType": "FULL_TIME",
"industry": "Health/Medical - Nursing",
"salaryText": "$41.15 - $58.98",
"salaryMin": 41.15,
"salaryMax": 58.98,
"salaryCurrency": "CAD",
"salaryType": "HOUR",
"sourceDomain": "careersen-hrrh.icims.com",
"elutaUrl": "https://www.eluta.ca/spl/registered-nurse-critical-care-6-east-certificate-required-a69ac728cec9333a7faf711a00cec597",
"applyUrl": "https://careersen-hrrh.icims.com/jobs/23804/registered-nurse-critical-care-6-east-certificate-required/job",
"applyUrlResolved": true,
"descriptionText": "Position Profile Humber River Health. Tomorrow's Healthcare, Today…",
"descriptionHtml": "<p>…</p>",
"searchQuery": "registered nurse",
"detailFetched": true,
"scrapedAt": "2026-08-04T09:28:41.112Z"
}

Key output fields

GroupFields
IdentityjobId (stable eluta hex id), atsJobId, elutaUrl
Roletitle, employmentType, industry, descriptionText, descriptionHtml, descriptionSnippet
SalarysalaryText, salaryMin, salaryMax, salaryCurrency (CAD), salaryType (YEAR / HOUR)
EmployercompanyName, companyLegalName, companySlug, companyUrl, companyWebsite, companyDomain, companyDescription, companyLogoUrl, naicsCode, companyHeadquarters (address + lat/lng)
RecognitiontopEmployer, topEmployerRating, topEmployerReviewUrl (Canada's Top 100 Employers)
Locationlocation, addressLocality, addressRegion, addressCountry
DatespostedAgo, postedDate (ISO), closingDate (ISO)
ApplyapplyUrl (real ATS link), applyUrlResolved, sourceDomain
Run contextsearchQuery, searchUrl, isSponsored, detailFetched, scrapedAt

How it works

  1. Your keywords × locations become eluta searches (or your pasted URLs are auto-classified: SERP / SEO page / employer page / direct job).
  2. SERP pages are walked via ?pg=N, ~10 jobs per page, streaming rows into a sliding-window worker pool — first results arrive within seconds.
  3. Each job's detail page is fetched and parsed: eluta renders two page variants (microdata and JSON-LD) and both are handled, with the full description, ISO dates, employer metadata and structured salary.
  4. The outbound apply redirect (/direct/i) is resolved to the employer's real ATS URL.
  5. The merged row is pushed to the dataset — one row per job, JSON/CSV/Excel export.

What makes this different from other Eluta actors

  • Apply links that actually apply. Other actors return the eluta.ca job URL as applyUrl. This one resolves the redirect to the employer's ATS posting (e.g. careersen-hrrh.icims.com/jobs/23804/...).
  • Full description coverage. Both eluta page variants are parsed, so descriptions come back complete — including postings where SERP-only scrapers return empty text.
  • Employer depth. NAICS code, HQ address with coordinates, employer website/domain/logo/description, and Top-100 employer ratings — fields for lead-gen and market analysis, not just job listings.
  • Honest rate-limit handling. Eluta soft-blocks bursty IPs; this actor detects it and rotates through a residential pool automatically instead of silently returning truncated results.
  • Real contact discovery, not description regex. Other actors "extract emails" by pattern-matching the posting text — which contains no email for the vast majority of jobs. Opt-in enrichEmails discovers the hiring employer's actual contact emails from their website and public sources, and bills only per email actually found.

Notes & limitations

  • Salary coverage follows the source. Only a minority of Canadian employers publish pay on their postings (~20–30% in our tests). Where eluta has it, you get structured min/max; where it only appears in prose, the text parser picks it up best-effort.
  • applyUrl falls back to the eluta job URL when the redirect can't be resolved (applyUrlResolved: false) — rare (≥85% resolve in testing).
  • topEmployerRating only exists for employers recognised in Canada's Top 100 Employers project (eluta is run by its publisher, Mediacorp).
  • Monitoring mode's first run returns everything matching — that seeds your baseline; subsequent runs return only new postings.
  • Sponsored SERP slots are included and flagged via isSponsored.

FAQ

How fresh are the postings? Eluta indexes employer career sites continuously — with sortBy: date the top results are typically minutes to hours old, and each row carries postedAgo + an ISO postedDate.

Can I scrape a specific employer's jobs? Yes — paste their eluta employer page (e.g. https://www.eluta.ca/jobs-at-sunnybrook) into startUrls.

What does a "real apply URL" mean exactly? Eluta's apply buttons go through an internal redirect. The actor follows that redirect server-side and stores the destination — the employer's own ATS posting — in applyUrl, with the source career-site domain in sourceDomain.

Does it cover all of Canada? Yes. Leave location empty to search nationally, or run multiple cities in one go — every query × location pair becomes its own search in the same run.

How do I get only new jobs each day? Enable monitoringMode, set sortBy: date, and schedule the actor daily. Already-delivered job IDs are skipped without fetching (and without charge). resetMonitoringState rebuilds the baseline.

Support

  • Bugs / feature requests — open an issue on the GitHub repo
  • Custom exports / tailored fields — drop a note via the Apify Store contact form
  • Other actors — see my Apify Store profile for the rest of the catalog

🔎 Explore more scrapers

Same engine, other job boards:

…plus 100+ more on the memo23 profile.


⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Eluta.ca, Mediacorp Canada Inc., or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly visible job postings rendered server-side by eluta.ca — no login, no CAPTCHA solving, no authenticated endpoints. When eluta rate-limits an IP it backs off and rotates rather than attempting to bypass the verification page.

Users are responsible for:

  • Complying with Eluta.ca's Terms of Service
  • Following PIPEDA and your jurisdiction's data-protection laws (GDPR, CCPA, etc.) when storing, processing, or republishing scraped postings
  • Not republishing scraped data in a way that competes commercially with Eluta.ca

SEO Keywords

eluta scraper, scrape eluta.ca, eluta api, eluta.ca job scraper, Apify eluta, canada job scraper, canadian jobs api, canada job listings data, toronto jobs scraper, vancouver jobs scraper, canadian salary data, job postings canada api, canada hiring data, recruitment data canada, job market analytics canada, canada's top 100 employers data, naics job data, employer career site scraper, ats apply links, job feed canada, job monitoring alerts canada, indeed canada alternative, job bank canada alternative