Career Site Jobs API: Greenhouse, Lever, Ashby & more avatar

Career Site Jobs API: Greenhouse, Lever, Ashby & more

Pricing

from $2.00 / 1,000 jobs

Go to Apify Store
Career Site Jobs API: Greenhouse, Lever, Ashby & more

Career Site Jobs API: Greenhouse, Lever, Ashby & more

Get every open job from company career sites on Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee and Workable. Paste names or URLs; the platform is detected. Salary, remote, filters, only-new mode. $2 per 1,000 jobs.

Pricing

from $2.00 / 1,000 jobs

Rating

0.0

(0)

Developer

North Eng

North Eng

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Career Site Jobs API — Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee & Workable

Get every open job straight from company career sites in one clean, uniform format. Paste company names or career site URLs; the Actor finds which applicant-tracking system (ATS) each company uses and reads its official public job-board feed — the same data the company's own careers page shows. No browser or proxy is needed, so a typical run of a few companies finishes in seconds.

Supported platforms: Greenhouse · Lever (US and EU) · Ashby · SmartRecruiters · Recruitee · Workable

Price: $2 per 1,000 jobs, nothing for companies that cannot be found. Not supported: Workday, iCIMS, Taleo and other systems (see limits).

Quick start

  1. Paste company names or career site URLs into Companies (one per line).
  2. Optionally add filters (keywords, locations, remote only, posted within N days).
  3. Click Start. Jobs appear in the Output tab within seconds; export them as JSON, CSV, Excel or XML, or read them through the API.

What you can do with it

  • Job boards and aggregators: pull fresh postings from hundreds of companies on a schedule.
  • Recruiting and sales intelligence: see who is hiring, for which teams, where, and at what pay.
  • Job alerts: turn on Only new jobs and schedule the Actor: each run returns only jobs you have not received yet, and you pay only for those.
  • Market research: salary ranges, remote share, hiring by department or country, across many companies.

Input

