Universal Career Site & ATS Jobs Scraper
Pricing
from $1.00 / 1,000 job results
Universal Career Site & ATS Jobs Scraper
Scrape every available job from company career sites and ATS platforms, including Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Recruitee, Personio, and BambooHR. Get titles, locations, salaries, descriptions, apply URLs, and raw source fields. No ATS API key required.
Pricing
from $1.00 / 1,000 job results
Rating
0.0
(0)
Developer
DataForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
๐ผ Universal Career Site Jobs Scraper
Collect complete, structured job data from company websites and leading applicant tracking systems โ with one Actor and no ATS API keys.
Give the Actor a company homepage, a careers page, or a direct ATS board. It detects the source, follows every available result page, enriches job details when needed, removes duplicates, and returns one clean dataset row per vacancy.
๐ก Why this Actor
- ๐ One Actor for every source โ company websites and native ATS platforms like Greenhouse, Lever, Ashby, Workday, and more
- ๐ No ATS API keys โ works from publicly exposed career pages and supported ATS boards
- ๐งญ Homepage-to-jobs discovery โ detects the source and finds the Careers or Jobs portal automatically
- ๐งฑ Normalized, export-ready data โ consistent columns across platforms, downloadable as JSON, CSV, Excel, XML, or RSS
- ๐งฌ Nothing silently discarded โ every native ATS field is preserved in
rawJsonand flattenednative__...columns - ๐งพ Transparent failures โ unreadable or empty sources become error rows while successful companies are kept
๐ธ Sample output

