Company Career Page Jobs Scraper (Greenhouse, Lever, Ashby) avatar

Company Career Page Jobs Scraper (Greenhouse, Lever, Ashby)

Pricing

from $1.00 / 1,000 job listing saveds

Go to Apify Store
Company Career Page Jobs Scraper (Greenhouse, Lever, Ashby)

Company Career Page Jobs Scraper (Greenhouse, Lever, Ashby)

Scrape jobs from company career pages and careers sites: Greenhouse, Lever, Ashby, Workable, Recruitee, Personio and SmartRecruiters. Enter company websites and the ATS job board is detected automatically. Never charges for a failed or empty result.

Pricing

from $1.00 / 1,000 job listing saveds

Rating

0.0

(0)

Developer

Pavel Tashev

Pavel Tashev

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

24 days ago

Last modified

Share

What does Company Career Page Jobs Scraper do?

Company Career Page Jobs Scraper collects every open job from company career pages. Enter company websites such as stripe.com or notion.so, and it finds each company's job board on Greenhouse, Lever, Ashby, Workable, Recruitee, Personio or SmartRecruiters, then returns clean, structured job data: title, department, team, locations, remote flag, employment type, salary ranges when published, full description, posting date and the job link.

No board names or API keys needed: paste a list of companies and click Start. Because it runs on the Apify platform, you get API access, scheduling, webhooks, integrations (Make, Zapier, n8n, Google Sheets) and run monitoring.

You are never charged for a failed or empty result

Every result says what it is, and only real results cost anything.

statusMeaningCharged
okA real resultYes
emptyWorked, but there was nothing to reportNo
failedCould not be done — the error field says whyNo
truncated / partialCut short by a limit you set; what was delivered is keptOnly the delivered part
skippedNot attempted, for example after the maximum cost per run was reachedNo

If every input fails, the run itself fails with an explanation instead of reporting success with no data.

Why use Company Career Page Jobs Scraper?

  • Automatic job board detection. It reads the company homepage and careers pages to find the job board link, and can also try the company name on each supported job board. In our tests it found the board for 15 of 15 companies that use a supported system.
  • Straight from the source. Jobs come from the public job board APIs that these systems publish for career sites, so data is fresh, complete and reliable.
  • One schema for six job boards. Salaries, locations and dates are normalized, so you can mix companies in one dataset.
  • Pay only for jobs you keep. Filter by keywords, locations, departments, remote, posting date, exclude words, salary floor, seniority and employment type; filtered-out jobs are never charged, and companies without a supported job board cost nothing.
  • Watch for new openings, not all openings. Turn on Only jobs not seen in an earlier run and a scheduled run returns — and bills — only what was posted since last time. A day when nobody posted costs nothing.

Typical uses: sales prospecting from hiring signals, recruiting and talent market maps, competitor hiring analysis, job boards and newsletters, salary benchmarking and giving AI agents a live view of who is hiring.

