Career Site Jobs Scraper: Greenhouse, Lever, Workday & ATS avatar

Career Site Jobs Scraper: Greenhouse, Lever, Workday & ATS

Pricing

$1.50 / 1,000 jobs

Go to Apify Store
Career Site Jobs Scraper: Greenhouse, Lever, Workday & ATS

Career Site Jobs Scraper: Greenhouse, Lever, Workday & ATS

Get every open job from company career sites. Paste a domain, careers page or ATS link: Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor, BambooHR are auto-detected. Salary, remote, location, description, filters and new-job monitoring.

Pricing

$1.50 / 1,000 jobs

Rating

0.0

(0)

Developer

RS Automation Labs

RS Automation Labs

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Share

What does Career Site Jobs Scraper do?

Career Site Jobs Scraper pulls every open job straight from company career sites and their applicant tracking systems (ATS). Paste a company website such as notion.so, a careers page, or a job board link. The Actor finds the company's job board and returns each opening as one clean, normalized row: title, department, location, country, remote / hybrid / on-site, employment type, salary, posting date, apply link and the full description.

Supported ATS (auto-detected): Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor and BambooHR, plus any careers page that publishes schema.org JobPosting data. Think of it as a job board API for thousands of employers: no login, no browser, no API keys.

Jobs come from the companies' official public job feeds, the same data their own careers pages show. So results are fresh (often hours old), complete, and include jobs that never reach LinkedIn or Indeed.

Why use this career site job scraper?

  • 🎯 Recruiting & sourcing agencies - watch target companies and get new openings before the job boards do.
  • 📈 Sales & lead generation - hiring is a buying signal. Find companies hiring "Head of Data", "Salesforce admin" or "SOC analyst".
  • 🧭 Job seekers & job boards - build a niche job board or a personal feed of remote engineering roles from your dream companies.
  • 🔎 Market & competitor intelligence - track headcount plans, new offices, salary ranges and departments over time.
  • 🤖 AI agents & data pipelines - normalized JSON with stable job keys, ready for RAG, matching or analytics.

Highlights

  • Paste domains, careers pages, ATS URLs or ats:slug shorthands. The board is detected automatically.
  • One schema for every ATS: normalized employment type, workplace type, ISO country, salary min/max/currency/period.
  • Salary extraction: from structured ATS fields or parsed from the description (pay-transparency ranges).
  • Filters: title keywords (include/exclude), location, country, remote/hybrid/on-site, employment type, posted in the last N days.
  • New-jobs monitor: run it on a schedule and get only jobs that are new since the last run, plus free "closed" rows.
  • Fast and cheap: public JSON APIs and no headless browser. A 300-job board takes about a second.
  • Duplicate inputs, bad domains and companies without a board become free status rows, so one bad input never fails the run.
  • All Apify platform features: scheduling, API, webhooks, Zapier / Make / n8n, Google Sheets and Slack integrations.

What data can I extract from company career sites?

FieldExample
companyPalantir
titleForward Deployed Software Engineer, New Grad
department / teamEngineering
location, city, region, countryNew York, NY · US
workplaceType / remoteremote · hybrid · onsite
employmentTypeFULL_TIME · PART_TIME · CONTRACT · INTERNSHIP
salaryMin, salaryMax, salaryCurrency, salaryPeriod135000 · 145000 · USD · YEAR
postedAt2026-10-22T21:34:28Z
jobUrl, applyUrllinks to the posting and the application form
descriptionText, descriptionHtmlfull job description
atsSource, atsBoard, atsBoardUrllever · palantir · https://jobs.lever.co/palantir
boardJobCountopen jobs on the whole board
jobKeystable unique ID, e.g. lever:palantir:6ed76ce8-...

How to scrape jobs from company career sites

  1. Click Try for free and open the Input tab.
  2. Add companies to Companies, one per line: notion.so, https://jobs.lever.co/palantir, greenhouse:airbnb...
  3. Optional: add filters, for example title contains engineer and workplace type remote.
  4. Set Max jobs per company to keep the run small.
  5. Click Start and download the jobs as JSON, CSV, Excel or HTML, or connect the dataset to Google Sheets.
  6. Optional: turn on Only new jobs and add a schedule (for example daily) to get a new-jobs feed.

Which inputs work?

InputExample
Company domainnotion.so, stripe.com
Careers pagehttps://www.example.com/careers
ATS board URLhttps://boards.greenhouse.io/airbnb, https://jobs.ashbyhq.com/ramp, https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite
Shorthand ats:sluggreenhouse:airbnb, lever:palantir, ashby:ramp, smartrecruiters:BoschGroup, recruitee:bunq, workday:nvidia.wd5/NVIDIAExternalCareerSite

For domains, the Actor reads the homepage and careers page to find the ATS link. If there is none, it tries the company name on the public ATS APIs. When the job board link is known, pasting it directly is fastest and most reliable.

How much does it cost to scrape career site jobs?

This Actor uses pay-per-event pricing: $0.0015 per job returned ($1.50 per 1,000 jobs). There is no start fee, and error rows, "no jobs" rows, duplicate inputs and closed-job rows are free. Platform compute is minimal because the Actor calls public JSON APIs instead of a browser.

Jobs returnedPrice
100$0.15
1,000$1.50
10,000$15.00

Worked example: checking 50 companies with a title filter that matches 20 jobs each returns 1,000 jobs = $1.50. Apify's free plan includes $5 of monthly credit, which covers about 3,300 jobs a month.

To control cost:

  • Use filters and Max jobs per company. You only pay for jobs that pass the filters.
  • Use Only new jobs on scheduled runs. After the first run you pay only for jobs that are new.
  • Set Maximum cost per run in the run options. The Actor stops cleanly when the limit is reached.