A real run's output โ exportable to JSON, CSV, or Excel.
๐ What this Actor can do
- Find a companyโs Careers or Jobs portal from its normal website
- Detect supported ATS platforms automatically
- Collect every available job when both result limits are set to
0 - Follow native pagination instead of stopping after the first page
- Fetch full descriptions and additional job-detail fields
- Normalize jobs from different platforms into consistent columns
- Preserve platform-specific fields in
rawJsonand flattenednative__...columns - Extract Schema.org
JobPostingdata from custom career pages - Archive original source responses for audits and debugging
- Process multiple companies concurrently in one run
- Report unreadable or empty sources as transparent error rows
โ Supported career platforms
| Platform | Coverage | Full descriptions | Native fields |
|---|---|---|---|
| Greenhouse | Native, all jobs | โ | โ |
| Lever | Native, all pages | โ | โ |
| Ashby | Native, all jobs | โ | โ |
| Workable | Native + job details | โ | โ |
| SmartRecruiters | Native, all pages + details | โ | โ |
| Workday | Native, all pages + details | โ | โ |
| Recruitee | Native, all jobs | โ | โ |
| Personio | Native, all jobs | โ | โ |
| BambooHR | Native + job details | โ | โ |
| Custom career sites | Structured data + conservative HTML fallback | When exposed | โ |
The universal fallback can read other platforms and custom company sites when their public pages expose JobPosting structured data or server-rendered job details. Because custom sites vary, direct support depends on what the supplied page makes publicly available.
๐งญ What URL should I enter?
Any of these can work:
https://example.comhttps://example.com/careershttps://boards.greenhouse.io/companyhttps://jobs.lever.co/companyhttps://jobs.ashbyhq.com/companyhttps://company.wd5.myworkdayjobs.com/External
A direct ATS or career-board URL is the fastest and most precise input. If you only know the company homepage, keep Find career pages automatically enabled.
๐๏ธ Input options
| Option | What it controls | Default |
|---|---|---|
startUrls | Company websites, career pages, or direct ATS boards | Required |
maxJobsPerSource | Maximum jobs per supplied company; 0 means all | 0 |
maxJobsTotal | Global cap across the whole run; 0 means unlimited | 0 |
includeDescriptions | Fetch detail endpoints when a listing omits its description | true |
includeRawData | Keep rawJson and flattened native__... fields | true |
saveRawResponses | Archive successful source responses in key-value storage | false |
discoverFromCompanyWebsite | Find the Careers or Jobs portal automatically | true |
maxDiscoveryPages | Pages checked while discovering a career portal | 5 |
maxPagesPerSource | Safety limit for unknown/custom career sites | 500 |
maxConcurrency | Sources and job details processed in parallel | 10 |
maxRetries | Attempts for temporary source or network failures | 5 |
proxyConfiguration | Optional Apify or custom proxy configuration | Apify Proxy |
Collect every available job
{"startUrls": [{ "url": "https://jobs.ashbyhq.com/openai" },{ "url": "https://boards.greenhouse.io/anthropic" },{ "url": "https://adobe.wd5.myworkdayjobs.com/external_experienced" }],"maxJobsPerSource": 0,"maxJobsTotal": 0,"includeDescriptions": true,"includeRawData": true}
Create a lightweight monitoring feed
{"startUrls": [{ "url": "https://example.com/careers" }],"maxJobsPerSource": 100,"includeDescriptions": false,"includeRawData": false,"saveRawResponses": false}
Audit the exact source payloads
{"startUrls": [{ "url": "https://jobs.lever.co/company" }],"includeRawData": true,"saveRawResponses": true}
๐ฆ Output data
Each vacancy is stored as one flat dataset item. Common fields include:
- Identity:
ats,company,companySlug,jobId,requisitionId,title - Location:
location,locations,city,region,country,postalCode - Organization:
department,departments,team,seniority,experienceLevel - Work model:
employmentType,workplaceType,remote,hybrid,onSite - Compensation:
salary,salaryMin,salaryMax,salaryCurrency,salaryPeriod - Job content:
descriptionHtml,descriptionText,requirements,responsibilities,qualifications,skills,benefits - Links and dates:
jobUrl,applyUrl,postedAt,updatedAt,expiresAt - Traceability:
inputUrl,sourceUrl,sourcePage,scrapedAt
When Include every native ATS field is enabled:
rawJsoncontains the complete source job objectnative__...columns expose nested source fields in a CSV- and Excel-friendly form
This dual format gives you consistent universal columns without silently discarding uncommon ATS-specific values.
Example job row
{"recordType": "job","ats": "ashby","company": "Example Company","jobId": "8d96c76b-1234-5678-9abc-e0f123456789","title": "Senior Software Engineer","location": "San Francisco, CA","department": "Engineering","employmentType": "FullTime","workplaceType": "Hybrid","remote": false,"descriptionText": "Build reliable products used by customers worldwide...","jobUrl": "https://jobs.ashbyhq.com/example/8d96c76b-1234-5678-9abc-e0f123456789","applyUrl": "https://jobs.ashbyhq.com/example/8d96c76b-1234-5678-9abc-e0f123456789/application","postedAt": "2026-07-20T12:00:00Z","inputUrl": "https://example.com","scrapedAt": "2026-07-22T09:30:00Z","rawJson": "{...}"}
๐๏ธ Run results and storage
- Jobs output tab โ clean vacancy rows only
- Errors output tab โ sources that failed or returned no recognizable jobs
- OUTPUT key-value record โ run status, counts, duration, ATS totals, limits, stop reason, and per-source statistics
- RAW-... key-value records โ optional original JSON, HTML, or XML responses
Results can be downloaded as JSON, CSV, Excel, XML, or RSS, or consumed through the Apify API. The Actor also works with schedules, webhooks, Make, Zapier, n8n, and other Apify integrations.
๐ก Popular use cases
- Build a multi-company job search database
- Monitor competitorsโ hiring activity
- Power a niche job board or newsletter
- Track new roles, locations, teams, and salary ranges
- Feed recruiting, market intelligence, or workforce analytics pipelines
- Audit differences between normalized fields and the original ATS payload
โก Performance and cost control
Native platforms are read page by page and can return thousands of jobs in one run. Full descriptions may require additional detail requests on some platforms.
For quick tests, set a small maxJobsPerSource or maxJobsTotal. For production exports, leave both at 0. Disable descriptions, native data, or raw-response archiving when you only need a compact listing feed.
โ FAQ
Do users need to provide an ATS API key?
No. The Actor works with job data publicly exposed by company career sites and supported ATS boards.
Can I enter a normal company homepage?
Yes. The Actor can discover a linked Careers or Jobs portal. A direct career-board URL remains more reliable when you already have it.
Will it really return all jobs?
For supported native ATS platforms, the Actor follows every available result page when both job limits are 0. Custom career sites are collected up to maxPagesPerSource and can only expose data present in their public, server-readable pages.
Why is one job missing a description or salary?
Some source records do not publish those values. The Actor preserves missing data as missing rather than inventing it. Enable native fields and raw-response archiving to verify exactly what the source returned.
What happens when a source has no jobs or changes its layout?
The dataset receives a recordType: "error" row and the run summary identifies the affected source. Successful companies in the same run are still preserved.
How are duplicates handled?
Jobs are deduplicated by their canonical job URL, ATS job ID, or a stable fallback made from company, title, and location.