ATS Job Scraper: Greenhouse, Lever, Ashby, Workable avatar

ATS Job Scraper: Greenhouse, Lever, Ashby, Workable

Pricing

from $1.50 / 1,000 extracted job postings

Go to Apify Store
ATS Job Scraper: Greenhouse, Lever, Ashby, Workable

ATS Job Scraper: Greenhouse, Lever, Ashby, Workable

Extract structured job listings, locations, and descriptions directly from Greenhouse, Lever, Ashby, and Workable ATS career pages.

Pricing

from $1.50 / 1,000 extracted job postings

Rating

0.0

(0)

Developer

Morgane Flamant

Morgane Flamant

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

πŸ’Ό Multi-Platform ATS Job Board Scraper (Greenhouse, Lever, Ashby & Workable)

A lightweight, high-speed Apify Actor built in Python to extract normalized job listings, departments, locations, remote status, application links, and descriptions across top ATS job platforms: Greenhouse, Lever, Ashby, and Workable.


🌟 Key Features

  • ⚑ Pure Direct API Queries: Hits underlying public REST APIs directly with httpx async requests. No heavy headless browsers (~128MB RAM footprint).
  • 🏒 Multi-Platform Support: Scrape corporate job boards from Greenhouse, Lever, Ashby, and Workable in a single run.
  • 🎯 Unified Output Schema: Standardized data fields regardless of which ATS platform host the posting.
  • πŸ“ Remote Detection & Location Parsing: Automatically flags remote positions and normalizes department and location data.
  • πŸ“ Rich HTML & Plaintext Descriptions: Extracts both clean plain text and raw HTML formatted job descriptions.

πŸ“₯ Input Parameters

The Actor accepts the following input settings in JSON format:

ParameterTypeDefaultDescription
targetsarray(See example)List of target objects containing platform enum (greenhouse, lever, ashby, workable) and company identifier / slug.
maxJobsPerTargetinteger100Maximum number of job postings to retrieve per target company board.
includeFullDescriptionbooleantrueWhen enabled, fetches full job description in plain text and HTML.

Example Input JSON

{
"targets": [
{
"platform": "greenhouse",
"identifier": "stripe"
},
{
"platform": "lever",
"identifier": "leverdemo"
},
{
"platform": "ashby",
"identifier": "openai"
},
{
"platform": "workable",
"identifier": "seeq"
}
],
"maxJobsPerTarget": 50,
"includeFullDescription": true
}

πŸ“€ Output Format

Each job posting in the output dataset follows a standardized schema:

{
"company": "stripe",
"platform": "greenhouse",
"job_id": "4912039",
"title": "Software Engineer, Backend",
"department": "Engineering",
"location": "San Francisco, CA, US",
"is_remote": true,
"published_at": "2026-02-10T15:30:00.000Z",
"apply_url": "https://boards.greenhouse.io/stripe/jobs/4912039#app",
"description_html": "<div><p>Stripe is building financial infrastructure...</p></div>",
"description_text": "Stripe is building financial infrastructure..."
}

πŸš€ Running Locally

Step 1: Install Dependencies

$pip install -r requirements.txt

Step 2: Run the Actor

$python -m src

🐳 Docker Support

To build and run containerized:

docker build -t ats-job-scraper .
docker run -it ats-job-scraper