Greenhouse, Lever & Ashby Jobs Scraper: Salaries, One Format avatar

Greenhouse, Lever & Ashby Jobs Scraper: Salaries, One Format

Pricing

$0.01 / 1,000 jobs

Go to Apify Store
Greenhouse, Lever & Ashby Jobs Scraper: Salaries, One Format

Greenhouse, Lever & Ashby Jobs Scraper: Salaries, One Format

Every open job from company career sites on Greenhouse, Lever and Ashby in one consistent format: title, department, locations, remote flag, salary range, posted date, description and apply link. Paste board links or company names. No proxy. Trial: 0.01 USD per 1,000 jobs until 30 Nov 2026.

Pricing

$0.01 / 1,000 jobs

Rating

0.0

(0)

Developer

Cozybit

Cozybit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

Greenhouse, Lever & Ashby Jobs Scraper: every open job, one format, with salaries

Get every open job from the company career sites that run on Greenhouse, Lever or Ashby, straight from each company's own job board:

  • Three job systems, one format: every job has the same fields (title, company, department, locations, remote flag, salary, posted date, description, apply link), whichever system the company uses. Mix all three in one run and export one clean table.
  • Salaries where the employer publishes them: minimum, maximum, currency and pay period as numbers, plus the employer's own salary text. In our tests 5 of 9 company boards published salary ranges.
  • Simple input: paste career-page links, job links, system:company codes, or just company names. The actor finds the board.
  • Filters: title or department keywords, locations, remote only, posted within the last N days, and a maximum per company.
  • Fast and live: each board comes from the company's public job board in one request, read fresh on every run. Three companies take about 6 seconds.
  • No proxy, no login, no browser: nothing to configure, and nothing that gets blocked.

Typical uses: recruiting and sourcing, hiring signals for sales and lead generation, salary research, job boards and newsletters that list jobs from chosen employers.

Input

FieldWhat it doesDefault
Company boards or namesUp to 500 entries: board or job links (job-boards.greenhouse.io/airbnb, boards.greenhouse.io/..., jobs.lever.co/spotify, jobs.eu.lever.co/..., jobs.ashbyhq.com/ramp), codes such as greenhouse:airbnb, lever:spotify, ashby:ramp, or company names such as Airbnbthree example boards
Title or department keywordsKeep jobs whose title or department contains any of the words, for example engineer, salesall jobs
LocationsKeep jobs with a location containing any of the entries, for example London, United States, Remoteall locations
Remote jobs onlyKeep only jobs the employer marks as remoteoff
Posted within daysKeep jobs published in the last N days (1-365)all dates
Include descriptionsReturn the full job description as plain text; turn off for smaller exportson
Maximum jobs per boardNewest jobs first, up to this many per companyall jobs

Company names are matched to board addresses (Scale AI tries scaleai and scale-ai on all three systems). A name can also match a different company with the same name on another system, so check the company and board fields, or paste the board link for an exact match.

Example: remote engineering jobs posted in the last 14 days at three companies:

{
"boards": ["https://job-boards.greenhouse.io/airbnb", "lever:spotify", "ashby:ramp"],
"keywords": ["engineer"],
"remoteOnly": true,
"postedWithinDays": 14
}

Output

One row per job. A real example (description shortened):

