Career Page Jobs Scraper: Greenhouse, Lever, Ashby, Workday +8 avatar

Career Page Jobs Scraper: Greenhouse, Lever, Ashby, Workday +8

Pricing

$1.00 / 1,000 job scrapeds

Go to Apify Store
Career Page Jobs Scraper: Greenhouse, Lever, Ashby, Workday +8

Career Page Jobs Scraper: Greenhouse, Lever, Ashby, Workday +8

Scrape job postings from any company careers page. Works with Workable, SmartRecruiters, Personio, Recruitee, Teamtailor, BambooHR, Greenhouse, Lever, Ashby, Workday, Breezy and Pinpoint (auto-detected). Normalized jobs with location, remote, salary, description, apply URL.

Pricing

$1.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

PulseData

PulseData

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

12

Monthly active users

41 minutes ago

Last modified

Share

Career Page Jobs Scraper reads the public job boards of 12 applicant tracking systems (ATS) and returns every open position as one normalized record: title, locations, remote flag, department, employment type, salary where available, posting date, full description and apply link. You paste career page or job board URLs, and the actor detects the ATS for you. It costs $1 per 1,000 jobs today, with descriptions included. From 9 October 2026 the price is $2 per 1,000 jobs.

Supported ATS (auto-detected): Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Personio, Recruitee, Teamtailor, BambooHR, Breezy HR, Pinpoint.

Works with Workable, SmartRecruiters, Personio, Recruitee, Teamtailor and BambooHR

There is no separate PulseData actor for these six systems. Paste the company's public job board URL. Each example is a real board:

ATSExample boardNotes
Workablehttps://apply.workable.com/huggingface/Descriptions need one extra request per job.
SmartRecruitershttps://careers.smartrecruiters.com/BoschGroupLarge boards; set maxJobsPerCompany to test first. Returns seniority.
Personiohttps://360t.jobs.personio.de.de and .com boards. Returns seniority.
Recruiteehttps://bunq.recruitee.comReturns salary when the company fills the pay field.
Teamtailorhttps://oatly.teamtailor.comReturns salary when published.
BambooHRhttps://gitkraken.bamboohr.com/careersDescriptions need one extra request per job.

If you only have the company's own careers page and it embeds one of these boards in its HTML, the actor finds the board for you.

Features

  • Scrape jobs from any company careers page. Paste https://example.com/careers and the actor scans the page for an embedded or linked board of one of the 12 systems above.
  • Scrape Greenhouse, Lever and Ashby job boards with one input list, including EU-hosted Greenhouse and Lever boards.
  • Export Workday jobs from any myworkdayjobs.com career site.
  • Scrape Workable, SmartRecruiters, Personio, Recruitee, Teamtailor, BambooHR, Breezy and Pinpoint jobs with the same input and output as the big four.
  • One schema for every ATS. The same field names come back whichever system the company uses, so you can mix hundreds of companies in one dataset.
  • Filter jobs by keyword, location, remote and posting date before they are saved (and before you pay for them).
  • Export jobs to CSV, JSON or Excel from the Apify dataset, or pull them over the API.
  • No proxies needed in normal use. The actor calls the public job board endpoints each ATS already serves to browsers.

Use cases

  • Job boards and aggregators: pull fresh postings from a list of companies on a schedule and keep your own board in sync.
  • Sales and lead generation: a company hiring a "Salesforce Administrator" or "Head of SEO" is often buying tooling for that team. Put those words in keywords and watch a target account list.
  • Talent intelligence and research: hiring volume by department, location, remote policy and published salary ranges over time.
  • Job alerts: schedule a daily run with postedWithinDays: 1 and send new jobs to Slack, email or a webhook.

Input

{
"startUrls": [
{ "url": "https://boards.greenhouse.io/stripe" },
{ "url": "https://jobs.lever.co/spotify" },
{ "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite" }
],
"keywords": ["engineer", "data"],
"locations": ["Remote", "Berlin", "United States"],
"remoteOnly": false,
"postedWithinDays": 30,
"includeDescription": true,
"maxJobsPerCompany": 200
}
FieldTypeDefaultWhat it does
startUrlsarray(required)Career pages or ATS job board URLs.
keywordsarray[]Keep only jobs whose title contains one of these words (case-insensitive).
locationsarray[]Keep only jobs whose location, secondary locations or country contain one of these strings.
remoteOnlybooleanfalseKeep only jobs flagged as remote by the ATS or whose location mentions remote.
postedWithinDaysinteger0Keep only jobs posted or updated in the last N days. 0 means no limit. Jobs without any date are kept.
includeDescriptionbooleantrueReturn the description as HTML and plain text. For Workday, SmartRecruiters, BambooHR, Workable and Breezy this costs one extra request per job.
maxJobsPerCompanyinteger0Cap on jobs returned per career page. 0 means no limit.
proxyConfigurationobject{ "useApifyProxy": false }Optional Apify Proxy. Only needed if you hit rate limits.

