Company Career Page Scraper
Pricing
from $2.25 / 1,000 results
Company Career Page Scraper
Give it any company URL - it finds the career page, detects the ATS and pulls every open role from the source: Greenhouse, Lever, Ashby, Workday, Oracle HCM, SmartRecruiters, Workable. 33 fields with the real apply URL, posting date and filters, plus AI-extracted skills and salary.
Pricing
from $2.25 / 1,000 results
Rating
0.0
(0)
Developer
FalconScrape
Maintained by CommunityActor stats
7
Bookmarked
474
Total users
14
Monthly active users
6 days ago
Last modified
Categories
Security
Limited permissionsShare
🏢 Company Career Page Scraper: Job Data from Greenhouse, Lever, Ashby and Workday
Give the Company Career Page Scraper any company URL and it finds the career page, detects the applicant tracking system (ATS) and returns every open role as clean job data. It reads Greenhouse job boards, Lever, Ashby jobs, Workday jobs and eight more ATS platforms, and gives you one jobs API-style format for all of them, with AI-extracted skills, requirements and salary.
Jobs come from the employer's own board, not from an aggregator. That means the canonical apply URL, the real first-published date, and remote and employment-type fields as the ATS publishes them, rather than values guessed from a job board's listing text. No configuration and no manual career page hunting: company homepages in, structured job data out.
🎯 Use Cases
- Build a job data feed: aggregate open roles from hundreds of companies into one job feed for your job board, newsletter or HR tech product.
- Track hiring signals for sales: find companies hiring for a role or technology (a "Head of Data", a "Salesforce Admin") and reach them while the budget is fresh.
- Monitor competitors' hiring: see which teams rivals are growing, in which cities, and how fast, with a daily run.
- Job market data research: analyze skill demand, salary ranges and location patterns across industries using the AI-extracted fields.
- Investment research: follow hiring velocity as a signal for company growth or slowdown.
- Recruiting intelligence: pull every open role at your target accounts with the original apply links.
✨ Features
- Automatic career page discovery: give it a company homepage and it finds the career page and the ATS on its own. Board URLs work too.
- 12 ATS platforms in one format: Greenhouse, Lever, Ashby, Workday, Oracle HCM, SmartRecruiters, Workable, Radancy, Personio, BambooHR, Teamtailor and Recruitee. Every job comes out with the same 33 fields, whatever the source.
- AI enrichment: each description is turned into structured
skills,requirements,responsibilities,benefitsand asalarystring. The AI only extracts what the description states; a field that isn't mentioned stays empty. - Salary as numbers:
salaryMin,salaryMax,salaryCurrencyandsalaryPeriodwhen the employer publishes pay. - Location parsing: every location is split into city, region and country, and
remoteisyes,no,hybridorunknown. - Seniority detection: Intern, Junior, Mid, Senior, Staff, Lead or Executive, read from the job title.
- Real filters: keyword, location, workplace type, employment type and posting date. They read fields the ATS actually publishes, so they filter rather than merely appear to.
- Honest reporting: companies that cannot be resolved to a career page are named in the log and in
RUN_SUMMARY, with every route that was tried. You are never charged for a company it failed to resolve. - Fails loudly: a run that resolves nothing fails instead of returning an empty dataset that looks like success.
- Fast: most companies finish in seconds.
AI-extracted fields
| Field | What it holds | Example |
|---|---|---|
skills | Technical and soft skills mentioned | ["Python", "React", "Project Management"] |
requirements | Qualifications and experience needed | ["5+ years experience", "BS in Computer Science"] |
responsibilities | Key duties and deliverables | ["Design system architecture", "Mentor junior engineers"] |
benefits | Perks and compensation extras | ["Health insurance", "401k", "Remote work"] |
salary | Compensation as written | "$150,000 - $200,000 per year" |
🔌 Supported ATS Platforms: Greenhouse Job Boards, Ashby Jobs, Workday Jobs and More
| Platform | Typical employers |
|---|---|
| Greenhouse | Thousands of companies (Figma, Stripe, Airbnb, ...) |
| Ashby | Fast-growing startups (Notion, Ramp, ...) |
| Lever | Mid-market tech (Netflix, Navan, ...) |
| Workday | Enterprise (Amazon, Walmart, Visa, ...) |
| Oracle HCM | Enterprise (WM, Ford, DTCC, Nokia, ...) |
| SmartRecruiters | Enterprise and mid-market (Canva, Visa, Ubisoft, ...) |
| Workable | SMBs and scale-ups |
| Radancy | Large employers on their own domain (Chipotle, Kaiser Permanente, Sysco, Intuit, Wegmans) |
| Personio | European SMBs and scale-ups (KNIME, Matrix42, EQS Group, ...) |
| BambooHR | SMBs (Concept2, Fly.io, beehiiv, 350.org, ...) |
| Teamtailor | Nordic and European employers (Polestar, Oatly, SATS, Footasylum, ...) |
| Recruitee | European SMBs (Climeworks, GRID, Vandebron, Conclusion, ...) |
More platforms are planned, including iCIMS and Taleo.
Personio notes
- Paste the board URL (
https://knime.jobs.personio.com) or the company homepage. A homepage that links its Personio board resolves on its own. - Add
?language=de(or any board language) to the board URL to prefer that language. Personio descriptions are often filled in for one language only, so a job missing a description in your language gets it from the other (English and German). Each job is one row whatever the language, so translations are never charged twice. Titles stay as the employer wrote them. - Structured salary, all offices, department and contract or schedule come straight from Personio.
companyNameis the Personio subcompany, so a multi-entity board keeps each entity's own name. - Some employers switch off Personio's structured job data. Those boards are read from the public job pages instead (title, description, office; fewer structured fields).
- A board that redirects to personio.com is inactive and is reported as a failure in
RUN_SUMMARY, not as zero jobs.
BambooHR notes
- Paste the board URL (
https://concept2.bamboohr.com/careers) or the company careers page. A page that links or embeds its BambooHR board resolves on its own. A single job URL (/careers/46) returns the whole board. - Each job carries the full description, department, employment status as the employer labels it, workplace type (on-site, remote or hybrid), posting date and compensation text when published.
- A bare
$in compensation is left without a currency: BambooHR employers are in the US, Canada and elsewhere, and the board does not say which dollar. An explicit code (USD 50,000) is kept. A0placeholder is not reported as a salary. - An empty board is zero jobs. A board that redirects to bamboohr.com is retired and is reported as a failure in
RUN_SUMMARY, not as zero jobs.
Teamtailor notes
- Paste the board URL (
https://polestar.teamtailor.com/jobs), a custom-domain career site (https://careers.oatly.com) or the company homepage. Every page of the board is read, not just the first screen. - Each job carries the full description, all its locations, posting date and, when the employer shows them, department, remote status and employment type. Salary is included only when the employer publishes it (currency and period as given).
- A language path in the URL (
/en-GB/jobs) is kept as given. It changes the site's labels, not the job text, and a language the employer does not publish in can be empty. - An empty board is zero jobs. A tenant that does not exist is reported as a failure in
RUN_SUMMARY, not as zero jobs.
Recruitee notes
- Paste the board URL (
https://climeworks.recruitee.com), a custom-domain career site (https://werkenbij.vandebron.nl) or the company homepage. The whole published board is read. - Each job carries description and requirements, every location, department, employment type, workplace (remote, hybrid or on-site as the employer ticks it), and posting and update time (UTC). Salary is included only when the employer publishes a bound; a minimum-only salary stays minimum-only.
- "Published" is the employer's own flag in Recruitee. It is not a check that each job page opens: a few employers publish jobs whose pages redirect away.
- An empty board is zero jobs. A tenant that does not exist is reported as a failure in
RUN_SUMMARY, not as zero jobs.
🛠️ How It Works
- Add company URLs: homepages like
https://stripe.com, or career or board URLs directly (for example an Oracle HCM candidate site). - Run it: the scraper finds each company's career page, identifies the ATS, extracts every open role, applies your filters and enriches each job with AI.
- Get your job data: download JSON, CSV or Excel, or pull the dataset through the Apify API. A
RUN_SUMMARYrecord in the key-value store shows how many companies were requested, resolved and missed, which ATS handled each one, and how many jobs your filters removed.
Watch the 2-minute walkthrough: a list of company websites and role keywords in, matching open jobs with their source boards out.
How companies are resolved
Each company goes through several discovery routes, all free to you. An ATS board always wins over a plain career page: the search keeps going until it finds a board it can read, and only falls back to a page if none exists. The routes cover the URL you supplied, ATS links on the homepage, the company's likely board name, common career paths (/careers, /jobs, jobs.<domain>), the sitemap and site links, and a cross-company Workable directory matched on the company's own website domain.
A board found from the domain is checked against the company's name and, where the board declares one, its website, so you do not receive another company's postings by accident. If several job systems answer for one company, the board that names the company's website wins, then the largest. Some boards publish no website, and Ashby boards often show no company name, so those are accepted on weaker evidence.
Not every company resolves. Career pages built entirely in the browser, and enterprises on tenanted systems, can leave nothing for discovery to find. When that happens the company is reported by name with the routes tried, and you are not charged for it. Paste the board URL directly and it will work.
⚙️ Input
| Field | Type | Default | What it does |
|---|---|---|---|
startUrls | array | Figma, Notion | Company homepage URLs, or ATS board URLs directly |
maxJobsPerCompany | integer | 200 | Maximum job listings saved per company. With filters on, it counts matching jobs |
keywords | array | [] | Keep only jobs whose title, department or team contains any of these |
location | string | "" | Keep only jobs whose location matches this text (e.g. "United States", "Berlin") |
workplaceType | array | [] | remote, hybrid and/or on-site |
employmentType | array | [] | e.g. Full-time, Part-time, Contract, Internship |
postedAfter | string | "" | ISO date: keep only jobs first published on or after it |
enrichWithAI | boolean | true | Turn off for a faster run that returns the raw ATS fields only |
Filters combine with AND. A job whose ATS does not publish a filtered field is kept, not dropped: "this ATS does not say" is not the same answer as "no". Jobs with no posting date are always kept by postedAfter.
{"startUrls": [{ "url": "https://www.notion.so" },{ "url": "https://www.figma.com" },{ "url": "https://emcm.fa.us2.oraclecloud.com/hcmUI/CandidateExperience/en/sites/WMCareers/jobs" }],"maxJobsPerCompany": 50,"keywords": ["engineer"],"workplaceType": ["remote"]}
💰 Pricing
Pay only for the jobs you get. No monthly rental, and no charge for companies that could not be resolved. AI enrichment is included in the job price.
| Event | Price | What you get |
|---|---|---|
| Job (Free and Bronze plans) | $0.003 per job ($3.00 per 1,000) | One job with all 33 fields |
| Job (Silver plan) | $0.0027 per job ($2.70 per 1,000) | Same |
| Job (Gold, Platinum and Diamond plans) | $0.00225 per job ($2.25 per 1,000) | Same |
| Actor start | $0.00005 per run | Charged when the run starts (one per GB of memory, at least one) |
Examples on the Free plan: one company with 50 open roles = $0.15 · 1,000 jobs = $3.00 · 10,000 jobs = $30.00. On Gold, the same 1,000 jobs cost $2.25.
📊 Sample Output Data
{"companyDomain": "notion.so","companyName": "Notion","source": "ashby","atsBoardToken": "notion","careersUrl": "https://jobs.ashbyhq.com/notion","jobId": "ashby-6f5d0bc7-dd9e-48fd-9a1d-733ad391e151","title": "Senior Treasury Manager","location": "San Francisco, California","locationCity": "San Francisco","locationRegion": "California","locationCountry": "United States","remote": "hybrid","employmentType": "Full-time","department": "Finance","team": "Finance","seniority": "Senior","requisitionId": "","postedAt": "2026-08-07T15:40:32.480+00:00","updatedAt": "","descriptionHtml": "<h1>Who We Are</h1><p style=\"min-height:1.5em\">Notion is the collaborative AI workspace…","descriptionText": "WHO WE ARE\n\nNotion is the collaborative AI workspace where teams and agents think together…","jobUrl": "https://jobs.ashbyhq.com/notion/6f5d0bc7-dd9e-48fd-9a1d-733ad391e151","applyUrl": "https://jobs.ashbyhq.com/notion/6f5d0bc7-dd9e-48fd-9a1d-733ad391e151/application","skills": ["Bachelor's degree in Finance, Economics, or related field","MBA or CTP preferred","10+ years of progressive treasury experience","Strong understanding of global treasury operations","Cash management expertise","Experience with treasury management systems","Excellence in financial modeling and analysis","Multinational experience with foreign currency","Strong leadership skills","Strong communication skills"],"requirements": ["Bachelor's degree","10+ years of treasury experience","Preferably in a high-growth tech company"],"responsibilities": ["Manage global treasury operations","Cash management","Forecasting and investments","Banking relationships","Optimize capital structure","Ensure liquidity","Implement risk management strategies","Create and maintain treasury policies","Deploy treasury technology infrastructure","Manage foreign exchange risk","Partner with finance teams"],"benefits": ["Highly competitive cash compensation","Equity","Benefits"],"salary": "$210,000 - $240,000 per year","salaryMin": 210000,"salaryMax": 240000,"salaryCurrency": "USD","salaryPeriod": "year","scrapedAt": "2026-10-20T06:05:55.697Z"}
source names the ATS the job came from and careersUrl is the board it was read from. postedAt is the first-published date from the ATS, and applyUrl goes straight to the employer's application form. skills, requirements, responsibilities, benefits and salary are the AI-extracted fields; salaryMin, salaryMax, salaryCurrency and salaryPeriod are the numeric pay range.
🔁 Schedule a Daily Job Data Feed
For hiring signals and competitor monitoring, run it once a day with the same company list: each run is a dated snapshot of every open role, so new and closed roles show up when you compare runs. Set it up in Apify Schedules. Send the results to Google Sheets, Zapier, Make, n8n or a webhook with Apify integrations, so new job postings land where your team already works.
🤖 Use with AI Agents (MCP)
This Actor works as a tool in Claude, ChatGPT, Cursor and other MCP clients through the Apify MCP server (https://mcp.apify.com). An agent can call it with:
{ "startUrls": [{ "url": "https://www.notion.so" }], "maxJobsPerCompany": 20, "keywords": ["engineer"] }
❓ FAQ
Is there an API for company job postings? Each ATS vendor (Greenhouse, Lever, Ashby, Workday and others) exposes job boards per company, but to use them you have to know which ATS each company runs and its board name, and every vendor returns a different format. This Actor works as a single jobs API across all of them: you give it company URLs, it detects the ATS and board, and it returns one normalized format with no keys or accounts.
Is there a Greenhouse API or Workday jobs API I can use instead? Greenhouse publishes a job board API per company, and Workday career sites are per employer. Both work one company at a time and in their own format. Use this Actor when you want Greenhouse, Workday and the other platforms in the same 33 fields, with discovery done for you.
Do I need an account or login? No. It reads public career pages and job boards only.
Why is a field empty? It is empty when the ATS or the employer does not publish it: many boards have no salary, employment type or requisition ID, and seniority stays empty when the title gives no level. remote is unknown when the ATS does not say. With enrichWithAI off, the AI-extracted fields are empty.
Why did a company return no jobs? Either the board is empty (zero jobs, still a success) or the company could not be resolved, which is listed in RUN_SUMMARY with the routes tried and not charged. Paste the company's board URL directly to fix it.
Are there limits? maxJobsPerCompany caps the jobs saved per company (default 200). With filters on, it counts jobs that match, and up to 5,000 jobs per company are checked. Some companies have no readable board, especially career pages built entirely in the browser and enterprises on tenanted systems not listed above.
How do I get job market data for many companies at once? Put all the company URLs in one run. Every job comes out in the same format, so you can compare salaries, skills and locations across employers straight away.
🔗 Related Scrapers
- ATS Jobs Monitor: watches company job boards on a schedule and returns only roles opened or closed since the last check.
- LinkedIn Company Jobs Scraper: every open role at named companies as listed on LinkedIn, to cross-check against their own boards.
- Workable Jobs Scraper: search Workable jobs across all employers by keyword and location.
- Google Jobs Scraper: job listings from Google Jobs for any title and location, for market-wide searches.
- Indeed Jobs Scraper: Indeed listings in 60+ countries with salary, job type and remote status.