All Jobs Scraper
Under maintenancePricing
from $3.10 / 1,000 results
All Jobs Scraper
Under maintenanceAll-in-one job scraper that aggregates 26+ job boards. Indeed, Adzuna, USAJobs, Reed, Remotive, and more into one de-duplicated feed by keyword. Get title, company, salary, location, remote status, and posting date, ready for JSON, CSV, Excel, or API/webhook delivery into Notion, Slack, or Airtable.
Pricing
from $3.10 / 1,000 results
Rating
0.0
(0)
Developer
Techforce Global
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
All Jobs Scraper & MCP Connector
Search one keyword across dozens of job boards at once and get back a single, de-duplicated, normalized list of listings — title, company, location, salary, description, URL, posted date, and job type. No API keys to hunt down, no ten browser tabs, no copy-pasting into a spreadsheet.
Built for job seekers, recruiters, sourcers, and market researchers who need a broad, current view of "what's open right now" without visiting every site by hand.
Type a keyword → get jobs from 26 sources, de-duplicated and normalized → deliver them straight into Notion, Slack, Airtable, or your CRM.
⭐ Why This Actor?
- ✅ Just type a keyword —
keywordis the only required field. Everything else (location, country, remote-only, job type, sources, result cap) is optional. - ✅ 26 sources, one call — aggregates Remotive, RemoteOK, Arbeitnow, Jobicy, We Work Remotely, The Muse, Adzuna, USAJobs, Reed.co.uk, and Jooble on by default with zero setup, plus optional Arbetsformedlingen (Sweden), Arbeitsagentur (Germany), France Travail, VDAB (Belgium), Indeed, Freelancer.com, Foundit (India), Bayt.com (MENA + India), Job Bank (Canada), jobs.ch (Switzerland), kariyer.net (Turkey), Talent.com, OnlineJobs.ph (Philippines), Glints (Southeast Asia), CV-Library (UK), and Talroo/Jobs2Careers (US, needs your own free Publisher account).
- ✅ One blocked source never sinks the run — each source runs independently and fails in isolation, so you still get results from everything else that succeeded.
- ✅ Clean, normalized output — every listing is mapped to the same fields (title, company, location, remote, job_type, salary, description, url, posted_date, tags) regardless of which board it came from.
- ✅ De-duplicated and pooled — results from all selected sources are merged and de-duplicated before your
max_resultscap is applied. - ✅ Bring your own keys, or don't — Adzuna, USAJobs, Reed, Jooble, Arbeitsagentur, and France Travail already work out of the box; set your own credentials only if you want higher rate limits or a different account.
- ✅ Deliver anywhere via MCP connectors — push results straight into Notion, Slack, Airtable, Jira, Linear, and more.
- ✅ Export-ready — JSON, CSV, Excel, HTML, or direct API integration for your own pipeline.
📝 Use Cases & ROI
| Use Case | Time Saved | What You Get |
|---|---|---|
| Job search | 2–4 hrs/search | One de-duplicated list instead of repeating the same search on ten sites |
| Recruiting & sourcing | 3–6 hrs/role | Competitor hiring activity and open-role visibility across boards and regions |
| Market & compensation research | 4–8 hrs/report | Structured salary, location, and remote-share data by role, ready to analyze |
| Product / dashboard feeds | Ongoing | A clean JSON feed you can refresh on a schedule via the Apify API |
🚀 How to Use
- Click Try for free (or Start) on this Actor's page.
- Enter a Keyword (e.g.
"Data Engineer") — this is the only required field. - (Optional) Set Location or Country, toggle Remote only, pick a Job type, and set Max results (default:
100). - (Optional) Choose which Sources to query, or leave the ten default sources (all work with zero setup).
- (Optional) Pick an MCP connector under Delivery to push results into Notion, Slack, Airtable, etc.
- Click Start and wait for the run to finish.
- Open the Dataset tab to browse, filter, or export your results (JSON, CSV, Excel, HTML, and more).
💡 First time with a connector? Run once with a connector selected and no tool name set — the run log prints the connector's available tool names and, once you set a valid one, that tool's own full JSON Schema too.
🧩 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
keyword | String | ✔️ Yes | Job title, skill, or company name to search for. |
location | String | Optional | Free-text city/region filter. Leave blank for a broad/remote search. |
country | Enum | Optional | Scopes country-aware sources (Adzuna, USAJobs) and acts as a location fallback for others. Leave blank for each source's own broad default. |
remote_only | Boolean | Optional | Keep only remote (or unspecified-remote) jobs. Default: false. |
job_type | Enum | Optional | all, fulltime, parttime, contract, internship. Default: all. |
max_results | Integer | Optional | Cap on total results across all sources, after pooling and de-duplication. Default: 100. |
sources | Array | Optional | Which job boards to query — see the source list above. Defaults to the ten zero-setup sources. |
adzuna_app_id / adzuna_app_key | String | Optional | Adzuna already works out of the box; set your own to use your own account instead. |
usajobs_email / usajobs_api_key | String | Optional | USAJobs already works out of the box; set your own to use your own account instead. |
reed_api_key | String | Optional | Reed.co.uk (UK) already works out of the box; set your own to use your own account instead. |
jooble_api_key | String | Optional | Jooble already works out of the box; set your own to use your own account instead. |
arbeitsagentur_api_key | String | Optional | Arbeitsagentur (Germany, best-effort) already works out of the box; set your own to use your own account instead. |
francetravail_client_id / francetravail_client_secret | String | Optional | France Travail (France, best-effort) already works out of the box; set your own to use your own account instead. |
vdab_client_id / vdab_bearer_token | String | Optional | VDAB (Belgium, best-effort) is attempted keyless by default; add these (from developer.vdab.be) if the keyless attempt returns a 401. |
themuse_api_key | String | Optional | The Muse works keyless (500 req/hour); add your own free key for a higher 3,600 req/hour limit. |
talroo_publisher_id / talroo_publisher_password | String | Required for Talroo | Talroo/Jobs2Careers (US only) has no built-in fallback — apply free at talroo.com/publish and enter your Feed Manager credentials. |
talroo_ip | String | Optional | End-user IP Talroo's API expects for location/analytics; a generic default is used if unset. |
proxyConfiguration | Object | Optional | Apify Proxy. indeed requests its own Residential proxy automatically if unset; several best-effort sources can also use it if configured. |
mcpConnector | Connector | Optional | Deliver scraped jobs into a connector you've authorized (Notion, Slack, Airtable, etc.) — see MCP connector delivery below. |
deliveryMode | Enum | Optional | perJob, chunked, summary, or none (default) — how results are sent to the connector. |
mcpTool | String | Optional | Name of the tool to call on the connector. |
mcpArguments | Object | Optional | Arguments passed to that tool, with {placeholder} support. |
mcpMessageTemplate | String | Optional | Template rendered into the {message} placeholder. |
Freelancer.com, Foundit (India), Bayt.com (MENA + India), Job Bank (Canada), jobs.ch (Switzerland), kariyer.net (Turkey), Talent.com, OnlineJobs.ph (Philippines), Glints (Southeast Asia), and CV-Library (UK) are all fully keyless best-effort sources with no credentials to configure — each scrapes the same public pages or internal API its own site uses.
Example — Basic search
{"keyword": "Data Engineer","country": "United States","remote_only": false,"job_type": "all","max_results": 50,"sources": ["remotive", "remoteok", "arbeitnow", "jobicy", "weworkremotely"]}
🔌 MCP Connector Delivery
The dataset is always saved regardless of these settings — connector delivery is an additional, optional step. Pick a connector under Delivery (optional) in the Input tab, then set:
deliveryMode—perJob(one connector call per job, e.g. one Notion page per listing),chunked(splits the whole job list across a few calls so a connector never times out or hits a block-count limit),summary(one call with every job as a single text block), ornone.mcpTool— the connector tool to call. Run once with a connector selected and no tool name to see the available tool names logged.mcpArguments— a JSON object of arguments for that tool. Any string value can contain{placeholders}filled in per job (or per chunk/summary).mcpMessageTemplate— optional, rendered into the{message}placeholder.
Placeholders — perJob mode: {title}, {company}, {location}, {url}, {source}, {jobType}, {remote}, {salary}, {description}, {postedDate}, {tags}, {keyword}, {jobCount}, {message}. summary/chunked mode: {jobsText} (the formatted job list, or one part of it when chunked), {keyword}, {jobCount}, plus {part}/{partCount} in chunked mode.
mcpArguments must match the tool's real argument shape exactly, or every call fails with an MCP "Input validation error" (the dataset is unaffected — only delivery is skipped). Once mcpTool names a valid tool, the run log prints Tool '...' expects arguments shaped like: followed by that tool's own full JSON Schema (multi-line, so it isn't cut off by console line-length limits) — read that schema from your own log before setting mcpArguments, rather than copying an example verbatim, since connector tools do change their argument shape.
Example — Create a Notion page per job
deliveryMode: "perJob", mcpTool: "notion-create-pages". Confirmed from the tool's own logged schema:
- The call takes a top-level
"pages"array (max 100, required) and an optional top-level"parent"object —{"page_id": "..."},{"database_id": "..."}, or{"data_source_id": "..."}. Omit"parent"entirely to create private workspace-level pages. - Each item inside
"pages"only accepts"properties","content","template_id","icon", and"cover"— a"parent"key inside a page item is rejected (Unrecognized key: "parent"; it belongs one level up, alongside"pages"). "properties"is a flat map of property name to string/number/array-of-strings/null (not the raw Notion API's nestedrich_text/titleobjects) — match the names to your actual Notion database's columns."content"is the page body, in Notion-flavored Markdown.
{"parent": { "database_id": "YOUR_NOTION_DATABASE_ID" },"pages": [{"properties": {"Name": "{title}","Company": "{company}","Location": "{location}","URL": "{url}","Source": "{source}"},"content": "{description}"}]}
For summary/chunked mode with the same tool, put the formatted job list in the page content instead:
{"parent": { "database_id": "YOUR_NOTION_DATABASE_ID" },"pages": [{"properties": { "Name": "{keyword} - jobs found" },"content": "{jobsText}"}]}
Troubleshooting: "Provided database_id X is a page, not a database"
If the run log shows a Notion API error like:
Provided database_id 3a0e5ea6-3f43-8060-8fce-fe7061855e75 is a page, not a database.Use the pages API instead, or pass the ID of the database itself.
the argument shape is correct, but the ID in parent.database_id points to a Notion page, not a database. Two ways to fix it:
-
You meant a database — open the database as its own full-page view in Notion (not an embedded/linked view inside another page) and copy the ID from that page's URL. A linked database view shown inside a page has a different ID than the actual source database, which is the usual cause of this mix-up.
-
You meant that page — switch
parenttopage_idinstead ofdatabase_id. Pages created directly under a page (rather than as database rows) only support atitleproperty, not custom columns like Company/Location:{"parent": { "page_id": "3a0e5ea6-3f43-8060-8fce-fe7061855e75" },"pages": [{ "properties": { "title": "{title} at {company}" }, "content": "{description}" }]}
Example — Post a summary to Slack
{"mcpTool": "send_message","mcpArguments": { "channel": "#jobs", "text": "{message}" },"mcpMessageTemplate": "Found {jobCount} jobs for \"{keyword}\":\n\n{jobsText}"}
📦 Output Fields
Each dataset item is a normalized job listing:
| Field | Description |
|---|---|
source | Which job board the listing came from |
title | Job title |
company | Hiring company name |
location | Location text as reported by the source |
remote | true/false/null if remote status is unknown |
job_type | Normalized: fulltime, parttime, contract, internship, or unknown |
salary | Salary as reported (raw text or constructed range) |
description | Cleaned job description/snippet |
url | Link to the original listing |
posted_date | ISO date the job was posted, if available |
tags | Skill/category tags from the source, if any |
scraped_at | ISO timestamp when this Actor collected the listing |
Example Output
{"source": "remotive","title": "Senior Data Engineer","company": "Acme Corp","location": "Remote (US)","remote": true,"job_type": "fulltime","salary": "$130,000 - $160,000","description": "We're looking for a Senior Data Engineer to build and maintain our data pipelines...","url": "https://remotive.com/remote-jobs/data/senior-data-engineer-12345","posted_date": "2026-07-10T00:00:00+00:00","tags": ["python", "sql", "airflow"],"scraped_at": "2026-07-15T09:00:00+00:00"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel directly from the Console or via the API.
🔌 Integrations & Delivery
Deliver jobs into any MCP connector you've authorized in Apify — no glue code, no webhooks:
- Notion — create a page per job, or one summary page per search (use
chunkedmode for large result sets so Notion never times out) - Slack / Discord — post individual jobs or a single search summary to a channel
- Airtable / Google Sheets — append a structured row per job
- Jira / Linear / GitHub — open tasks or issues from job listings
- …or any other MCP-compatible connector
Credentials stay private — delivery runs through the Apify MCP Proxy, so the Actor never sees your connector tokens. You can also consume the dataset directly via the Apify API, or wire it into n8n, Zapier, and Make.
💰 Pricing / Cost Estimation
This Actor makes lightweight HTTP/JSON calls (no headless browser) for nearly every source, so runs are fast and cheap on any Apify plan, including the free tier. Cost scales mainly with max_results and the number of sources selected — the default sources (no setup needed) typically finish a 100-result run in well under a minute. Enabling indeed adds noticeably more compute time (it drives a real headless browser) but no extra Apify cost beyond that compute time.
🛠️ Tips and Advanced Options
- Leave
sourcesat the default ten (add Arbetsformedlingen if you're searching Sweden) for the fastest, most reliable runs — none of them need any setup and none are anti-bot protected. - Adzuna, USAJobs, Reed.co.uk, Jooble, Arbeitsagentur, France Travail, and The Muse all work with no configuration — the Actor already has access set up, or they're fully keyless. Set your own key in the matching optional field if you'd rather use your own account (e.g. for higher rate limits).
arbeitsagentur,france_travail, andvdabare best-effort sources — useful when they work, but don't rely on them as your only source.freelancer,foundit,bayt,jobbank,jobs_ch,kariyer,talent_com,onlinejobsph, andglintsare also best-effort, fully keyless sources that scrape each site's own public pages or internal (undocumented) endpoints rather than a documented API — coverage and reliability vary by site, and several are scoped to a specific country/region regardless of yourcountryinput (Foundit and Job Bank scrapers in particular ignorecountry/locationfor search, relying on the centrallocationfilter to narrow results afterward).cv_libraryis best-effort and the least reliable source here — its real search flow sits behind a session/JS-driven process a plain HTTP scraper can't reliably reach, so expect little or no data from it.talroo(Jobs2Careers, US-only) has no built-in or keyless fallback — it requires your own free Publisher ID/Password. Without those set, this source is silently skipped.indeedruns a real headless browser instead of a plain HTTP request, since Indeed's pages are JS-rendered and behind bot detection — it's slower and more compute-intensive, so it's off by default. It requests its own Residential proxy automatically if you leaveproxyConfigurationunset.- Keyword matching requires all words in your keyword to appear somewhere in the job's title, company, description, or tags — use shorter, broader keywords if you're getting too few results.
- Raise
max_resultsif you enable more sources, since results are pooled, filtered, and de-duplicated across all of them before the limit is applied. - Not currently supported: large commercial boards like LinkedIn, Glassdoor, ZipRecruiter, Naukri, Totaljobs, Stepstone, and Jobstreet aren't included — most require paid partner/enterprise API access or run behind heavy anti-bot protection that can't be reliably or safely scraped. A custom integration can be added on request if you have a paid API contract with one of these providers.
❓ FAQ, Disclaimers, and Support
Is this legal? This Actor queries public APIs and RSS feeds by default (Remotive, RemoteOK, Arbeitnow, Jobicy, We Work Remotely, The Muse, Adzuna, USAJobs, Reed, Jooble). Every optional source beyond that — Indeed, Freelancer.com, Foundit, Bayt.com, Job Bank, jobs.ch, kariyer.net, Talent.com, OnlineJobs.ph, Glints, and CV-Library — either drives a headless browser or scrapes public pages rather than calling an official developer API, and each is disabled by default: enable them at your own discretion and review the target site's terms of use first. Talroo/Jobs2Careers uses its official, documented Search API under a Publisher account you apply for and agree to terms with directly.
Why did a source return zero results? Some sources (like Indeed) actively block automated requests and may intermittently return partial or no data — this is logged clearly in the run log and never stops the rest of the Actor from completing.
Can I run this on a schedule or trigger it via API? Yes — use Apify's built-in Scheduler, or call the Actor via the API/webhooks to integrate results into your own systems.
Email: bhavin.shah@techforceglobal.com
Need a Custom Pipeline?
Want more sources, scheduled refreshes, deeper enrichment, or a full data-warehouse integration?
📅 Book a Free 15-min Consultation
Made with ❤️ by Techforce Specialists in High-Performance Web Scrapers and AI Automation.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by any of the job boards it queries. All trademarks are property of their respective owners. The Actor collects only publicly available job listing data and does not log into, or scrape behind the authentication of, any platform. Use the data responsibly and in compliance with applicable laws (including GDPR/CCPA) and the terms of the platforms you operate on.