Career Site Jobs Scraper — Greenhouse, Lever, Ashby & Workday avatar

Career Site Jobs Scraper — Greenhouse, Lever, Ashby & Workday

Pricing

Pay per event

Go to Apify Store
Career Site Jobs Scraper — Greenhouse, Lever, Ashby & Workday

Career Site Jobs Scraper — Greenhouse, Lever, Ashby & Workday

Career site jobs scraper and API for Greenhouse, Lever, Ashby, Workday + 5 more ATS. Paste career URLs or search a company directory: title, location, salary, remote, description.

Pricing

Pay per event

Rating

5.0

(1)

Developer

Tristan Leroux

Tristan Leroux

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

Get every open job straight from company career sites: paste a careers link (Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, Personio or Breezy) or search a built-in directory of 487 verified companies, and receive clean job records with title, location, remote flag, salary, description and apply link. No login, no cookies and no API key needed. Export as JSON, CSV or Excel, or pull results through the Apify API.

What does Career Site Jobs Scraper do?

Career Site Jobs Scraper reads the public job boards that companies publish through their applicant tracking system (ATS) and turns every open position into one normalized record — the same fields whatever the ATS. It supports 9 ATS: Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, Personio and Breezy HR.

Three ways to choose what to scrape:

  • Career page URLs — paste links such as https://boards.greenhouse.io/stripe, https://jobs.ashbyhq.com/ramp or https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite. The ATS is detected automatically; job-detail links and a company's own careers page (when it embeds or links to one of these boards) work too.
  • Company directory search — no URLs needed: search 487 verified company boards at once (207 Greenhouse, 146 Ashby, 55 Workday, 28 Lever, 22 SmartRecruiters and more) by keyword, location, remote and posting date.
  • Boards — an {ats, slug} list for integrations that already know board identifiers.

Data comes live from each company's own career site at run time, so it is as fresh as the company's listing.

Use cases

  • Recruiters and sourcers — track every open role at target companies and spot new hiring teams before they hit job boards.
  • Job seekers and job-board builders — collect remote "data engineer" or "product designer" roles across hundreds of tech companies in one run.
  • Sales and RevOps teams — use hiring activity (e.g. a company opening 20 security roles) as a buying signal for outbound.
  • Market and labour researchers — measure hiring by company, location, department and salary range over time.
  • Investors and analysts — monitor headcount plans of portfolio and public companies via their Workday or Greenhouse boards.
  • HR tech and AI agents — feed normalized, deduplicated job data into matching, enrichment or RAG pipelines.

How much does it cost?

You pay only for jobs saved to your dataset (pay-per-event). Prices in USD:

EventWhat you pay forFree planPaid plans (from)
jobone job record saved to the dataset$3.00 per 1,000$1.50 per 1,000 (Gold+)

Duplicates and jobs above your Max jobs limit are never charged. A tiny platform start fee ($0.00005 per run) applies.

Examples:

  • 1,000 jobs from 20 company boards on the Free plan cost $3.00.
  • A daily directory search returning 300 new remote jobs is ~9,000 jobs a month: $27 on the Free plan, $13.50 on Gold+.

The Apify Free plan includes $5 monthly credit — about 1,600 jobs every month at no cost.

How to use Career Site Jobs Scraper

  1. Open the actor in Apify Console and click Try for free.
  2. Paste one or more career page URLs (the form is prefilled with Stripe, Ramp and Outreach), or tick Search the company directory and type a keyword such as data engineer.
  3. Optionally set Location contains, Remote only, Posted within (days) and Max jobs.
  4. Click Start. Jobs appear in the dataset as they are found.
  5. Download as JSON, CSV or Excel, or call the actor through the API (see below).

Input

FieldTypeDescription
startUrlsarray of stringsCareer page URLs; the ATS is detected automatically.
boardsarrayAlternative to URLs: {"ats": "greenhouse", "slug": "stripe"}; Workday slug format is tenant.wdN/site.
searchDirectorybooleanSearch all 487 companies in the built-in directory.
directoryAtsarrayLimit the directory search to some ATS, e.g. ["workday", "greenhouse"].
directoryCompaniesarray of stringsLimit the directory search to companies whose name contains these words.
maxCompaniesintegerSearch at most this many directory companies (largest employers first).
querystringKeyword phrase matched in the job title or description (case-insensitive). In directory search it is matched against job titles only.
locationstringText matched in the job location, e.g. Berlin or Remote.
remoteOnlybooleanKeep only jobs the career site marks as remote.
postedWithinDaysintegerKeep jobs published within N days.
maxItemsintegerMax jobs to save (and pay for); default 1,000.
includeDescriptionbooleanInclude the description as HTML and text (default on).
proxyConfigurationobjectOptional Apify Proxy settings.

Provide at least one of startUrls, boards or searchDirectory.

Career page URLs:

{
"startUrls": [
"https://boards.greenhouse.io/stripe",
"https://jobs.ashbyhq.com/ramp",
"https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite"
],
"maxItems": 100
}

