All Jobs Scraper avatar

All Jobs Scraper

Under maintenance

Pricing

from $3.10 / 1,000 results

Go to Apify Store
All Jobs Scraper

All Jobs Scraper

Under maintenance

All-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

Techforce Global

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 keywordkeyword is 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_results cap 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 CaseTime SavedWhat You Get
Job search2–4 hrs/searchOne de-duplicated list instead of repeating the same search on ten sites
Recruiting & sourcing3–6 hrs/roleCompetitor hiring activity and open-role visibility across boards and regions
Market & compensation research4–8 hrs/reportStructured salary, location, and remote-share data by role, ready to analyze
Product / dashboard feedsOngoingA clean JSON feed you can refresh on a schedule via the Apify API

🚀 How to Use

  1. Click Try for free (or Start) on this Actor's page.
  2. Enter a Keyword (e.g. "Data Engineer") — this is the only required field.
  3. (Optional) Set Location or Country, toggle Remote only, pick a Job type, and set Max results (default: 100).
  4. (Optional) Choose which Sources to query, or leave the ten default sources (all work with zero setup).
  5. (Optional) Pick an MCP connector under Delivery to push results into Notion, Slack, Airtable, etc.
  6. Click Start and wait for the run to finish.
  7. 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

FieldTypeRequiredDescription
keywordString✔️ YesJob title, skill, or company name to search for.
locationStringOptionalFree-text city/region filter. Leave blank for a broad/remote search.
countryEnumOptionalScopes country-aware sources (Adzuna, USAJobs) and acts as a location fallback for others. Leave blank for each source's own broad default.
remote_onlyBooleanOptionalKeep only remote (or unspecified-remote) jobs. Default: false.
job_typeEnumOptionalall, fulltime, parttime, contract, internship. Default: all.
max_resultsIntegerOptionalCap on total results across all sources, after pooling and de-duplication. Default: 100.
sourcesArrayOptionalWhich job boards to query — see the source list above. Defaults to the ten zero-setup sources.
adzuna_app_id / adzuna_app_keyStringOptionalAdzuna already works out of the box; set your own to use your own account instead.
usajobs_email / usajobs_api_keyStringOptionalUSAJobs already works out of the box; set your own to use your own account instead.
reed_api_keyStringOptionalReed.co.uk (UK) already works out of the box; set your own to use your own account instead.
jooble_api_keyStringOptionalJooble already works out of the box; set your own to use your own account instead.
arbeitsagentur_api_keyStringOptionalArbeitsagentur (Germany, best-effort) already works out of the box; set your own to use your own account instead.
francetravail_client_id / francetravail_client_secretStringOptionalFrance Travail (France, best-effort) already works out of the box; set your own to use your own account instead.
vdab_client_id / vdab_bearer_tokenStringOptionalVDAB (Belgium, best-effort) is attempted keyless by default; add these (from developer.vdab.be) if the keyless attempt returns a 401.
themuse_api_keyStringOptionalThe Muse works keyless (500 req/hour); add your own free key for a higher 3,600 req/hour limit.
talroo_publisher_id / talroo_publisher_passwordStringRequired for TalrooTalroo/Jobs2Careers (US only) has no built-in fallback — apply free at talroo.com/publish and enter your Feed Manager credentials.
talroo_ipStringOptionalEnd-user IP Talroo's API expects for location/analytics; a generic default is used if unset.
proxyConfigurationObjectOptionalApify Proxy. indeed requests its own Residential proxy automatically if unset; several best-effort sources can also use it if configured.
mcpConnectorConnectorOptionalDeliver scraped jobs into a connector you've authorized (Notion, Slack, Airtable, etc.) — see MCP connector delivery below.
deliveryModeEnumOptionalperJob, chunked, summary, or none (default) — how results are sent to the connector.
mcpToolStringOptionalName of the tool to call on the connector.
mcpArgumentsObjectOptionalArguments passed to that tool, with {placeholder} support.
mcpMessageTemplateStringOptionalTemplate 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.

{
"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:

  • deliveryModeperJob (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), or none.
  • 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.

PlaceholdersperJob 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 nested rich_text/title objects) — 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 parent to page_id instead of database_id. Pages created directly under a page (rather than as database rows) only support a title property, 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:

FieldDescription
sourceWhich job board the listing came from
titleJob title
companyHiring company name
locationLocation text as reported by the source
remotetrue/false/null if remote status is unknown
job_typeNormalized: fulltime, parttime, contract, internship, or unknown
salarySalary as reported (raw text or constructed range)
descriptionCleaned job description/snippet
urlLink to the original listing
posted_dateISO date the job was posted, if available
tagsSkill/category tags from the source, if any
scraped_atISO 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 chunked mode 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 sources at 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, and vdab are 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, and glints are 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 your country input (Foundit and Job Bank scrapers in particular ignore country/location for search, relying on the central location filter to narrow results afterward).
  • cv_library is 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.
  • indeed runs 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 leave proxyConfiguration unset.
  • 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_results if 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.