How to scrape jobs from company career pages

  1. Click Try for free.
  2. In Companies, add company websites (for example ramp.com), careers page links, or job board links (for example https://jobs.lever.co/palantir).
  3. Optionally add Keywords, Locations or Departments, or turn on Remote jobs only.
  4. Click Start. Most runs finish within a minute.
  5. Open the Output tab. Overview shows company, title, location, salary and job link; Details shows everything else. The COMPANIES_REPORT record shows which job board was found for each company.

Input

FieldDescriptionDefault
CompaniesWebsites, careers page links or job board links. Up to 500 per run; extra entries are skipped and reported in the run status.–
KeywordsComma-separated. A job matches if its title, department or description contains all words of at least one keyword.all jobs
LocationsKeep jobs whose location contains any of these texts (for example London, Germany, Remote). Up to 50.any
DepartmentsKeep jobs whose department or team contains any of these texts. Up to 50.any
Remote jobs onlyKeep only jobs marked remote.off
Posted within (days)Only jobs posted in the last N days.any date
Maximum jobs per company1–5,000500
Include job descriptionsTurn off for a smaller dataset.on
Exclude keywordsDrop jobs whose title, department, team or location contains any of these. A multi-word term matches only when every word appears.–
Minimum salaryKeep jobs whose stated salary reaches this figure.–
Only jobs that state a salaryOff by default — most ATS boards publish no salary, so turning this on hides most real openings.off
SeniorityIntern, junior, mid, senior or lead. Read from the job title, since an ATS rarely states a seniority of its own.any
Employment typeFull-time, part-time, contract, internship or temporary.any
Only jobs not seen in an earlier runDeliver only jobs no earlier run delivered.off
Memory nameSeparate memories for separate searches.default
Guess job boards from the company nameTry ramp on each job board when the website has no job board link. A guessed board is used only if it mentions the company's own domain, and at most 10 names are tried per company.on

Example input:

{
"companies": ["stripe.com", "notion.so", "https://jobs.lever.co/palantir"],
"keywords": "data engineer, machine learning",
"locations": ["Remote", "London"],
"postedWithinDays": 30
}

Output

Each job is one item in the dataset. A real example from a run on 15 September 2026 (description shortened):

{
"id": "ashby:ramp:34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"ats": "Ashby",
"companyInput": "https://jobs.ashbyhq.com/ramp",
"company": "Ramp",
"boardToken": "ramp",
"jobUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"title": "Security Engineer, Cloud",
"department": "Engineering",
"team": "Backend",
"location": "New York, NY (HQ)",
"locations": ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"],
"remote": true,
"employmentType": "Full-time",
"salaryMin": 211400,
"salaryMax": 290600,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salary": "USD 211,400–290,600 / year",
"description": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams...",
"postedAt": "2026-04-07T17:12:35.753000+00:00",
"updatedAt": null,
"scrapedAt": "2026-09-15T09:41:58.052097+00:00"
}

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

Output fields

FieldMeaning
ats, boardTokenJob board system and the company's board name on it. SmartRecruiters board names are case-sensitive (BoschGroup).
companyInput, companyWhat you entered and the company name
jobUrlJob posting / apply link
title, department, teamRole and where it sits
location, locations, remoteMain location, all locations, and whether the job is remote
employmentTypeFull-time, part-time, contract… as provided
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salarySalary range when the company publishes it (common on Greenhouse, Ashby and Recruitee)
descriptionPlain-text description with email addresses removed
postedAt, updatedAt, scrapedAtDates in ISO 8601, UTC

Watching for new jobs only

Turn on Only jobs not seen in an earlier run, schedule the Actor daily, and each run returns only what was posted since the last one. The Actor remembers the jobs it delivered in a key-value store in your own Apify account, named after Memory name, so two different searches can each keep their own memory.

Three details worth knowing, because they are the ones that decide whether this is trustworthy:

  • Only delivered jobs are remembered. A job dropped by your salary or seniority filter is never recorded, so if you loosen that filter next week the job still reaches you.
  • It looks at more jobs than it delivers. A newly posted job can sit behind hundreds that you have already received, so in this mode the Actor reads up to 1,000 openings per company regardless of Maximum jobs per company, which continues to cap what is delivered and charged.
  • A board with nothing new says so. A company whose openings were all delivered before returns one free row saying exactly that — not "no openings matching your filters", which would not be true.

How much does it cost to scrape company jobs?

This Actor uses pay-per-event pricing: you pay a small fee per job saved to your dataset. Jobs removed by your filters, duplicates and companies without a supported job board are never charged. See the Pricing tab for the current price per 1,000 jobs; platform compute is included. You can set a maximum cost per run, and the Actor stops cleanly when it is reached.

Tips

  • Use filters to pay only for relevant jobs. Large companies list hundreds of roles; keywords, locations and departments are applied before anything is saved.
  • Schedule a daily run with Posted within (days) set to 1 to track new openings.
  • Company not found? Check COMPANIES_REPORT. Paste the careers page or job board link instead of the homepage; some sites load jobs with JavaScript or block automated visits.
  • Hiring signals for sales: run your prospect list weekly and compare job counts by department.

Supported job boards and limitations

  • Supported: Greenhouse, Lever (including EU), Ashby, Workable, Recruitee, Personio, SmartRecruiters.
  • SmartRecruiters notes: board names are case-sensitive (BoschGroup, not bosch), so pass the board link when auto-detection misses it. Descriptions come from a second request per job, so keyword filters match the title, department and location rather than the description text.
  • Some companies keep their board on a careers subdomain that their robots.txt disallows (for example jobs.bosch.com). The Actor honours robots.txt and skips those pages; pass the job board link directly instead.
  • Not supported yet: Workday, BambooHR, iCIMS, Taleo, SuccessFactors and custom in-house career sites. Tell us in the Issues tab which system you need.
  • If a company's site won't let us read its /robots.txt (403, a timeout, or a server error), the address you entered is still read, but we don't go looking for careers pages, careers subdomains or sitemap entries on that site. Pass the job board link directly instead. A site with no robots.txt at all is treated as allowing everything.
  • The Actor only reads public job postings. It visits at most 6 pages per company website, follows each site's robots.txt and spaces out requests.

Enrich company and hiring data:

FAQ and support

Is it legal to collect job postings? The Actor reads public job postings through the job board APIs that Greenhouse, Lever, Ashby, Workable, Recruitee, Personio and SmartRecruiters document for career sites. Job descriptions belong to the employers; keep the job link when you republish them and follow applicable laws.

Does it collect personal data? No. It saves job postings only, drops recruiter contact fields and removes email addresses from descriptions.

Missing a field or a job board? Open an issue in the Issues tab. Custom hiring-data pipelines are available on request.