Career Site Jobs Scraper avatar

Career Site Jobs Scraper

Pricing

from $0.50 / 1,000 jobs

Go to Apify Store
Career Site Jobs Scraper

Career Site Jobs Scraper

Reads the open jobs of the companies you list straight from their career sites on 14 applicant tracking systems, Greenhouse, Lever, Workday and Ashby among them. Enter domains or board links; the actor finds each company's system, and every job can carry your own reference, such as a CRM ID.

Pricing

from $0.50 / 1,000 jobs

Rating

0.0

(0)

Developer

deriverge s.r.o.

deriverge s.r.o.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

3 days ago

Last modified

Share

Career Site Jobs Scraper reads the open jobs of the companies you list, straight from their career sites on 14 applicant tracking systems, and returns them in one table with the same fields. Enter company domains such as stripe.com, board links or short forms such as greenhouse:airbnb and click Start; the actor finds out which system each company uses. Companies on other systems, such as Taleo, are skipped and named in the run summary. With an empty list, it searches our daily index instead. It costs $1.00 per 1,000 jobs on the Free plan ($0.50 on Business), and the $5 of monthly credit in Apify's Free plan covers about 5,000 jobs.

What data does it return?

FieldDescription
atsSystem the job came from: greenhouse, lever, ashby, workday, smartrecruiters, workable, recruitee, teamtailor, bamboohr, personio, rippling, breezy, oracle or icims.
input, referenceThe entry you gave, such as stripe.com, and the reference you attached to it (prospect-118), repeated on each of that company's jobs.
company, companyName, companyWebsiteBoard identifier from the link (stripe), the company name the board shows (Stripe) and, on Ashby and some Lever boards, the company's website.
title, department, teamAs the company files the job. Only Lever and Ashby have teams.
locations, countriesEvery location of the job and the two-letter country codes read from them: South San Francisco, CA gives US.
workArrangement, remote, workplaceTyperemote, hybrid or onsite, decided from the workplace field, the location and the ad, next to the system's own remote flag and workplace wording.
employmentType, employmentTypesThe system's wording and the normalized types, such as full-time or contract.
seniority, jobCategoryLevel read from the title and one of 21 job categories, finance for the Stripe tax role in the sample.
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriodPay as the system publishes it and as numbers. A range written in the description counts too; the Stripe range in the sample comes from there.
salaryYearlyMin, salaryYearlyMaxThe same pay converted to a year, so hourly and monthly pay can be compared.
skills, experienceYearsMin, experienceYearsMax, educationLevelRead from the description: SOX, SQL, PL/SQL, 8 years and bachelor in the sample.
visaSponsorship, languageWhether the ad says the company sponsors visas (null when it does not say) and the ad's language code (en).
postedAt, updatedAtPublication date where the system gives one; updatedAt comes only from Greenhouse.
url, applyUrlJob page and application link. Personio, Teamtailor, Rippling, Oracle and iCIMS put the form on the job page, so both links are the same there.
descriptionThe ad as plain text, with Include the full job description or any filter that reads it.
key, jobId, firstSeenAtA key built as ats:company:jobId that stays the same across runs, the job's own ID, and when this run read it.

