Company Jobs Scraper (Greenhouse, Lever, Ashby & more) avatar

Company Jobs Scraper (Greenhouse, Lever, Ashby & more)

Pricing

$1.50 / 1,000 results

Go to Apify Store
Company Jobs Scraper (Greenhouse, Lever, Ashby & more)

Company Jobs Scraper (Greenhouse, Lever, Ashby & more)

All open jobs from company career boards across six applicant-tracking systems in one normalized schema. Paste careers URLs or just company slugs; the Actor finds the board.

Pricing

$1.50 / 1,000 results

Rating

0.0

(0)

Developer

Roei Amos

Roei Amos

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Type a company name and get all its open jobs. One run covers Greenhouse, Lever (US and EU), Ashby, Workable, SmartRecruiters and Recruitee, and every job comes back in one clean schema. You don't need to know which hiring system a company uses: a bare name such as ramp is detected automatically. It costs $1.50 per 1,000 jobs.

What you can use it for

  • Hiring-signal lead lists. Find companies hiring SDRs, data engineers or their first marketer, and pitch them while the budget is open.
  • Job boards and job alerts. Feed a niche board (remote, AI, climate, your country) straight from company career pages, with no aggregator lag.
  • Competitor and market intel. Track how many roles competitors open by department, location and seniority, week over week.
  • Job seekers and recruiters. Monitor a target list of companies and get only new roles with Posted within (days).
  • AI agents. Call it as a tool through Apify MCP to answer questions like "Is Stripe hiring backend engineers in Dublin?".

How it works

Paste careers-page URLs or just company slugs. The Actor reads each company's official public job board API, the same one their own careers site uses, and returns every open role: title, department, team, location, remote flag, employment type, salary (when published), posting date and links. You can filter by title keywords, location, remote and posting age. Turn on Include description for full plain-text job descriptions.

Because the data comes from official board APIs, runs are fast, cheap and stable. There's no browser, no login and no blocking.

Input

FieldTypeDescriptionDefault
companies (required)arrayOne per line: a careers board URL (boards.greenhouse.io/airbnb, jobs.lever.co/spotify, jobs.ashbyhq.com/ramp, apply.workable.com/huggingface, jobs.smartrecruiters.com/BoschGroup, bunq.recruitee.com), a pinned slug like lever:spotify, or a bare slug like ramp to auto-detect the system.
keywordsarrayKeep jobs whose title contains any of these (case-insensitive).
locationsarrayKeep jobs whose location or country contains any of these, e.g. London, Remote, US.
remoteOnlybooleanKeep only jobs the board marks as remote.false
postedWithinDaysintegerKeep jobs posted in the last N days. Empty means any time.
includeDescriptionbooleanAdd the full job description as plain text (makes items much larger).false
maxResultsintegerStop after this many jobs. 0 means no limit. You are charged per job.1000

Output

Each result is one dataset item:

FieldTypeDescription
idstringStable id: ats:company:jobId
titlestringJob title
companystringBoard slug
companyNamestring, nullCompany display name when the board provides it
atsstringgreenhouse, lever, ashby, workable, smartrecruiters or recruitee
departmentstring, nullDepartment
teamstring, nullTeam
locationstring, nullLocation text (multiple joined by |)
countrystring, nullCountry or country code
remoteboolean, nullRemote flag from the board
workplaceTypestring, nullremote, hybrid or on-site when provided
employmentTypestring, nullFull-time, contract, etc.
salarystring, nullSalary range when published
urlstringJob page
applyUrlstring, nullApplication page
postedAtstring, nullPublished (ISO 8601)
updatedAtstring, nullLast updated (ISO 8601)
descriptionstring, nullPlain-text description (when enabled)

Example item

{
"id": "greenhouse:airbnb:8184174",
"title": "Account Manager",
"company": "airbnb",
"companyName": "Airbnb",
"ats": "greenhouse",
"department": "Business Development",
"team": null,
"location": "London, United Kingdom",
"country": null,
"remote": false,
"workplaceType": null,
"employmentType": null,
"salary": null,
"url": "https://careers.airbnb.com/positions/8184174?gh_jid=8184174",
"applyUrl": "https://careers.airbnb.com/positions/8184174?gh_jid=8184174",
"postedAt": "2026-09-09T08:35:19.000Z",
"updatedAt": "2026-09-30T00:00:54.000Z"
}

Example input

{
"companies": [
"https://boards.greenhouse.io/airbnb",
"https://jobs.lever.co/spotify",
"https://jobs.ashbyhq.com/ramp",
"https://apply.workable.com/huggingface",
"https://bunq.recruitee.com",
"https://jobs.smartrecruiters.com/BoschGroup"
],
"maxResults": 600
}

Pricing

Pay per result: $1.50 per 1,000 results. You are charged once per item in the dataset (event result), plus Apify's small per-run start fee. Platform compute is included. Set Max results or a maximum run cost to cap spend; the Actor stops cleanly when either is reached.

FAQ

Which companies are supported?

Any company whose career site runs on Greenhouse, Lever (US or EU), Ashby, Workable, SmartRecruiters or Recruitee. That covers a large share of tech and startup hiring. If you only know the company name, enter its slug (e.g. ramp) and the Actor checks all six systems.

How do I find a company's slug?

Open its careers page and look at the job links: boards.greenhouse.io/airbnb → airbnb, jobs.lever.co/spotify → spotify. You can paste the full URL instead.

How fresh is the data?

Live: every run reads the company's job board at that moment. Schedule it daily and filter by Posted within (days) to get only new roles.

Why did a company return nothing?

Either it uses a different hiring system, or the slug is wrong. The run log lists inputs with no job board found; if no input matches at all, the run fails with a clear message so you are not charged for an empty result.

Reliability

Runs that return no data, mostly incomplete items, or mostly failed requests are marked FAILED with a reason instead of succeeding with an empty dataset. Each run stores a RUN_SUMMARY record in its key-value store.