Multi-ATS Jobs + Company Emails Scraper avatar

Multi-ATS Jobs + Company Emails Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Multi-ATS Jobs + Company Emails Scraper

Multi-ATS Jobs + Company Emails Scraper

Turn job listings into a lead list. Scrape open roles from any company across 10 ATS platforms — Greenhouse, Lever, Ashby, Workday, Workable, Recruitee & more — by URL, company name, or an uploaded sheet of links. ATS auto-detected, full descriptions, plus company contact emails.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Categories

Share

Multi-ATS Jobs + Company Emails Scraper 🧭✉️

Scrape open jobs from any company across 10 major ATS platforms — Greenhouse, Lever, Ashby, SmartRecruiters, Workday, Workable, Recruitee, Breezy, Personio & BambooHR — and optionally attach the hiring company's contact email for lead generation. Paste a board URL or just a company name; the ATS is auto-detected. One unified schema across every platform.

How the Multi-ATS Jobs + Emails Scraper works


Why use this scraper

  • 10 ATS platforms, one actor, one schema. Greenhouse, Lever, Ashby, SmartRecruiters, Workday, Workable, Recruitee, Breezy, Personio, BambooHR — every job comes back in the same normalized shape, so you write one parser.
  • Auto-detects the ATS. Don't know which ATS a company uses? Give the company name — the actor probes the supported platforms and picks the right one. Or paste any board URL and it routes by host.
  • Company contact email (lead-gen). Flip on enrichEmails to turn a job feed into a sales/recruiting lead list — each company gets its contactWebsite plus a best-effort public contactEmail (e.g. a careers@/info@ address) where one is published. A hiring-signal bonus, not a guaranteed per-row contact — coverage varies.
  • Full job detail. Title, full description (HTML + text), compensation where shown, all locations, department, employment type, apply URL.
  • Built-in filters. Title, location, department, remote, posted-after — applied before billing, so you only pay for matches.
  • Fast & cheap. Public ATS APIs, no anti-bot, no browser.

Supported ATS platforms

ATSInput exampleNotes
Greenhousehttps://boards.greenhouse.io/stripe or stripeFull content inline
Leverhttps://jobs.lever.co/spotify or spotifyFull content inline
Ashbyhttps://jobs.ashbyhq.com/ramp or rampFull content inline
SmartRecruitershttps://careers.smartrecruiters.com/BoschGroup or BoschGroupCompany ID is case-sensitive
Workdayhttps://{tenant}.wd5.myworkdayjobs.com/{Site}URL only (needs tenant + site)
Personiohttps://vodeno.jobs.personio.com or vodenoPublic XML feed
BambooHRhttps://soundstripe.bamboohr.com or soundstripeCareers API
Workablehttps://apply.workable.com/pearltalent or pearltalentDetail fetched per job
Recruiteehttps://{company}.recruitee.com or {company}Full content inline
Breezyhttps://{company}.breezy.hr or {company}Description from posting page

Mix any of these — URLs and bare names — in a single run.


Use cases

  • Sales & recruiting lead-gen — companies that are hiring are buying signals; pair each role with the company's contact email for targeted outreach.
  • Job boards & aggregators — ingest fresh, structured roles from hundreds of companies across every major ATS in one pass.
  • Talent & market intelligence — hiring velocity, remote-vs-onsite mix, departments, and pay bands across a company portfolio.
  • CRM enrichment — append live hiring activity + a contact to your account list.

How it works

  1. Resolve each input — a URL routes to its ATS by host; a bare company name is auto-detected by probing the supported platforms in order.
  2. Fetch that company's jobs from the ATS's public API (one call for inline ATSs; list + per-job detail for SmartRecruiters/BambooHR).
  3. Normalize every job to one common schema.
  4. Enrich (optional) — discover the company website and attach a contact email.
  5. Push one row per job.

Input configuration

