
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Canadian jobs from Eluta.ca by keyword and location with the site filters (salary, job type, remote, radius, top employers), or from search, employer and job URLs. Get title, company, salary range, location, posting date, full description and the employer apply link.
Scrape job listings from Eluta.ca, the Canadian job search engine that indexes jobs directly from employer career sites. Search by keyword and location with the site's own filters, or paste search, employer and job URLs, and get every job with its salary range, location, posting date, employer details and, by default, the full description. No login, no browser: 1,000 jobs with full details in about 1.5 minutes, for $1.25 per 1,000 jobs.
salaryMin, salaryMax, salaryCurrency and salaryType (ANNUAL, HOURLY...), ready for analysis.software engineer, nurse, accountant) and a location (Toronto, Vancouver BC, Alberta, a postal code), or paste Eluta.ca search, employer or job URLs.| Field | What it does |
|---|---|
queries | Job titles, skills or companies. Each term is a separate search. |
location | Canadian city, province or postal code. Empty means all of Canada. |
startUrls | Eluta.ca search URLs (filters in the URL are kept), employer job lists (/jobs-at-...) or job pages (/spl/...). |
maxItems | Maximum number of jobs to save (default 20, 0 = no limit). |
includeDetails | Full description, dates, employment type, industry and employer details (on by default). |
sortBy, radiusKm, remote, minSalary, jobType, topEmployerList, category | The site's own filters. |
postedFrom, postedTo, includeKeywords, excludeKeywords | Extra filters applied to each job. Jobs left out are not charged. |
resolveApplyUrls | Follow each apply link to the employer's own posting. |
{
"queries": ["software engineer"],
"location": "Toronto",
"maxItems": 20,
"includeDetails": true,
"sortBy": "date",
"minSalary": 100000,
"jobType": "full-time"
}
| Field | Description |
|---|---|
jobId, url | Eluta.ca job id and job page |
title, company, location, city, province, isRemote | Job title, employer and place |
salaryText, salaryMin, salaryMax, salaryCurrency, salaryType | Salary as shown and parsed |
employmentType, industry, postedAt, validThrough | Job type, category, posting date (Toronto time) and apply-by date |
description, descriptionHtml, descriptionMarkdown, descriptionLength | Full job description |
applyUrl, employerJobUrl, sourceHost | Apply link, the employer's own posting (option) and the site Eluta.ca indexed the job from |
companyUrl, companyDescription, companyJobsUrl, companyLogo, companyNaics | Employer website, description, all its Eluta.ca jobs, logo and NAICS code |
companyStreetAddress, companyCity, companyProvince, companyPostalCode, companyLatitude, companyLongitude | Employer head-office address and coordinates |
isTopEmployer, topEmployerProfileUrl | Winner of a Canada's Top Employers competition, with its profile |
snippet, indexedAgo, indexedAt | Search-result snippet and when Eluta.ca indexed the job |
extractedEmails, extractedPhones | Contact emails and phone numbers found in the description |
searchQuery, searchLocation, searchUrl, position, detailFetched, scrapedAt | Where the job came from |
Example (one job from a test run; description fields shortened):
{
"jobId": "542fcc9987bab86125168c91bb5b91b3",
"url": "https://www.eluta.ca/spl/software-engineer-542fcc9987bab86125168c91bb5b91b3",
"title": "Software Engineer",
"company": "Questrade Financial Group",
"companySlug": "questrade",
"companyUrl": "http://www.questrade.com/",
"companyJobsUrl": "https://www.eluta.ca/jobs-at-questrade",
"companyDescription": "Founded in 1999, Questrade Financial Group is an online trading brokerage.",
"isTopEmployer": true,
"topEmployerProfileUrl": "https://reviews.canadastop100.com/top-employer-questrade",
"location": "Toronto, ON",
"city": "Toronto",
"province": "ON",
"country": "Canada",
"isRemote": false,
"salaryText": "$80,000 - $120,000",
"salaryMin": 80000,
"salaryMax": 120000,
"salaryCurrency": "CAD",
"salaryType": "ANNUAL",
"employmentType": "FULL_TIME",
"employmentTypeText": "full-time",
"industry": "Computing - Software & Web Development",
"postedAt": "2026-10-21T00:24:20",
"validThrough": "2026-11-24T00:00:00",
"indexedAgo": "13 hours ago",
"indexedAt": "2026-10-21T04:46:55Z",
"snippet": "Software Engineer. Could It Be You? The Software Engineer is responsible for designing, building, testing, and deploying features across the...",
"description": "What’s in it for you as an employee of QFG?\n\n- Health & wellbeing resources and programs\n- Paid vacation, personal, and sick days ...",
"descriptionMarkdown": "What’s in it for you as an employee of QFG?\n\n- Health & wellbeing resources and programs\n- Paid vacation, personal, and sick days ...",
"descriptionLength": 3875,
"applyUrl": "https://www.eluta.ca/direct/i?i=542fcc9987bab86125168c91bb5b91b3",
"sourceHost": "jobs.dayforcehcm.com",
"companyStreetAddress": "5700 Yonge",
"companyCity": "North York",
"companyProvince": "Ontario",
"companyPostalCode": "M2M 4K2",
"companyLatitude": 43.7813,
"companyLongitude": -79.4163,
"searchQuery": "software engineer",
"searchLocation": "Toronto",
"position": 16,
"detailFetched": true,
"scrapedAt": "2026-10-21T17:46:56.844Z"
}
You pay $1.25 per 1,000 jobs ($0.00125 per job), full details included, with no start fee. Jobs left out by your date or keyword filters are not charged.
Platform usage (compute and proxy traffic) is billed on top and is small: a 1,000-job run with full details used about $0.03 in our tests. So 1,000 detailed jobs cost about $1.28 in total, and a 20-job run about $0.03.
Is it legal to scrape Eluta.ca? The scraper reads public job listings that anyone can see without an account. Check Eluta.ca's terms and the laws that apply to you, especially if you store personal data found in descriptions.
Do I need a login or my own proxy? No. No account or cookies are needed, and the built-in proxy is used by default. Eluta.ca limits how many pages one address may load, so keep the proxy on.
How many jobs can I get? As many as you want across several searches. Eluta.ca itself shows at most 10,000 jobs per search, so split very broad searches by search term, location or filter; the run says so when a search reaches that ceiling.
Why is a field empty?
Employers decide what they publish. Salary, industry, apply-by date and the employer address are missing on some jobs, and job pages that Eluta.ca no longer serves are saved with the search-result data only (detailFetched: false).
Can I schedule it or use the API?
Yes. Schedule daily runs sorted by date with "Posted from" set to 24 hours, and start runs or read results through the API or integrations.
Is it faster without details? Yes. Turn off "Include full job details" to read 10 jobs per page request instead of one page per job; the price stays the same.
postedAt is the posting time in Toronto time, as the site gives it. Without job details, date filters use the "indexed ... ago" time from the search results, which is rounded.Computing - Software & Web Development).Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
queriesarrayOptionalSearch terms
Job titles, skills or companies, one per line, e.g. software engineer, nurse, accountant. Each term is a separate search. Leave empty to list every job in the location.
locationstringOptionalLocation
Canadian city, province or postal code, e.g. Toronto, Vancouver BC, Montreal, Alberta, M5V 2T6. Leave empty for all of Canada.
startUrlsarrayOptionalSearch, employer or job URLs
Eluta.ca pages copied from your browser: searches (https://www.eluta.ca/search?q=nurse&l=Calgary, filters in the URL are kept), employer job lists (https://www.eluta.ca/jobs-at-shopify) or single jobs (https://www.eluta.ca/spl/...-).
maxItemsintegerOptionaldefault 20Max results
Maximum number of jobs to save across all searches. 0 means no limit. Eluta.ca shows at most 10,000 jobs per search, so use several search terms, locations or filters to collect more.
includeDetailsbooleanOptionaldefault trueInclude full job details
Open each job for the full description (text, HTML and Markdown), posting date, apply-by date, employment type, the employer's website and description. Turn off for a faster list with title, company, location, salary and snippet only.
sortByenumOptionaldefault "relevance"Sort by
Order of the results, as on the site.
radiusKmintegerOptionalRadius (km)
Distance around the location: 5, 10, 25, 50, 100 or 200 km (the site's default is 50). Other values are rounded to the nearest option. Only used with a location.
remoteenumOptionaldefault "any"Remote work
Keep only remote jobs, or leave them out.
minSalaryintegerOptionalMinimum annual salary (CAD)
Only jobs that state a yearly salary of at least this much. The site filters in steps of $20,000 from $40,000 to $140,000, so values are rounded down to a step. Jobs without a salary are left out when this is set.
jobTypeenumOptionaldefault "any"Job type
The site's job-level filter.
topEmployerListenumOptionaldefault "any"Top employer list
Only jobs from winners of one of the Canada's Top Employers competitions.
categorystringOptionalCategory
The site's job category, written as on Eluta.ca, e.g. Computing - Software & Web Development, Engineering - Civil, Finance/Banking, Sales, Trades/Technicians, Construction.
postedFromstringOptionalPosted from
Only jobs posted on or after this date (2026-10-01) or within an age such as '24 hours', '7 days' or '2 weeks'. Combine with 'Date posted' sorting to stop early.
postedTostringOptionalPosted to
Only jobs posted on or before this date (2026-10-15) or age.
includeKeywordsarrayOptionalMust contain any of
Keep only jobs whose title, company or description contains at least one of these words (not case-sensitive). Jobs left out are not charged.
excludeKeywordsarrayOptionalMust not contain
Leave out jobs whose title, company or description contains any of these words (not case-sensitive).
resolveApplyUrlsbooleanOptionaldefault falseResolve employer apply links
Follow each job's apply link to the employer's own posting (careers site or ATS such as Workday or Lever) and save that URL as employerJobUrl. Adds one quick request per job.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Eluta.ca limits how many pages one address may load, so the scraper spreads requests over many proxy addresses. Datacenter works well; the run switches to Canadian residential addresses by itself if needed.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| jobId | string | null | |
| url | string | null | |
| title | string | null | |
| company | string | null | |
| companySlug | string | null | |
| companyUrl | string | null | |
| companyJobsUrl | string | null | |
| companyDescription | string | null | |
| companyLogo | string | null | |
| companyNaics | string | null | |
| isTopEmployer | boolean | null | |
| topEmployerProfileUrl | string | null | |
| location | string | null | |
| city | string | null | |
| province | string | null | |
| country | string | null | |
| isRemote | boolean | null | |
| salaryText | string | null | |
| salaryMin | number | null | |
| salaryMax | number | null | |
| salaryCurrency | string | null | |
| salaryType | string | null | |
| employmentType | string | null | |
| employmentTypeText | string | null | |
| industry | string | null | |
| postedAt | string | null | |
| validThrough | string | null | |
| indexedAgo | string | null | |
| indexedAt | string | null | |
| snippet | string | null | |
| description | string | null | |
| descriptionHtml | string | null | |
| descriptionMarkdown | string | null | |
| descriptionLength | number | null | |
| applyUrl | string | null | |
| employerJobUrl | string | null | |
| sourceHost | string | null | |
| companyStreetAddress | string | null | |
| companyCity | string | null | |
| companyProvince | string | null | |
| companyPostalCode | string | null | |
| companyLatitude | number | null | |
| companyLongitude | number | null | |
| extractedEmails | array | null | |
| extractedPhones | array | null | |
| searchQuery | string | null | |
| searchLocation | string | null | |
| searchUrl | string | null | |
| position | number | null | |
| detailFetched | boolean | null | |
| scrapedAt | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved job listing (full details included). | $0.0013 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/eluta-scraper').call({
"queries": [
"software engineer"
],
"location": "Toronto",
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/eluta-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/eluta-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
15 nursing jobs around Vancouver with salary, posting date, employment type and the full description.
Accountant jobs in Calgary sorted newest first, full-time only, with a stated salary of at least $60,000.
30 of the latest jobs in Montreal without opening each job page: title, company, salary, location and snippet.
Paste Eluta.ca pages: a welder search in Edmonton and every job at Amazon Canada.
5 data analyst jobs in Ottawa, leaving out every job that mentions 'senior'.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.