{
"system": "ashby",
"board": "https://jobs.ashbyhq.com/ramp",
"company": "Ramp",
"job_id": "aa433e44-f095-484b-a46a-a330583d84b0",
"title": "GTM Senior Business Systems Analyst, Marketing & Pre-Sales",
"department": "Engineering",
"team": "Growth Engineering",
"location": "New York, NY (HQ)",
"locations": ["New York, NY (HQ)", "San Francisco, CA", "Miami, FL"],
"workplace_type": "hybrid",
"is_remote": true,
"employment_type": "FullTime",
"salary_min": 134400,
"salary_max": 209000,
"salary_currency": "USD",
"salary_period": "year",
"salary_text": "$134.4K – $209K • Offers Equity",
"posted_at": "2026-10-23T17:17:16.626Z",
"updated_at": null,
"description": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams...",
"job_url": "https://jobs.ashbyhq.com/ramp/aa433e44-f095-484b-a46a-a330583d84b0",
"apply_url": "https://jobs.ashbyhq.com/ramp/aa433e44-f095-484b-a46a-a330583d84b0/application",
"scraped_at": "2026-11-02T20:11:12.812Z"
}
  • Fields a job system does not publish are null: Lever and Ashby have no updated_at, Greenhouse has no team or employment_type.
  • Salary: salary_min and salary_max are numbers in salary_currency. salary_period is year, month, week, day or hour when the employer states it; Greenhouse employers often label a range only "Pay Range", so the period stays null there and salary_text keeps the employer's wording. When an employer publishes several ranges (for example per country), the first is in the number fields and all are in salary_text.
  • Remote: workplace_type is the employer's remote, hybrid or onsite label. is_remote is the employer's remote flag; Ashby employers sometimes mark hybrid jobs as remote-eligible too.
  • description is plain text with paragraphs kept.

A run summary (RUN_SUMMARY in the run's key-value store) lists every board with its result: ok, not_found or error, and how many jobs it had, matched and returned. The run's status message names boards that were not found, for example Jobs: 60 from 3 of 4 boards. Not found: lever:acme.

Use it from code

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("cozybit/greenhouse-lever-ashby-jobs-scraper").call(run_input={
"boards": ["greenhouse:airbnb", "lever:spotify", "ashby:ramp"],
"keywords": ["engineer"],
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["company"], job["title"], job["salary_min"], job["salary_max"], job["apply_url"])

HTTP API (runs the actor and returns the jobs in one call):

curl -X POST "https://api.apify.com/v2/acts/cozybit~greenhouse-lever-ashby-jobs-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer <YOUR_API_TOKEN>" -H "Content-Type: application/json" \
-d '{"boards": ["greenhouse:airbnb"], "includeDescription": false}'

To watch employers for new openings, schedule the actor daily with postedWithinDays: 1.

Pricing

Trial price until 30 November 2026: 0.01 USD per 1,000 jobs (the lowest price Apify allows). From 1 December 2026 the price is 1.00 USD per 1,000 jobs. Apify notifies all users before a price change.

You pay only for jobs delivered to your dataset; platform usage is included. Boards that are not found, errors, and jobs removed by your filters are free.

EventPrice
Job1.00 USD per 1,000 (0.001 USD each)

Worked examples (from 1 December):

  • All 210 open jobs at one large company: 0.21 USD.
  • Engineering jobs at 50 startups, about 1,500 jobs: 1.50 USD.
  • A daily check of 100 companies for jobs posted in the last day, about 300 jobs a day: about 9 USD a month.

To cap spending, set a maximum cost per run in the run options; the actor stops cleanly when it is reached.

Free Apify plan

On the free Apify plan a run returns at most 100 jobs. When the limit is reached the run finishes successfully with the status message "Free Apify plan limit reached"; everything collected so far is in the dataset. Any paid Apify plan removes the limit.

Reliability

In 6 test runs on the Apify platform (9 companies across the three systems, filters, company-name lookup, and a made-up company), all 16 requests for real boards returned their jobs on the first try, with no retries. The made-up company was reported as not found, and the run still delivered the other boards. A typical run of three companies took 4 to 11 seconds; three large boards with 1,846 open jobs between them were read in 4 seconds.

The actor reads the same public job-board feeds that companies use to show jobs on their own websites, so it does not depend on page layouts. When a request fails briefly, it is retried twice.

Limits

  • Only Greenhouse, Lever and Ashby boards. Companies on other job systems (Workday, SmartRecruiters and others) are not covered.
  • You choose the companies: the actor has no built-in list of employers and no search across all companies.
  • Only jobs the company lists publicly on its board; internal or unlisted jobs are not included.
  • Salaries, departments and remote labels are only as complete as the employer publishes them.
  • An entry that is not a supported link, code or company name stops the run before anything is collected, so check the error message and fix the entry.

Support

Report problems and feature requests on the actor's Issues tab, ideally with the run link.