Eluta.ca Job Scraper — Canadian Jobs, Salaries & Apply URLs avatar

Eluta.ca Job Scraper — Canadian Jobs, Salaries & Apply URLs

Pricing

from $1.30 / 1,000 results

Go to Apify Store
Eluta.ca Job Scraper — Canadian Jobs, Salaries & Apply URLs

Eluta.ca Job Scraper — Canadian Jobs, Salaries & Apply URLs

Scrape Canadian job listings from Eluta.ca by keyword, city and province. Get title, company, structured location, remote flag, parsed CAD salary (min/max/period), the direct employer apply URL and the full job description — with cheap incremental monitoring for scheduled daily feeds.

Pricing

from $1.30 / 1,000 results

Rating

5.0

(1)

Developer

Corvuslab

Corvuslab

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

18 hours ago

Last modified

Share

What does Eluta.ca Job Scraper do?

Turn any Eluta.ca search into clean, structured Canadian job data — title, company, location, salary and the direct employer apply link — in one run.

Scrape job listings from Eluta.ca, the search engine behind Canada's Top 100 Employers, by keyword, city and province. Every job comes back as a structured record: title, company, structured location (city / province), a first-class remote flag, parsed salary (min / max / currency / period), the direct employer apply URL and the full job description — plus dozens more fields. Run it no-code in the visual editor or via the API, export to JSON, CSV, Excel or feed it straight to an AI agent, and schedule it with incremental monitoring so a daily feed only ever costs you the jobs that actually changed.

Why this scraper

  • Fast & low-cost — pulls about 10 jobs per page request, so large runs stay cheap.
  • 🧾 Rich, typed records — 35+ structured fields per job, not raw HTML.
  • ♻️ Cheap to monitor — incremental mode re-scrapes only what changed (see below).
  • 🔔 Notifications built in — Telegram, Slack, Discord or any webhook.
  • 🤖 AI- & API-ready — compact output, MCP-friendly, one-click integrations.

📚 What data can you extract from Eluta.ca?

  • Job & employertitle, company, employerElutaUrl, url, id, source.
  • Locationlocation, city, province, countryCode, isRemote.
  • SalarysalaryRaw, salaryMin, salaryMax, salaryCurrency, salaryPeriod.
  • Posting detailsemploymentType, isSponsored, postedAtRaw, postedAt, resultRank, searchKeyword.
  • Apply & sourceapplyUrl (direct employer link), sourceDomain, sourceCountry.
  • Description (with Fetch full details) — descriptionSnippet, description, descriptionHtml, descriptionMarkdown, descriptionLength.
  • Contacts (with Extract contacts) — emails, phones, socialProfiles parsed from the description.
  • Change tracking (with incremental mode) — changeType, isRepost, repostOfId, repostDetectedAt, contentHash, detailFetched, scrapedAt.

Every field is present in standard mode (missing values are null); compact mode returns the core fields only (title, company, location, salary, apply URL), for lean AI/MCP payloads.


✨ Key features

  • 🔎 Search or URL scraping — run a keyword search with optional city/province, or paste Eluta.ca search and job-page URLs.
  • 🍁 Built for Canada — structured city, province and countryCode, plus a first-class isRemote boolean parsed straight from the listing.
  • 💰 Parsed salary — the raw salary text and structured salaryMin, salaryMax, salaryCurrency (CAD) and salaryPeriod (year / hour), so you can sort and filter on pay.
  • 🔗 Direct employer apply URL — resolves the real destination on the employer's own careers site, not just the Eluta redirect, so leads and applications land where they should.
  • 🧠 Full job descriptions — the complete posting as plain text, HTML and Markdown, with an always-on short snippet for previews.
  • 🎚️ Powerful filters — city, province/territory, include/exclude keyword filters, a posted date range (fromDate / toDate), max age in days or minutes, and a result cap — keyword filtering runs before any detail fetch, so it stays cheap.
  • 📇 Contact extraction — optionally pull emails, phone numbers and social-profile links out of each job description.
  • ♻️ Incremental monitoring — schedule it and get only what changed (NEW / UPDATED / EXPIRED); unchanged jobs are skipped before their detail page is ever fetched.
  • 🔁 Repost detection — the same job re-posted under a new ID is flagged (isRepost), and can be dropped entirely with Skip reposts.
  • 🔔 Notifications — Telegram, Slack, Discord or any webhook (n8n / Make / Zapier), with an optional changes-only filter.
  • 🤖 AI-ready — compact and drop-empty output modes keep payloads small for LLMs and MCP.

