Company Careers Jobs Scraper - Greenhouse, Lever, Ashby avatar

Company Careers Jobs Scraper - Greenhouse, Lever, Ashby

Pricing

$1.50 / 1,000 job saveds

Go to Apify Store
Company Careers Jobs Scraper - Greenhouse, Lever, Ashby

Company Careers Jobs Scraper - Greenhouse, Lever, Ashby

Get every open job from company careers pages on Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee. Paste a careers URL or company name. Title, location, salary, remote, department, description.

Pricing

$1.50 / 1,000 job saveds

Rating

0.0

(0)

Developer

Wood Between Studio

Wood Between Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Features

Limited permissions

Share

Company Careers Jobs Scraper: Greenhouse, Lever, Ashby, Workable, SmartRecruiters & Recruitee

Get every open job from a company's careers page in one clean table. Paste careers page URLs or plain company names. The Actor finds which applicant-tracking system (ATS) the company uses and reads its public job board.

Supported job boards: Greenhouse · Lever · Ashby · Workable · SmartRecruiters · Recruitee. Together they power the careers pages of tens of thousands of companies, from startups to Fortune 500s.

Why use it?

  • Six ATS platforms, one schema. Every job comes out with the same fields, whatever system the company uses.
  • Paste anything. https://boards.greenhouse.io/airbnb, jobs.lever.co/spotify, https://www.notion.com/careers, or just stripe. Bare names are checked on all six platforms, and the board with the most jobs wins.
  • Salary, remote and department wherever the board publishes them (Ashby, Lever and Recruitee often do).
  • Built-in filters: title keywords, excluded words, location, remote only and posted-within-days. You only pay for jobs that pass the filters.
  • Fast and cheap. It uses the official public job-board feeds, not a browser. Hundreds of jobs take seconds.
  • No login, no cookies, no proxies.

Use cases

  • Job-alert newsletters and niche job boards (e.g. "remote design jobs at Series B startups")
  • Hiring-signal tracking for sales and investors: which companies are hiring engineers in Berlin this month?
  • Labor-market and salary research
  • Feeding AI agents or spreadsheets with fresh postings on a schedule

Input

FieldWhat it doesDefault
companiesCareers URLs or company names/slugs, one per line—
atsPlatform to look on for bare namesAuto (all six)
titleKeywordsKeep titles containing any of theseall
excludeTitleKeywordsDrop titles containing any of thesenone
locationContainse.g. London, United States, Remoteany
remoteOnlyOnly remote jobsfalse
postedWithinDaysOnly jobs posted in the last N days0 (any)
includeDescriptionFull job descriptiontrue
descriptionFormattext, html or bothtext
maxJobsPerCompanyCap per board1000
maxResultsCap for the whole run0 (no cap)

Example input

{
"companies": ["https://boards.greenhouse.io/airbnb", "https://jobs.lever.co/spotify", "ramp", "figma"],
"titleKeywords": ["engineer", "designer"],
"locationContains": "United States",
"postedWithinDays": 30
}

Output

One row per job. Download it as JSON, CSV, Excel or HTML, or use the API.

{
"company": "ramp",
"ats": "ashby",
"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"title": "Security Engineer, Cloud",
"location": "New York, NY (HQ); Remote (US)",
"country": "USA",
"isRemote": true,
"workplaceType": "Hybrid",
"employmentType": "FullTime",
"departments": ["Engineering", "Backend"],
"salary": { "text": "$211.4K - $290.6K", "min": null, "max": null, "currency": null, "interval": null },
"url": "https://jobs.ashbyhq.com/ramp/34413f8d-...",
"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-.../application",
"publishedAt": "2026-04-07T17:12:35.753Z",
"description": "About Ramp ..."
}

A SUMMARY record in the key-value store lists each company, the ATS it was found on, how many jobs it has and any errors.

Pricing

Pay per result: $1.50 per 1,000 jobs saved. There is no charge for companies that aren't found or for jobs removed by your filters. Set a maximum charge per run in the run options to cap spend.

Tips

  • If a bare name isn't found, paste the company's careers page URL. The Actor looks for an embedded job board on that page.
  • SmartRecruiters descriptions need one extra request per job. Turn off includeDescription for very large SmartRecruiters companies if you only need titles.
  • Schedule the Actor daily and combine it with postedWithinDays: 1 to get a feed of new jobs only.

Data & compliance

The Actor reads only public job postings that companies publish through their ATS's public job-board API, the same data shown on their careers page. It doesn't log in, collect applicant data, or store recruiter names, emails or phone numbers. You're responsible for using the data in line with the job boards' terms and applicable law.

Support

Found a bug or want another ATS added (Workday, BambooHR, Personio…)? Open an issue on the Issues tab. We read every one.

Call it from curl, JavaScript or Python

You can run this Actor in the Apify Console with no code, or call it as an API from curl, JavaScript or Python. Replace YOUR_TOKEN with an Apify API token.

curl

curl "https://api.apify.com/v2/acts/wood-between-studio~ats-jobs-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["https://boards.greenhouse.io/airbnb", "ramp"], "maxJobsPerCompany": 20}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wood-between-studio/ats-jobs-scraper').call({
"companies": [
"https://boards.greenhouse.io/airbnb",
"ramp"
],
"maxJobsPerCompany": 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wood-between-studio/ats-jobs-scraper").call(run_input={
"companies": [
"https://boards.greenhouse.io/airbnb",
"ramp"
],
"maxJobsPerCompany": 20
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

You can also schedule the Actor, cap the spend per run, and send the dataset to Google Sheets, Slack or a webhook from the Console. Store page: apify.com/wood-between-studio/ats-jobs-scraper.