Multi-ATS Job Postings & Hiring-Signal Scraper avatar

Multi-ATS Job Postings & Hiring-Signal Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Multi-ATS Job Postings & Hiring-Signal Scraper

Multi-ATS Job Postings & Hiring-Signal Scraper

Scrape jobs from Greenhouse, Lever, Ashby & SmartRecruiters in one unified schema, plus per-company hiring signals (departments, locations, remote %, hiring velocity). Built for sales intelligence, recruiting, market research & AI agents. No API key, near-zero maintenance.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Alexandr Maier

Alexandr Maier

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull job postings from Greenhouse, Lever, Ashby, and SmartRecruiters into one unified schema, and get hiring signals per company: department breakdown, locations, remote %, and how fast they're hiring.

Most job scrapers cover a single ATS and just dump raw postings. This one normalizes four ATS platforms into one format and adds the analytics layer that sales-intelligence, recruiting, and market-research teams actually pay for.

Data comes from each vendor's official public JSON API — no API key, no login, no proxy, no anti-bot. That makes it fast and near-zero maintenance: these endpoints rarely change.

What you get

Per job (unified across all four ATS):

{
"ats": "ashby",
"company": "ramp",
"id": "03e2d4e1-...",
"title": "Technical Consultant, Mid-Market",
"department": "Sales",
"team": "Solutions Consulting",
"location": "Remote (US)",
"remote": true,
"employmentType": "FullTime",
"publishedAt": "2026-07-07T20:47:09.753Z",
"url": "https://jobs.ashbyhq.com/ramp/03e2d4e1-..."
}

Per company (hiring signal summary):

{
"type": "company_signal",
"company": "spotify",
"ats": "lever",
"totalOpenRoles": 110,
"remoteRoles": 30,
"remoteShare": 27,
"rolesPostedLast30Days": 32,
"newestPostingAt": "2026-07-09T...",
"topDepartments": [{ "name": "Engineering", "count": 39 }, ...],
"topLocations": [{ "name": "London", "count": 14 }, ...]
}

How to find a company's token

The token is the identifier in a company's careers URL:

ATSCareers URL exampleTokenInput
Greenhouseboards.greenhouse.io/stripestripegreenhouse:stripe
Leverjobs.lever.co/spotifyspotifylever:spotify
Ashbyjobs.ashbyhq.com/ramprampashby:ramp
SmartRecruitersjobs.smartrecruiters.com/VisaVisasmartrecruiters:Visa

Input

FieldTypeDescription
companiesarray (required)"<ats>:<company>" entries, e.g. "greenhouse:stripe"
keywordsarrayKeep roles whose title (or body, if included) matches
locationsarrayKeep roles whose location contains a substring
departmentsarrayKeep roles in matching departments
remoteOnlybooleanRemote-flagged roles only
postedWithinDaysintegerOnly roles posted in the last N days (hiring-velocity monitoring)
includeDescriptionbooleanInclude full role text (bigger output)
signalsOnlybooleanOutput only the per-company summary, no individual rows

Example: monitor competitors' engineering hiring, last 30 days

{
"companies": ["greenhouse:stripe", "lever:spotify", "ashby:ramp"],
"departments": ["Engineering"],
"postedWithinDays": 30
}

Use cases

  • Sales intelligence — a company hiring 40 salespeople signals budget and expansion. Feed signals into your CRM.
  • Competitive intel — track which departments and locations competitors are growing.
  • Recruiting / talent — a fresh, deduplicated feed of open roles across your target companies.
  • AI agents (MCP) — "What is company X hiring for right now?" is one clean tool call with flat JSON back.
  • Market research — hiring velocity as a leading indicator across a sector.

Pricing (pay-per-event)

EventPrice
Actor start$0.005
Company processed (with signals)$0.01
Job row saved$0.00015

Scanning 10 companies with 2,000 total roles ≈ $0.005 + $0.10 + $0.30 = **$0.40**. Use signalsOnly to pay only per company when you just need the aggregates.

Honest notes

  • Covers companies hosted on these four ATS platforms. It does not scrape LinkedIn, Indeed, or company career pages built on other systems.
  • Uses official public endpoints only. No login, no personal data, no anti-bot evasion.
  • includeDescription isn't available for SmartRecruiters in this version (would need a per-role call).
  • All source-specific logic lives in src/ats.js — the only file to touch if an ATS ever changes its format. Adding a new ATS = one function.