🚀 How to scrape Eluta.ca

  1. Open the actor and enter a search keyword (e.g. software developer) and, optionally, a city or province — or paste an Eluta.ca URL.
  2. Set Max results and choose whether to fetch full details (description + direct apply URL).
  3. (Optional) Turn on incremental mode and a notification channel, then Schedule it.
  4. Click Start.
  5. Download the data as JSON, CSV or Excel, or pull it from the API.

New to Apify? Create a free account — it comes with monthly credit, no credit card required.


⚙️ Input

Configure it in the visual editor — no code needed — or pass JSON via the API.

FieldWhat it does
queryKeyword search, e.g. registered nurse (comma-separate for multiple searches).
locationCity or region to search within, e.g. Toronto, Vancouver, Calgary.
provinceRestrict to a Canadian province or territory (AB, BC, ON, QC …).
startUrlsScrape specific Eluta.ca search or job-page URLs directly.
maxResultsCap the number of jobs (0 = unlimited).
maxAgeDays / maxAgeMinutesKeep only jobs first seen within the last N days or minutes.
fromDate / toDateKeep only jobs posted within a date range.
includeKeywords / excludeKeywordsKeep or drop jobs by keyword (matched before any detail fetch).
includeDetailsFetch each job's full description and direct apply URL.
includeContactsExtract emails, phones and social links from the description.
incrementalModeEmit only what changed since the last run.

…and 33 inputs in total — the table shows the essentials; the rest cover description format and trimming, compact / drop-empty output modes, repost skipping, notification channels (with a changes-only option), incremental tuning and advanced options, all in the visual editor.


📥 Example input

A few ready-to-run configurations — set these in the visual editor or pass them as JSON via the API:

{ "query": "software developer", "location": "Toronto", "maxResults": 100 }
{ "query": "registered nurse", "province": "BC", "maxAgeDays": 7, "includeDetails": true }
{ "query": "data analyst", "location": "Ottawa", "incrementalMode": true, "telegramToken": "…", "telegramChatId": "@yourchannel" }
{ "query": "developer", "location": "Toronto", "includeKeywords": "python, backend", "excludeKeywords": "senior, manager", "includeDetails": true, "includeContacts": true }

📤 Output

{
"id": "68416bf7ec7a681f6c0c59587993542e",
"title": "Senior Software Developer, Backend",
"url": "https://www.eluta.ca/spl/senior-software-developer-backend-68416bf7ec7a681f6c0c59587993542e",
"company": "Autodesk Canada Co.",
"employerElutaUrl": "https://www.eluta.ca/jobs-at-autodesk-canada",
"location": "Toronto, ON",
"city": "Toronto",
"province": "ON",
"countryCode": "CA",
"isRemote": false,
"isSponsored": false,
"salaryRaw": "$107,000 - $157,300",
"salaryMin": 107000.0,
"salaryMax": 157300.0,
"salaryCurrency": "CAD",
"salaryPeriod": "year",
"postedAtRaw": "19 hours ago",
"postedAt": "2026-08-10T23:17:39.552811+00:00",
"applyUrl": "https://autodesk.wd1.myworkdayjobs.com/en-US/Ext/job/Toronto-ON-CAN/Senior-Software-Developer--Backend_26WD100353",
"sourceDomain": "autodesk.wd1.myworkdayjobs.com",
"sourceCountry": "CA",
"descriptionSnippet": "... software – from the greenest buildings and cleanest cars to the smartest factories and biggest hit movies. We help innovators turn their ideas into reality, transforming not only how things are made, but what can be made...",
"resultRank": 4,
"source": "eluta.ca",
"searchKeyword": "software developer",
"scrapedAt": "2026-08-11T18:17:39.552811+00:00",
"detailFetched": true
}

Full runs also carry the complete description as description (text), descriptionHtml and descriptionMarkdown, plus descriptionLength.

♻️ How to monitor Eluta.ca with incremental mode

Schedule the actor and turn on incremental mode: each run compares against the last and emits only NEW / UPDATED / EXPIRED jobs — unchanged listings are skipped before their detail page is fetched, so a daily watch costs a fraction of a full re-scrape.

Daily churnof 1,000 trackedbillable recordsyou save
5 %1,0005095 %
15 %1,00015085 %
30 %1,00030070 %

The first run seeds the baseline and bills in full; every run after that bills only the delta.


🔔 How to set up Eluta.ca alerts

Get pinged the moment a matching record appears. Fill in only the channels you want:

ChannelWhat to configure
✈️ TelegramtelegramToken (from @BotFather) + telegramChatId
💬 SlackslackWebhookUrl (Incoming Webhook URL)
🎮 DiscorddiscordWebhookUrl (channel webhook URL)
🪝 WebhookwebhookUrl receives structured JSON — ideal for n8n / Make / Zapier

Credentials are secret inputs — encrypted at rest, masked in the UI and never written to the run log. Every channel fires independently, so a broken channel can't stop the scrape or the others. Pair incremental mode with notify only about changes to hear only about genuinely new records, with no duplicates across runs.

💡 What can you do with Eluta.ca data?

  • Recruiting & sourcing — build a live board of open Canadian roles with employer names and direct apply links.
  • Salary benchmarking — aggregate salaryMin/salaryMax by role, city and province to price your offers.
  • Job-market & hiring research — track which companies are hiring, where, and for what across Canada.
  • Job board & aggregator feeds — enrich your own site or app with clean, structured Canadian listings.
  • Daily vacancy monitoring — schedule with incremental mode + notifications for a live change feed.
  • AI agents & pipelines — compact output plugs straight into LLM / MCP workflows.

💰 How much does it cost to scrape Eluta.ca?

This Actor uses Apify's pay-per-event model: a small fee when a run starts, plus a per-record fee. See the Actor's Pricing tab for the current numbers — they're rendered live, so this page never goes stale.

Two things cut your bill further:

  • Site-side filters — records you filtered out are never fetched and never billed.
  • Incremental mode — after the baseline run you pay only for what actually changed.
Daily churnof 1,000 trackedbillable recordsyou save
5 %1,0005095 %
15 %1,00015085 %
30 %1,00030070 %

🔌 Integrations & export

Export to JSON, CSV, Excel or an HTML table, or pull from the REST API and the JavaScript / Python clients. Runs on a schedule, connects to Google Sheets, Slack, Make, Zapier and n8n, and works as an MCP tool for AI agents — compact mode keeps token usage small.


🔗 Using the API

Run this Actor from your own code. Example with the Apify Python client:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("corvuslab/eluta-scraper").call(run_input={
"query": "example",
"maxResults": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

It also works with the JavaScript/TypeScript client, the Apify CLI and the REST API.

❓ FAQ

Do I need a proxy or login? No — it runs out of the box with a working default configuration, which you can adjust under Advanced.

Which locations does it cover? All of Canada — search by city, or restrict to any province or territory. Leave both empty to search the whole country.

Do I get salaries? Yes, when the employer publishes them — as raw text and as structured salaryMin / salaryMax / salaryCurrency / salaryPeriod. Jobs without a posted salary return null.

Can I get the real employer apply link? Yes — with Fetch full details, applyUrl resolves to the employer's own careers page, not just the Eluta redirect.

Can I get only new jobs on a schedule? Yes — turn on incremental mode and schedule it; each run emits only what changed and can notify your channel. Add Notify only on changes to keep those alerts to genuinely new/updated jobs.

Can I filter the results? Yes — narrow by city/province, a posted date range (fromDate / toDate) or max age (days or minutes), and keep or drop jobs with include/exclude keyword filters. Keyword filters run on the listing before any detail fetch, so they don't cost you extra.

Can I get recruiter emails or phone numbers? Turn on Extract contacts and the actor parses emails, phones and socialProfiles out of each fetched description. Most postings link to an applicant-tracking system rather than listing a contact, so these are often empty.

What formats can I export? JSON, CSV, Excel, HTML table, or via the API.

Is it good for AI agents? Yes — enable compact mode; the output is MCP-friendly.

How many jobs can I get? As many as the search returns — set maxResults (0 = unlimited).

Is scraping this legal? The actor collects only publicly available data. You are responsible for how you use it, including any personal data and GDPR-style obligations.


This actor accesses only publicly available data on Eluta.ca. You are responsible for how you use the extracted data — in particular any personal information — and for complying with the site's terms and applicable law (including the GDPR where it applies). Not affiliated with, endorsed by, or sponsored by Eluta.ca or Mediacorp Canada Inc.


Keywords: eluta scraper · eluta.ca scraper · eluta api · eluta job scraper · canada job scraper · canadian jobs scraper · canada jobs api · job listings canada · job postings scraper · salary data scraper · remote jobs canada · job market research · recruitment data · job board scraper · Toronto jobs scraper · export jobs to CSV · no-code job scraper · MCP tool for AI agents