ATS Jobs Scraper – Greenhouse & Lever in One avatar

ATS Jobs Scraper – Greenhouse & Lever in One

Pricing

from $0.80 / 1,000 results

Go to Apify Store
ATS Jobs Scraper – Greenhouse & Lever in One

ATS Jobs Scraper – Greenhouse & Lever in One

Scrape all open jobs from Greenhouse and Lever career boards in one run: title, location, remote, department, salary, description and apply link. For recruiters, job boards and sales teams.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

5 days ago

Last modified

Categories

Share

ATS Jobs Scraper – Greenhouse & Lever Job Postings in One Run

ATS Jobs Scraper extracts every open job from Greenhouse and Lever career boards in a single run. Enter company board slugs (like stripe) or career-page URLs and get each posting's job title, location, remote flag, workplace type, department, team, employment type, salary range, full description and apply link – exported to JSON, CSV, Excel or Google Sheets. It reads the official public job-board APIs, so there is no API key, no login and no proxy cost, and you pay only per job saved.

Built for recruiters and sourcing teams tracking target companies, job-board and aggregator builders, HR-tech and labor-market analysts, and sales teams that use hiring activity as a buying signal.

What data can you extract?

FieldExampleDescription
sourceleverATS the job came from: greenhouse or lever
companyleverdemoCompany board slug
idad208490-4052-4f91-...Job ID in the ATS (stable, good for deduplication)
titleCustomer Success ManagerJob title
urlhttps://jobs.lever.co/leverdemo/ad20...Public job page / apply link
locationAtlanta, GeorgiaLocation as written by the employer
is_remotefalsetrue if the job is remote (workplace type or location says "remote")
workplace_typehybridremote, hybrid or on-site (Lever)
departmentCustomer SuccessDepartment
teamCustomer Success TeamTeam (Lever)
commitmentRegular Full Time (Salary)Employment type, e.g. full-time, contract (Lever)
countryUSCountry code (Lever)
salary85000–175000 USDSalary range, when the employer publishes it
description_textJoin a scaling, tight-knit team...Full job description as plain text
description_html<div>Join a scaling...</div>Full job description as HTML
posted_at2026-08-31T18:12:19+00:00Date the job was created (Lever)
updated_at2026-10-07T19:02:27-04:00Date the job was last updated (Greenhouse)
word_count / token_count210 / 338Description length – handy for LLM pipelines
scraped_at2026-10-15T18:01:38+00:00UTC time of extraction

Fields that an ATS does not provide are returned as empty strings, so every row has the same columns.

How to use the ATS Jobs Scraper

  1. In Companies, add board slugs or career-page URLs. Greenhouse: stripe or https://boards.greenhouse.io/stripe. Lever: leverdemo or https://jobs.lever.co/leverdemo. URLs detect the ATS automatically; for bare slugs choose the ATS (or keep Both).
  2. Optionally narrow the results with the keyword, location, department and remote only filters, and cap the number of jobs per company. Click Start.
  3. Download the jobs as JSON, CSV or Excel, or send them to Google Sheets, Make, Zapier, n8n or your own app via the API. Add a Schedule to refresh the list daily.

Example input:

{
"companies": ["stripe", "https://jobs.lever.co/leverdemo"],
"ats": "both",
"keyword": "engineer",
"location": "",
"department": "",
"remoteOnly": false,
"maxJobsPerCompany": 100
}

Filters are applied before results are saved, so you only pay for the jobs that match.

Output example

Real output from a test run (descriptions shortened, description_html omitted):