Supported URL shapes (the six systems in the table above use the board URLs shown there):

ATSExample
Greenhousehttps://boards.greenhouse.io/stripe, https://job-boards.greenhouse.io/company, EU: https://job-boards.eu.greenhouse.io/company
Leverhttps://jobs.lever.co/spotify, https://jobs.eu.lever.co/company
Ashbyhttps://jobs.ashbyhq.com/ramp
Workdayhttps://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite
SmartRecruitersalso https://jobs.smartrecruiters.com/BoschGroup
Breezy HRhttps://company.breezy.hr
Pinpointhttps://company.pinpointhq.com
Company sitehttps://example.com/careers. The page HTML is scanned for boards of the systems above. This works for server-rendered pages; for pages that load the board with JavaScript, paste the board URL directly.

Output

One dataset item per job:

{
"title": "Security Engineer, Cloud",
"company": "ramp",
"location": "New York, NY (HQ)",
"locations": ["New York, NY (HQ)", "Remote (Canada)"],
"country": "USA",
"remote": true,
"workplaceType": "Hybrid",
"department": "Engineering",
"team": "Backend",
"employmentType": "FullTime",
"seniority": null,
"salary": "$211.4K–$290.6K",
"postedAt": "2026-04-07T17:12:35.753Z",
"updatedAt": null,
"url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application",
"descriptionHtml": "<h1><strong>About Ramp</strong></h1><p>…</p>",
"descriptionText": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams…",
"ats": "ashby",
"atsJobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"sourceUrl": "https://jobs.ashbyhq.com/ramp",
"scrapedAt": "2026-08-19T12:41:29.000Z"
}

Which fields are filled depends on what each ATS publishes. seniority comes from SmartRecruiters, Personio and Recruitee. salary comes from the ATS where it has a pay field (Lever, Ashby, Teamtailor, BambooHR, Recruitee, Breezy, Pinpoint); otherwise the actor looks for a pay range in the first part of the description text. With includeDescription off, descriptionHtml and descriptionText are left out.

If a URL fails (unknown board, no ATS found on a careers page), the dataset gets one row with sourceUrl and error (for example NO_SUPPORTED_ATS_DETECTED). These rows are not charged.

Pricing

Pay per event: you pay for each job saved to the dataset.

  • Now: $0.001 per job ($1 per 1,000 jobs).
  • From 9 October 2026: $0.002 per job ($2 per 1,000 jobs).

Worked example: 50 company career pages with an average of 120 open jobs each is 6,000 jobs. That is $6.00 at the current price and $12.00 from 9 October 2026. Jobs removed by keywords, locations, remoteOnly or postedWithinDays are not charged, so filtering to engineering roles only (say 1,500 jobs) brings the same run down to $1.50 now, or $3.00 after the change. Error rows cost nothing.

FAQ

Do I have to tell the actor which ATS a company uses? No. A job board URL is matched against the 12 known URL patterns. Any other URL is fetched and its HTML is searched for links, iframes or scripts that point to a supported board.

What can it not do? It does not render JavaScript, so a careers page that builds its board entirely in the browser may return NO_SUPPORTED_ATS_DETECTED; paste the board URL instead. It does not support systems outside the 12 listed (for example iCIMS, Taleo or SuccessFactors), and it does not log in or read internal job postings.

Do I need proxies? Normally no. The endpoints are public and the actor retries on HTTP 429 and 5xx with backoff. Turn on proxyConfiguration only if you run very large lists and see rate limits.

How does maxJobsPerCompany interact with the filters? For Greenhouse, Lever, Ashby, Teamtailor, Personio, Recruitee and Pinpoint the cap is applied after filtering. For Workday, SmartRecruiters, Workable, BambooHR and Breezy the actor stops fetching at the cap to save detail requests, and filters then run on those jobs, so a run with both a cap and filters can return fewer jobs than the cap.

How accurate is postedAt? It is the date the ATS publishes. Workday list pages only say "Posted 3 Days Ago", so with includeDescription off the Workday date is approximate and missing for "30+ days" jobs; with descriptions on, the job's start date from the detail page is used.

Which export formats and integrations are available? JSON, CSV, Excel, XML and HTML. You can call it from the Apify API, connect it to Google Sheets, Make, Zapier or n8n, or use it as an MCP tool.

Example pages

Example runs of this actor with real job boards:

The single-ATS versions have their own example runs: