Universal Career Site & ATS Jobs Scraper avatar

Universal Career Site & ATS Jobs Scraper

Pricing

from $1.00 / 1,000 job results

Go to Apify Store
Universal Career Site & ATS Jobs Scraper

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

DataForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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 rawJson and flattened native__... columns
  • ๐Ÿงพ Transparent failures โ€” unreadable or empty sources become error rows while successful companies are kept

๐Ÿ“ธ Sample output

Universal Career Site Jobs Scraper sample output โ€” real data fields

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 rawJson and flattened native__... columns
  • Extract Schema.org JobPosting data 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

PlatformCoverageFull descriptionsNative fields
GreenhouseNative, all jobsโœ…โœ…
LeverNative, all pagesโœ…โœ…
AshbyNative, all jobsโœ…โœ…
WorkableNative + job detailsโœ…โœ…
SmartRecruitersNative, all pages + detailsโœ…โœ…
WorkdayNative, all pages + detailsโœ…โœ…
RecruiteeNative, all jobsโœ…โœ…
PersonioNative, all jobsโœ…โœ…
BambooHRNative + job detailsโœ…โœ…
Custom career sitesStructured data + conservative HTML fallbackWhen 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.com
https://example.com/careers
https://boards.greenhouse.io/company
https://jobs.lever.co/company
https://jobs.ashbyhq.com/company
https://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

OptionWhat it controlsDefault
startUrlsCompany websites, career pages, or direct ATS boardsRequired
maxJobsPerSourceMaximum jobs per supplied company; 0 means all0
maxJobsTotalGlobal cap across the whole run; 0 means unlimited0
includeDescriptionsFetch detail endpoints when a listing omits its descriptiontrue
includeRawDataKeep rawJson and flattened native__... fieldstrue
saveRawResponsesArchive successful source responses in key-value storagefalse
discoverFromCompanyWebsiteFind the Careers or Jobs portal automaticallytrue
maxDiscoveryPagesPages checked while discovering a career portal5
maxPagesPerSourceSafety limit for unknown/custom career sites500
maxConcurrencySources and job details processed in parallel10
maxRetriesAttempts for temporary source or network failures5
proxyConfigurationOptional Apify or custom proxy configurationApify 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:

  • rawJson contains the complete source job object
  • native__... 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.

  • 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.