How to scrape jobs from company career sites

  1. In Career sites, add one company per line. A domain (stripe.com), a board link (https://jobs.ashbyhq.com/notion) and ats:slug (greenhouse:airbnb) all work, and one list can mix systems.
  2. To keep your own ID with a company, enter it as an object: {"url": "stripe.com", "reference": "prospect-118"}. The reference comes back on every job of that company.
  3. Narrow the results with Title keywords, which match the title, department and team, and with Countries, Locations, Remote jobs only, Posted within the last N days and the job filters for seniority, category, pay and more.
  4. Turn on Include the full job description when you need the ad text or the fields read from it, and set Maximum jobs per company for a first test.
  5. Click Start. Boards are read four at a time and the Output tab fills as they finish; download it as CSV, Excel or JSON. API users can send an input like this one:
{
"companies": [
"stripe.com",
"https://jobs.ashbyhq.com/notion",
"https://ats.rippling.com/rippling/jobs",
{ "url": "greenhouse:airbnb", "reference": "prospect-118" }
],
"keywords": ["engineer"],
"includeDescription": true,
"maxJobsPerCompany": 20
}

Example output

One row from a run on 30 September 2026 whose list held stripe.com with the reference prospect-118, with descriptions on. Its description is shortened to the first sentence.

{
"key": "greenhouse:stripe:8145117",
"ats": "greenhouse",
"company": "stripe",
"companyName": "Stripe",
"jobId": "8145117",
"title": "Business Systems Architect (Tax)",
"locations": [
"South San Francisco, CA"
],
"remote": null,
"department": "Global Operations",
"team": null,
"employmentType": null,
"workplaceType": null,
"salaryText": null,
"postedAt": "2026-08-20T19:44:11.000Z",
"updatedAt": "2026-09-25T20:44:56.000Z",
"url": "https://stripe.com/jobs/search?gh_jid=8145117",
"applyUrl": "https://stripe.com/jobs/search?gh_jid=8145117",
"description": "Who we are\n\nAbout Stripe\n\nStripe, LLC. is a financial infrastructure platform for businesses. …",
"language": "en",
"reference": "prospect-118",
"input": "stripe.com",
"firstSeenAt": "2026-09-30T00:43:40.207Z",
"seniority": "mid",
"jobCategory": "finance",
"employmentTypes": [],
"workArrangement": "onsite",
"countries": [
"US"
],
"salaryMin": 274456,
"salaryMax": 334600,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salaryYearlyMin": 274456,
"salaryYearlyMax": 334600,
"visaSponsorship": null,
"skills": [
"SOX",
"SQL",
"PL/SQL"
],
"experienceYearsMin": 8,
"experienceYearsMax": null,
"educationLevel": "bachelor"
}

How much does it cost to scrape company career sites?

Free planStarterScaleBusiness
1,000 jobs$1.00$0.80$0.65$0.50

You pay only for the events in the table. There is no start fee, and compute time and proxies are included.

Reading 50 companies with about 40 open jobs each, 2,000 jobs in all, costs $2.00 on the Free plan and $1.00 on Business. Jobs removed by your filters, jobs the new-only mode skips and companies on unsupported systems are not charged.

Limits

  • A site is read up to 4,000 jobs per run on Workday, Oracle and SmartRecruiters and 400 on Workable. An iCIMS portal is read for 30 result pages: 600 jobs where it lists 20 per page, 1,500 where it lists 50. Teamtailor's job feed lists at most 100 jobs per company.
  • Where a description takes one request per job, only part of a large site gets one: the first 500 jobs on SmartRecruiters and Workable, 300 on Workday, BambooHR, Rippling and Oracle, and 200 on iCIMS. Greenhouse, Lever, Ashby, Recruitee, Teamtailor, Personio and Breezy HR send descriptions with the job list.
  • On iCIMS and Rippling the posting date and pay, and on Rippling the employment type too, come from each job's page, which the actor opens for every job only with descriptions on.
  • An iCIMS portal that answers with a CAPTCHA is skipped.
  • Each Personio career site has its own robots.txt, and the actor reads it first. A site whose robots.txt disallows the job feed is skipped with a note in the SUMMARY record and a warning in the log, and nothing is charged for it.
  • Workday lists no company name. companyName comes from the job page, which names the legal entity that posted the job (NVIDIA USA for NVIDIA's US jobs); a job whose page was not opened gets the name of opened jobs in the same country, or the one most jobs on the site carry.
  • Internal and unlisted openings never reach a public board, so no system returns them.

Which career sites does it read?

SystemExample of a link it accepts
Greenhousehttps://job-boards.greenhouse.io/gitlab
Leverhttps://jobs.lever.co/spotify, https://jobs.eu.lever.co/adaptovate
Ashbyhttps://jobs.ashbyhq.com/notion
Workdayhttps://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite
SmartRecruitershttps://jobs.smartrecruiters.com/boschgroup
Workablehttps://apply.workable.com/suade/
Recruiteehttps://aaff.recruitee.com
Teamtailorhttps://attendosverige.teamtailor.com
BambooHRhttps://altis.bamboohr.com/careers
Personiohttps://academia-holding-gmbh.jobs.personio.de
Ripplinghttps://ats.rippling.com/rippling/jobs
Breezy HRhttps://sabanto.breezy.hr
Oracle Recruiting Cloudhttps://jpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001
iCIMShttps://careers-ameritfleet.icims.com

A domain works when the company's careers page links to one of these systems. When it does not, the actor tries likely board names on Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Teamtailor and BambooHR and accepts a board only when its own data confirms the company, for example by containing the domain. That is how stripe.com was matched to Stripe's Greenhouse board.

Getting only new jobs

Turn on Return only jobs posted since the last run, give the run a Watch name (a saved task gets its own automatically) and schedule it, for example every morning. Each run compares the boards with the snapshot of the previous run and returns only jobs whose key was not in it, so every opening reaches you once. A job held back by Maximum jobs per company, or because the run reached its maximum cost, is not marked as seen and comes with the next run. The CHANGES record of the run counts new, closed and retitled jobs. The first run under a new watch name returns every job and saves the snapshot.

Searching without a list

Leave Career sites empty and the actor searches our daily index of company career sites instead: more than 1,490,000 open jobs on all 14 systems on 29 September 2026, newest first, up to Maximum jobs (index search), which is 1,000 when empty. Index rows differ a little: company holds the company name, companySlug the board identifier, and there is no input or reference. They add careerSiteUrl, the address of the company's board, and indexDate, scrapedAt and descriptionIncluded. Title keywords match only the title there, and Exclude title keywords checks the title and the company name. With descriptions off, rows come from the last build, so a job closed since then can still appear. With Include the full job description on, each job is re-read on its board and closed ones are dropped.

FAQ

The actor reads job ads that companies publish on public career sites, through the same interfaces those pages load their jobs from. It stores no candidate data and leaves out the recruiter contact fields some systems attach to a job. Using the results lawfully, for example in sales outreach, is up to you.

Why was a company skipped?

The SUMMARY record in the run's key-value store gives the reason for each one: an address on a system outside the 14, a domain whose careers page links to no supported system and that matched no board, or a board the system reports as not found. Skipped companies cost nothing.

How long does a run take?

It depends on the systems. A list of three boards with 990 jobs took about 40 seconds without descriptions. A daily watch over Stripe, Notion and NVIDIA's Workday site took under five minutes, most of it spent reading the 4,000 Workday jobs.

Support

This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.