[
{
"source": "greenhouse",
"company": "stripe",
"id": "8172508",
"title": "Abuse Investigator",
"url": "https://stripe.com/jobs/search?gh_jid=8172508",
"location": "Dublin",
"is_remote": false,
"workplace_type": "",
"department": "8611 Security Analytics",
"team": "",
"commitment": "",
"country": null,
"description_text": "Who we are \nAbout Stripe\nStripe is a financial infrastructure platform for businesses...",
"salary": "",
"posted_at": "",
"updated_at": "2026-10-07T19:02:27-04:00",
"word_count": 628,
"token_count": 1148,
"scraped_at": "2026-10-15T18:01:34.687970+00:00"
},
{
"source": "lever",
"company": "leverdemo",
"id": "ad208490-4052-4f91-a57e-433f2d1e484b",
"title": "Customer Success Manager",
"url": "https://jobs.lever.co/leverdemo/ad208490-4052-4f91-a57e-433f2d1e484b",
"location": "Atlanta, Georgia",
"is_remote": false,
"workplace_type": "hybrid",
"department": "Customer Success",
"team": "Customer Success Team",
"commitment": "Regular Full Time (Salary)",
"country": "US",
"description_text": "Join a scaling, tight-knit team that's working on...",
"salary": "85000–175000 USD",
"posted_at": "2026-08-31T18:12:19.703000+00:00",
"updated_at": "",
"word_count": 210,
"token_count": 338,
"scraped_at": "2026-10-15T18:01:38.794621+00:00"
}
]

The test run with stripe + leverdemo returned 738 jobs in about 7 seconds.

Pricing

This actor uses pay-per-event pricing – you pay only for jobs saved to the dataset:

  • $0.0008 per job = $0.80 per 1,000 jobs
  • $0.00005 per actor start (per GB of memory, practically free)

No proxies or third-party APIs are used, so there are no extra costs.

ScenarioJobsCost
All open jobs of one large company (e.g. Stripe)~730≈ $0.58
10 companies, keyword filter "engineer"~500≈ $0.40
50 companies, all jobs~5,000≈ $4.00
20 companies refreshed daily for 30 days (~1,000 jobs/day)~30,000≈ $24.00

Use Max jobs per company, the filters and Apify's maximum cost per run setting to keep spending under control. New Apify accounts get free monthly credit to try it.

Use cases

  • Recruiting & sourcing – watch the career pages of competitors and target companies and see new roles the day they open.
  • Job boards & aggregators – feed a niche job board (remote, engineering, a region) with fresh postings and direct apply links.
  • Sales prospecting – companies hiring for a function are buying tools for it; turn new "Head of Data" or "Security Engineer" postings into leads.
  • Labor-market & competitor intelligence – track headcount growth by department, location and remote share over time.
  • Salary benchmarking – collect published salary ranges for specific roles and locations.
  • AI & RAG pipelines – plain-text descriptions plus token_count make it easy to load job data into LLM workflows.

Integrations and API

Run the ATS Jobs Scraper from the Apify API, the Apify CLI or any integration: Make, Zapier, n8n, Google Sheets, Slack, Airbyte or webhooks. Combine a daily schedule with a webhook to push new jobs into your ATS, CRM or database.

Python example with the official apify-client:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("ninhothedev/ats-jobs-scraper").call(
run_input={"companies": ["stripe", "leverdemo"], "keyword": "engineer", "remoteOnly": False}
)
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["company"], job["title"], job["location"], job["url"])

FAQ

Is it legal to scrape Greenhouse and Lever jobs? The actor only reads job postings that companies publish openly on their Greenhouse and Lever job boards, via the boards' public APIs. No login is used and no personal data is collected. Always check your local laws and intended use.

Where do I find a company's slug? It is the part of the job-board URL after the domain: boards.greenhouse.io/stripe or jobs.lever.co/leverdemo. You can also paste the full URL. If a company shows jobs on its own domain, open any job's apply page to find the underlying Greenhouse or Lever board.

What if I don't know which ATS a company uses? Keep ATS set to Both – a bare slug is then checked on Greenhouse and Lever.

Are there limits? No hard limit; the actor returns every published job on each board. Use Max jobs per company to cap results.

Do I need proxies? No. The actor uses the official public job-board APIs, which work without proxies – so there is no proxy cost.

Can I run it on a schedule? Yes – create an Apify Schedule (e.g. daily) and connect a webhook or integration to process the new results. Use the id field to detect new and removed jobs between runs.

Does it support Ashby, Workday or other ATS? This actor covers Greenhouse and Lever. For other systems see the related actors below.

Something does not work? Open an issue on the actor's Issues tab with the run ID and the company slug – we usually respond within a day.