Input example

{
"companies": ["notion.so", "https://jobs.lever.co/palantir", "greenhouse:airbnb"],
"titleKeywords": ["engineer"],
"workplaceTypes": ["remote", "hybrid"],
"postedWithinDays": 30,
"maxJobsPerCompany": 20,
"includeDescription": true
}

See the Input tab for all options.

Output example

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

[
{
"status": "ok",
"company": "Notion",
"companyDomain": "notion.so",
"title": "Software Engineer, Developer Platform",
"department": "Engineering",
"location": "San Francisco, California",
"country": "US",
"workplaceType": "hybrid",
"remote": false,
"employmentType": "FULL_TIME",
"salaryText": "$179,000 – $200,000 per year",
"salaryMin": 179000,
"salaryMax": 200000,
"salaryCurrency": "USD",
"salaryPeriod": "YEAR",
"postedAt": "2026-10-19T17:28:06Z",
"jobUrl": "https://jobs.ashbyhq.com/notion/8c0bf773-e536-45c9-9a6c-8ee478148cc8",
"applyUrl": "https://jobs.ashbyhq.com/notion/8c0bf773-e536-45c9-9a6c-8ee478148cc8/application",
"descriptionText": "WHO WE ARE\n\nNotion is the collaborative AI workspace ...",
"atsSource": "ashby",
"atsBoard": "notion",
"atsDetection": "site-link",
"boardJobCount": 140
},
{
"status": "error",
"input": "palantir.com",
"errorCode": "DUPLICATE_INPUT",
"errorMessage": "Same job board (lever:palantir) as input \"https://jobs.lever.co/palantir\" - read once, not charged twice"
}
]

Row status

statusMeaningCharged
okOne open jobyes
closedMonitor mode: the job disappeared since the last runfree
no-jobsThe company was checked but has no (matching / new) jobsfree
errorSee errorCode, errorMessage and errorHintfree

Error codes: INVALID_INPUT, DUPLICATE_INPUT, DOMAIN_NOT_FOUND, NO_ATS_FOUND, BOARD_NOT_FOUND, ATS_NOT_SUPPORTED, BLOCKED, NETWORK_ERROR, BAD_RESPONSE, TIMEOUT, BUDGET_LIMIT, INTERNAL_ERROR.

The run summary (companies, jobs, ATS detected, error codes) is saved as OUTPUT in the default key-value store.

New job alerts: monitor career pages for new jobs

Turn on Only new jobs since the last run and schedule the Actor (Schedules → daily). Each run returns only jobs that were not returned before, plus a free closed row for every job that was removed. Job history lives in a named key-value store jobs-feed-monitor-<monitor name> in your account. Use a different Monitor name per task or filter set. Connect a webhook, Slack, email or Google Sheets integration to get alerts.

Tips

  • Paste the job board URL if you know it. It skips website discovery and is the most reliable input.
  • Workday boards list jobs 20 at a time and need one extra request per job for the description. Use filters and Max jobs per company for very large employers.
  • Turn off Include full job description for faster, smaller exports.
  • No proxy is needed for ATS APIs. Enable Apify Proxy only if a company website blocks discovery.

Use it via API, Python, JavaScript or an AI agent

Every run is available through the Apify API. Start a run, wait for it to finish and read the dataset in a few lines of Python with the official apify-client package:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("rs-automation-labs/career-site-jobs-scraper").call(run_input={
"companies": [
"notion.so",
"https://jobs.lever.co/palantir",
"greenhouse:airbnb"
],
"maxJobsPerCompany": 20
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
  • JavaScript / cURL: the API tab on this page has ready-to-copy snippets with your token filled in.
  • Schedules and webhooks: run it daily or weekly with Apify Schedules and get notified with webhooks.
  • No-code: connect it to Make, Zapier, n8n, Google Sheets or Slack through Apify integrations.
  • AI agents: call it from Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server.

FAQ

Is it legal to scrape company career sites? This Actor reads only public job postings that companies publish to attract applicants, using the ATS providers' public job-board endpoints. It does not log in and does not collect personal data about candidates or employees. Our Actors are ethical and do not extract private user data. Your results could still contain personal data, such as a recruiter's name inside a description, which is protected by GDPR and similar laws. Don't use it without a legitimate reason, and consult your lawyers if unsure.

Which ATS are not supported? iCIMS, Taleo, SuccessFactors, Jobvite and other systems without a public feed are reported as ATS_NOT_SUPPORTED (free). Their careers pages are still read if they publish schema.org JobPosting data.

Why did a domain return NO_ATS_FOUND? The website does not link a supported job board and the company name did not match one. Paste the careers page or job board URL instead.

Can I use it through the API? Yes. See the API tab for Python, JavaScript, cURL, and MCP examples for AI agents.

Other Actors by RS Automation Labs

ActorWhat it does
PageSpeed Insights Bulk CheckerBulk Lighthouse scores and real-user Core Web Vitals for many URLs or a sitemap
Video Transcript & AI SummaryTranscripts, subtitles and AI summaries for YouTube, TikTok, Reels, X and podcasts
AI PDF to JSON & Invoice OCRInvoices, receipts, bank statements and any PDF or scan to validated JSON, CSV and Excel
AI Search Visibility & GEO Rank TrackerWhether ChatGPT, Perplexity, Gemini, Claude, Grok and AI Overviews mention and cite your brand
Contact Details Scraper & Company EnrichmentE-mails, phones, socials, tech stack and hiring signals from a company domain

Support

Found a bug or need another ATS? Open an issue on the Issues tab and include the run ID. Feature requests are welcome. Built and maintained by RS Automation Labs.