FieldWhat it does
CompaniesOne per line: a board name (stripe), platform:name (lever:spotify, ashby:ramp, smartrecruiters:Ubisoft2), a board URL (https://boards.greenhouse.io/figma, https://jobs.lever.co/spotify, https://jobs.ashbyhq.com/ramp, https://bunq.recruitee.com, https://apply.workable.com/huggingface) or a company careers page that links to its board.
Platform for bare namesDetect automatically (default) or force one platform for bare names.
Keywords / Exclude keywordsWhole-word title match (optionally also the description). java does not match JavaScript.
Locations, Remote only, Departments, Employment types, Posted within (days)Narrow the results. Many boards do not state the employment type; such jobs are kept when Full-time is selected.
Only new jobs + Memory keyDeliver only jobs not delivered before with the same key.
Max jobs / Max jobs per companyCost control. Per-company limits keep the newest jobs.
Include description text / HTMLFull description as plain text (default) and/or HTML.

Example input:

{
"companies": ["stripe", "https://jobs.lever.co/spotify", "ashby:ramp", "https://www.figma.com/careers/"],
"keywords": ["engineer", "data scientist"],
"locations": ["Remote", "New York", "London"],
"postedWithinDays": 14,
"maxJobs": 500
}

Output

One row per job, with the same fields for every platform:

{
"id": "ashby:ramp:a5c7c68a-33f9-4f78-929e-29b58f26d22a",
"jobId": "a5c7c68a-33f9-4f78-929e-29b58f26d22a",
"title": "People Business Partner, G&A",
"company": "Ramp",
"companySlug": "ramp",
"platform": "ashby",
"department": "People & Talent",
"team": "People Business",
"location": "New York, NY (HQ)",
"locations": ["New York, NY (HQ)"],
"country": "USA",
"workplaceType": "hybrid",
"remote": false,
"employmentType": "full-time",
"employmentTypeRaw": "FullTime",
"salaryMin": 134000,
"salaryMax": 236000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salaryText": "$134K - $236K",
"salarySource": "platform",
"postedAt": "2026-10-28T22:02:17.374Z",
"updatedAt": null,
"url": "https://jobs.ashbyhq.com/ramp/a5c7c68a-33f9-4f78-929e-29b58f26d22a",
"applyUrl": "https://jobs.ashbyhq.com/ramp/a5c7c68a-33f9-4f78-929e-29b58f26d22a/application",
"requisitionId": null,
"descriptionText": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams…",
"scrapedAt": "2026-10-29T10:22:34.796Z"
}
  • Every job row has the same fields on every platform; a value the board does not publish is null (never missing or guessed).
  • id is stable across runs (platform:board:jobId): use it to deduplicate or join.
  • workplaceType is remote, hybrid, onsite or null (not stated); remote is true only for fully remote jobs.
  • employmentType is normalised to full-time, part-time, contract, internship or temporary; the platform's own label is in employmentTypeRaw.
  • Salary: salarySource is platform when the ATS publishes a structured range (Ashby, Lever, Recruitee, Greenhouse pay transparency), or description when a range with a currency was found in the job text. Otherwise the salary fields are null — nothing is guessed.
  • Companies that cannot be found or loaded get one free error row (input, errorCode, error): NOT_FOUND (no board with that name), PLATFORM_NOT_DETECTED (a careers page with no supported board on it), UNSUPPORTED_PLATFORM (Workday, iCIMS, Taleo and similar), FETCH_FAILED (the board did not answer), INVALID_INPUT, BLOCKED_URL (private or local addresses).

The run summary (key-value store record OUTPUT) lists, per company, the platform found, jobs on the board, jobs matching your filters, jobs delivered and — in only-new mode — new and closed jobs.

Only new jobs (scheduled runs)

With Only new jobs on, the Actor remembers the IDs it delivered under your Memory key (in your named key-value store career-site-jobs-api-state). The next run with the same key skips them, so a daily schedule returns just the new postings. The first run delivers every matching job. Jobs that disappeared from a board since the last run are listed under closedJobs in the run summary, free. Jobs not delivered because of a limit are not remembered, so they come in a later run. Use a different key for each separate search, and avoid running two runs with the same key at the same time.

Pricing

Pay per result: $0.002 per job ($2 per 1,000 jobs), plus Apify's standard Actor start fee ($0.00005 per run start). Error rows, duplicates, jobs skipped by your filters and jobs already delivered in only-new mode are not charged. Set a maximum cost per run in the run options: the Actor stops cleanly when it is reached, and you are never charged for a job that was not saved. Platform usage (compute) is included in the price.

What a run costs is simply the number of jobs delivered × $0.002 (+ $0.00005 per start):

Example runJobs deliveredCost
3 companies, 20 newest jobs each60$0.12
Any search with Max jobs = 500at most 500at most $1.00
Full export of a board with 1,000 open jobs1,000$2.00
Scheduled Only new jobs runonly jobs that appeared since the last run$0.002 each; $0.00005 when nothing is new

Use it from code, automations or an AI agent

  • One API call, jobs back as JSON: POST https://api.apify.com/v2/acts/<this Actor>/run-sync-get-dataset-items?token=<YOUR_TOKEN> with the input as the body (for runs that finish within 5 minutes; see the API tab for the JavaScript, Python and CLI clients).
  • A feed for your job board: save your input as a task, schedule it, and read https://api.apify.com/v2/actor-tasks/<task id>/runs/last/dataset/items?status=SUCCEEDED&format=json (or format=csv, xml, xlsx) to get the latest run's jobs.
  • AI agents (MCP): the Actor works with the Apify MCP server. The cost of a run is predictable: at most maxJobs × $0.002, and companies that are not found are free.
  • Integrations: Make, Zapier, n8n, Slack, Google Drive and webhooks are available from the Integrations tab.

How it works and limits

  • Data comes from each platform's official public job-board API (for example Greenhouse's job board API, Lever's postings API, Ashby's posting API). Only jobs the company publishes publicly are available.
  • A bare name is checked on all six platforms; the board with the most jobs wins and other matches are noted in the summary (alsoFoundOn). If two companies share a name, pass platform:name or the board URL instead.
  • A careers page URL on the company's own domain works when the page links to its board (embedded Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee or Workable links). Otherwise the Actor tries the domain name as the board name.
  • SmartRecruiters lists carry no description: the Actor reads each delivered job's detail record (only for jobs you receive). Greenhouse pay ranges work the same way (switch off "Greenhouse pay ranges" for maximum speed).
  • Not supported: Workday, iCIMS, Taleo, SuccessFactors, Personio and other systems (such URLs get a free error row); LinkedIn or Indeed listings.
  • Runs are restart-safe: if Apify migrates the run to another server, delivered jobs are not delivered or charged again.

FAQ

Do I need proxies or an API key? No. All feeds are public and served by the platforms' APIs.

How fresh is the data? Live: every run reads the boards at that moment, so a job posted a minute ago is included and a closed job is not.

Can I search all companies at once, without a list? No. This Actor reads the boards of the companies you name, live and in full. If you need a search across every company, a job database product is the better fit; if you know your target companies, this is the cheaper and fresher way.

My run returned 0 jobs. Why? The run's status message says why: the boards had no open jobs, your filters removed them all (it lists which filter removed how many), or, in only-new mode, nothing was new since the last run.

How many companies per run? Up to 1,000. Bare names are checked on all six platforms, so URLs or platform:name entries are a little faster.

Why is a company not found? Its board name may differ from its brand (for example Ubisoft2 on SmartRecruiters). Open the company's careers page, click a job, and paste that URL or the board URL.