FieldTypeDefaultDescription
startUrlsarrayATS board/job URLs (any of the 10 platforms).
organizationsarrayBare company names/slugs — ATS auto-detected.
inputUrlstringURL to an .xlsx / .csv / Google Sheet of career links or company names — parsed and merged with the lists.
enrichEmailsbooleanfalseAttach company contactEmail + contactWebsite (lead-gen).
maxItemsinteger5000Max jobs per URL / company (free runs limited to 100 total).
maxConcurrencyinteger10Companies processed in parallel.
titleKeyword / location / departmentstringClient-side filters (contains).
remoteOnlybooleanfalseKeep only remote jobs.
postedAfterstringKeep jobs published on/after YYYY-MM-DD.
includeDescriptionbooleantrueOff = leaner rows (and skips detail fetch for SmartRecruiters/BambooHR).
includeRawJsonbooleanfalseAttach the raw ATS payload.
proxyobjectOptional; not required (no anti-bot).

Example input

{
"organizations": ["stripe", "ramp", "vodeno"],
"startUrls": ["https://jobs.lever.co/spotify"],
"enrichEmails": true,
"maxItems": 1000,
"titleKeyword": "engineer"
}

Output

One row per job (normalized across all ATSs). With enrichEmails, the contact fields are added:

{
"ats": "greenhouse",
"org": "stripe",
"company": "Stripe",
"globalId": "greenhouse:stripe:7954688",
"title": "Backend Engineer",
"department": "Engineering",
"workplaceType": "Hybrid",
"isRemote": false,
"location": "San Francisco, CA",
"locations": ["San Francisco, CA"],
"descriptionHtml": "<p>…</p>",
"descriptionText": "…",
"publishedAt": "2026-06-19T12:11:02-04:00",
"jobUrl": "https://stripe.com/jobs/search?gh_jid=7954688",
"applyUrl": "https://stripe.com/jobs/search?gh_jid=7954688",
"contactEmail": "careers@stripe.com",
"contactWebsite": "stripe.com",
"emailEnrichment": { "website": "stripe.com", "emails": ["careers@stripe.com"] },
"scrapedAt": "2026-06-20T00:00:00.000Z"
}

Key output fields

FieldDescription
atsSource platform (greenhouse/lever/ashby/smartrecruiters/workday/workable/recruitee/breezy/personio/bamboohr).
companyHiring company name.
globalIdStable ats:org:jobId key for cross-run dedup.
title / department / employmentType / workplaceType / isRemoteCore job fields.
location / locationsPrimary + all locations.
descriptionHtml / descriptionTextFull description, HTML + plain text.
publishedAt / jobUrl / applyUrlDate + links.
contactEmail / contactWebsite / emailEnrichmentPresent when enrichEmails is on (lead-gen).

FAQ

How does auto-detect work? For a bare company name, the actor tries each supported ATS in order and uses the first that returns jobs. For a URL, it routes by hostname. SmartRecruiters company IDs are case-sensitive — pass the exact ID or a careers URL.

Do I need a proxy? No — these ATS APIs are public with no anti-bot.

How accurate is the contact email? Best-effort. It discovers the company website and harvests publicly published addresses (typically general inboxes like careers@ / info@); many companies publish none, so coverage varies. Off by default since it adds time/cost.

Can it scrape every company on an ATS? No — ATSs have no public directory of all boards. You supply the companies.


⚠️ Disclaimer

This actor collects only publicly available job-posting data exposed by each ATS's own public API, plus publicly available company contact details. It does not access private/authenticated data or bypass access controls. You are responsible for using the data in compliance with each platform's terms and applicable laws (GDPR/CCPA included), especially when using contact data for outreach.


SEO Keywords

multi-ATS scraper, ATS jobs scraper, Greenhouse Lever Ashby scraper, SmartRecruiters Personio BambooHR scraper, career page scraper, company jobs API, hiring signal scraper, lead generation jobs, recruiting leads, contact email enrichment, jobs plus company email, ATS job listing API, applicant tracking system scraper, careers page jobs, hiring intent data.