Directory search:

{
"searchDirectory": true,
"query": "data engineer",
"remoteOnly": true,
"maxItems": 200
}

Output

One record per job. Example from a real directory-search run (description shortened):

{
"id": "ashby:fc5bbc77-a30c-4e7a-9acc-8a2e748545b4",
"ats": "ashby",
"company": "OpenAI",
"companySlug": "openai",
"title": "Data Engineer",
"department": "Applied AI",
"location": "San Francisco, Mountain View",
"remote": true,
"employmentType": "Full-time",
"salary": {
"min": 235000,
"max": 385000,
"currency": "USD",
"period": "year",
"raw": "$235K – $385K"
},
"descriptionHtml": "<h3><strong>About the team</strong></h3><p style=\"min-height:1.5em\">The Applied team works across research, engineering, product, and design to bring OpenAI’s t…",
"descriptionText": "About the team\nThe Applied team works across research, engineering, product, and design to bring OpenAI’s technology to consumers and businesses.\nWe seek to lea…",
"applyUrl": "https://jobs.ashbyhq.com/openai/fc5bbc77-a30c-4e7a-9acc-8a2e748545b4/application",
"postedAt": "2023-09-26T22:34:48.884000Z",
"updatedAt": null,
"sourceUrl": "https://jobs.ashbyhq.com/openai/fc5bbc77-a30c-4e7a-9acc-8a2e748545b4",
"scrapedAt": "2026-11-02T14:44:56.734390Z"
}

Field notes:

  • id is "{ats}:{job id}" and stays the same for the same posting across runs.
  • ats is the source system; companySlug is the board identifier (tenant.wdN/site for Workday).
  • remote is true, false, or null when the career site gives no signal.
  • salary is {min, max, currency, period, raw} when the company publishes pay (common on Ashby, Lever, Greenhouse US boards), otherwise null.
  • postedAt / updatedAt are ISO-8601 UTC timestamps; applyUrl is the application page.
  • The same job found twice (e.g. via a URL and the directory) is saved and charged once.

Integrations and API

Run the actor and get results with one HTTP call:

curl -X POST "https://api.apify.com/v2/acts/innolabs~career-site-jobs-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls": ["https://boards.greenhouse.io/stripe"], "remoteOnly": true, "maxItems": 50}'

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("innolabs/career-site-jobs-scraper").call(
run_input={"searchDirectory": True, "query": "data engineer", "remoteOnly": True, "maxItems": 200}
)
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["company"], job["title"], job["location"], job["applyUrl"])

Connect results to Make, Zapier, n8n, Google Sheets, Slack or webhooks, and schedule runs (e.g. daily) in Apify Console. AI agents can call this actor through the Apify MCP server at https://mcp.apify.com.

FAQ

The actor only reads job postings that companies publish publicly for anyone to see, through the same public endpoints their career pages use. It collects no candidate or personal data. Check the terms of use and laws that apply to your use case.

Do I need proxies?

Usually not: career-site APIs are public and answer without login. Proxy settings are available if a site rate-limits you. Workable limits bursts of requests per IP, so Workable boards are read one after another and the actor waits briefly when asked to slow down.

How many jobs can I get?

All open jobs of each board (Workday boards: up to the total the site lists — e.g. 2,000 for NVIDIA). maxItems is a hard cap; the run stops as soon as it is reached and you never pay for more.

Can I get only new jobs?

Each run returns the jobs currently open. For a "new jobs" feed, schedule a daily run with Posted within (days) = 1, or keep the id values you have already seen and skip them downstream.

What happens if a URL or company fails?

That board is skipped and listed in the run's SUMMARY record with the reason (e.g. "unrecognised URL" or an HTTP error); all other boards continue. The run only fails if nothing at all could be read.

My company isn't in the directory — can I still scrape it?

Yes. Paste its careers URL into Career page URLs. Any board on the 9 supported ATS works, not only directory companies.

Limits

  • Supported: Greenhouse, Lever (incl. EU), Ashby, Workday (*.myworkdayjobs.com), Workable, SmartRecruiters, Recruitee, Personio, Breezy HR. iCIMS, Taleo, SuccessFactors and custom in-house career sites are not supported.
  • The directory holds 487 companies verified on 2026-11-02 — mostly tech companies and startups, plus large Workday employers. It is a curated list, not every company on these ATS; companies change ATS over time.
  • A directory search reads hundreds of boards and is slower than a URL run: a remote "data engineer" search across all 487 companies took about 1.5 minutes on the platform; URL runs usually finish in seconds.
  • Keyword matching is a case-insensitive phrase match on title or description; in directory search it matches job titles only. On Workday and SmartRecruiters the site's own search narrows results first, so rare spelling variants may be missed there.
  • Workday, SmartRecruiters and Breezy need one extra request per job for full details, so they are slower than Greenhouse, Lever or Ashby.
  • Salary appears only when the company publishes it.