Job Postings Scraper — Greenhouse, Lever, Ashby, Workable avatar

Job Postings Scraper — Greenhouse, Lever, Ashby, Workable

Pricing

Pay per usage

Go to Apify Store
Job Postings Scraper — Greenhouse, Lever, Ashby, Workable

Job Postings Scraper — Greenhouse, Lever, Ashby, Workable

Scrape live job postings straight from company career boards (Greenhouse, Lever, Ashby, Workable, Recruitee) using their stable public JSON APIs — not fragile HTML. One unified schema across all five ATS providers: title, location, remote flag, department, compensation (where published), apply UR...

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Sturdy Data

Sturdy Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Job Postings Scraper — Greenhouse, Lever, Ashby, Workable, Recruitee

Scrape live job postings straight from company career boards — via each ATS provider's stable, public JSON API. Not LinkedIn HTML that breaks every month. One unified schema across all five providers.

Built for: recruiting intelligence, hiring-signal lead generation ("who is hiring SDRs right now?"), job aggregators, market/comp research.

Why this scraper

LinkedIn and Indeed scrapers are the lowest-rated job actors on the store — they fight anti-bot walls and silently miss records, apply URLs, and fields. This actor goes to the source: the ATS boards companies actually publish to. Those JSON endpoints are versioned public APIs that have been stable for years.

  • Five ATS providers, one schema. Greenhouse, Lever, Ashby, Workable, Recruitee.
  • Apply URL always included — it's the canonical posting URL from the ATS itself.
  • Compensation captured where published (Lever salary ranges, Ashby compensation tiers).
  • No proxies needed, no anti-bot roulette — near-100% success rate by construction.
  • Per-board run summary (RUN_SUMMARY in the key-value store) tells you exactly which boards succeeded, how many jobs each returned, and any errors. No silent failures.
  • robots.txt respected. SmartRecruiters is intentionally not supported — its robots.txt blocks all crawlers except LinkedInBot, so we leave it alone.

Input

FieldTypeDefaultNotes
boardUrlsarrayCareer board URLs, one per company (see formats below). Shorthand provider:company also works.
includeDescriptionbooleantrueFull plain-text description per posting.
maxJobsPerBoardinteger500Safety cap per company.

Supported URL formats:

https://boards.greenhouse.io/<company> or greenhouse:<company>
https://jobs.lever.co/<company> or lever:<company>
https://jobs.ashbyhq.com/<company> or ashby:<company>
https://apply.workable.com/<company> or workable:<company>
https://<company>.recruitee.com or recruitee:<company>
{
"boardUrls": ["https://boards.greenhouse.io/gitlab", "lever:spotify", "ashby:openai"],
"includeDescription": true
}

Output schema

One dataset item per job posting:

{
"source": "lever",
"company": "spotify",
"companyName": null,
"id": "5c2a4bb4-cb46-4c39-...",
"title": "Backend Engineer, Podcast Platform",
"url": "https://jobs.lever.co/spotify/5c2a4bb4-...",
"location": "Stockholm, Sweden",
"secondaryLocations": ["London, UK"],
"remote": false,
"department": "Engineering",
"team": "Podcast Mission",
"employmentType": "Full-time",
"compensation": "90000-120000 EUR per-year-salary",
"publishedAt": "2026-06-12T09:31:00.000Z",
"updatedAt": null,
"description": "Spotify is looking for ... (plain text)",
"scrapedAt": "2026-07-04T10:00:00.000Z"
}

Fields that a provider does not publish are null — never guessed. remote is true/false when the ATS states it, null when unknown.

Pricing

Pay per result. 1 result = 1 job posting.

JobsCost at $1.00 / 1,000
1,000$1.00
25,000$25.00
100,000$100.00

Compare: LinkedIn job actors run $29.99/month rental plus usage — and miss apply URLs.

Finding boards to scrape

Any company careers page that redirects to boards.greenhouse.io/..., jobs.lever.co/..., jobs.ashbyhq.com/..., apply.workable.com/... or *.recruitee.com works. Paste the URL as-is.

Compliance & fair use

These are public, unauthenticated JSON APIs that the providers publish precisely so postings can be syndicated. No login walls, no rate-limit evasion — requests are throttled to one per domain per second and retried politely on transient failures.

Why no SmartRecruiters or LinkedIn/Indeed. SmartRecruiters' robots.txt disallows every crawler except LinkedInBot from the entire site — so we don't scrape it. LinkedIn and Indeed are excluded by design; see the FAQ.

Using from API / MCP / AI agents

curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "boardUrls": ["greenhouse:gitlab"], "includeDescription": false }'

Works out of the box with the Apify MCP server — the input schema is fully described, so AI agents can call it as a tool ("get all open jobs at company X").

FAQ

A board returned zero jobs — why? Check RUN_SUMMARY in the run's key-value store: either the company slug is wrong (typo, renamed board) or the board is empty. The error string is recorded per board.

Can you add Indeed/LinkedIn? No — by design. This actor only uses stable ATS APIs; that is why it doesn't break.

Another ATS you need? Open an issue — adding a provider with a public board API typically ships within a week (as long as its robots.txt allows it).

What about SmartRecruiters? Not supported. Its robots.txt disallows every crawler except LinkedInBot. We won't spoof a user agent to get around that.

Changelog

  • 0.1.0 (2026-07) — Initial release: Greenhouse, Lever, Ashby (incl. compensation), Workable, Recruitee. Unified schema, per-board run summary, per-domain crawl delay.

Maintained by Sturdy Data — boring, reliable scrapers. Report issues in the Issues tab; we respond within 24 hours.