Career Site Job Listing Scraper avatar

Career Site Job Listing Scraper

Deprecated

Pricing

Pay per usage

Go to Apify Store
Career Site Job Listing Scraper

Career Site Job Listing Scraper

Deprecated

Scrape job listings from any company career page. Auto-detects Lever, Greenhouse, Workday, BambooHR, Keka, and custom career sites. Extracts title, location, department, and apply URL.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

0

Monthly active users

25 days ago

Last modified

Categories

Features

Limited permissions

Share

Track buying signals from company hiring: pull live job postings from Lever, Greenhouse, Workable, and 30+ ATS platforms. The cleanest "they're hiring for X" signal in B2B sales.

Track hiring intent across 30+ ATS platforms

Lever, Greenhouse, Workday, BambooHR, Keka, Ashby, Recruitee, and any generic career page — one actor, one schema. Career sites are the source of truth for hiring intent: postings appear here days before LinkedIn Jobs or Indeed pick them up, and senior/stealth roles often never leave the employer site at all.

Buying signals from job postings (the smartest B2B intent data)

If a company is hiring 5 Salesforce admins, sell them Salesforce. If they posted a "Senior Snowflake Engineer", they're a Snowflake account. Job postings are the most specific, real-time intent signal available — far more actionable than generic ZoomInfo Intent or Bombora topic scores. Pipe career-site data into your CRM and trigger plays the same day a relevant role goes live.

What you get

Works with all major career page platforms: Lever, Greenhouse, Workday, BambooHR, Keka, Ashby, Recruitee, and any generic career page. Extracts job titles, locations, departments, and apply URLs automatically. Pass a list of company career URLs and get a clean, structured feed back — no per-platform configuration needed.

Use cases & recipes

Step-by-step guides on thirdwatch.dev/blog:

-end

Supported platforms

  • Lever (jobs.lever.co/{company})
  • Greenhouse (boards.greenhouse.io/{company})
  • Workday ({company}.myworkdayjobs.com)
  • BambooHR ({company}.bamboohr.com/careers)
  • Keka ({company}.keka.com/careers)
  • Ashby (jobs.ashbyhq.com/{company})
  • Recruitee ({company}.recruitee.com)
  • Generic (any career page with job listings)

Output fields

FieldDescription
titleJob title
company_nameCompany name (auto-detected)
departmentDepartment / team
locationJob location
job_typeFull-time, part-time, contract, etc.
apply_urlDirect application URL
descriptionJob description (when scrapeDescriptions is on)
ats_platformDetected platform (lever, greenhouse, workday, etc.)

Example output

{
"title": "Senior Backend Engineer",
"company_name": "Stripe",
"department": "Engineering",
"location": "San Francisco, CA",
"job_type": "Full-time",
"apply_url": "https://jobs.lever.co/stripe/abc123",
"ats_platform": "lever"
}

Input parameters

Choose a sourceMode: scrape specific career page URLs (the default and recommended path), or search a global direct-ATS jobs index by keyword instead.

ParameterRequiredDescription
sourceModeNocareerPages (default) scrapes the career page URLs you provide. globalJobsSearch searches the global direct-ATS jobs index by keyword instead.
careerPageUrlsNocareerPages mode: career page URLs to scrape (e.g., https://jobs.lever.co/stripe, https://boards.greenhouse.io/discord).
companyNameNocareerPages mode: override the auto-detected company name. Leave blank to auto-detect.
scrapeDescriptionsNocareerPages mode: visit each job detail page to extract full descriptions. Slower. Default false.
maxJobsPerSiteNocareerPages mode: maximum job listings per career page URL. Default 10, max 500.
queryNoglobalJobsSearch mode: role, skill, company, or free-text search keywords.
countryNoglobalJobsSearch mode: country name or two-letter code to filter by.
cityNoglobalJobsSearch mode: optional city filter.
companyNoglobalJobsSearch mode: optional employer name filter.
atsSourceNoglobalJobsSearch mode: optional source filter such as workday, greenhouse, lever, ashby, or smartrecruiters.
postedSinceNoglobalJobsSearch mode: only return jobs posted on or after this ISO date.
hasSalaryNoglobalJobsSearch mode: when enabled, exclude jobs without structured salary data. Default false.
minimumSalaryNoglobalJobsSearch mode: optional minimum structured salary value.
employmentTypeNoglobalJobsSearch mode: filter by employment type, e.g. full_time, part_time, contract, internship.
workArrangementNoglobalJobsSearch mode: filter by work arrangement, e.g. remote, hybrid, on_site.
excludeDuplicatesNoglobalJobsSearch mode: collapse the same opening found through multiple source URLs. Default true.
includeDescriptionsNoglobalJobsSearch mode: include full job descriptions instead of compact snippets. Default false.
maxResultsNoglobalJobsSearch mode: maximum number of matching jobs returned across all pages. Default 10.
proxyConfigurationNoPre-configured for best results. Leave as-is.

Use cases

  • Sales prospecting on hiring intent: They're hiring 5 Salesforce admins — sell them Salesforce. Trigger outbound the day a relevant role posts.
  • Recruiter sourcing: Find what companies are hiring for in real-time, before LinkedIn Jobs or Indeed mirror the postings.
  • Investor / equity research: Track headcount growth across a portfolio as a leading indicator of revenue and burn.
  • Competitive intelligence: See what your competitors are building from the engineering, product, and GTM roles they post.
  • Job aggregators: Build a multi-company job feed sourced directly from employer career pages.
  • HR and talent analysts: Track open positions at target companies and teams over time.
  • AI agents: Feed an agent live "who's hiring for X" data straight from the source.

Limitations

  • Generic career pages (not on a supported platform) may return partial fields.
  • Description scraping requires visiting each job page individually and adds runtime.
  • Some Workday tenants use non-standard authentication and may not return data without additional configuration.
  • Location strings vary by employer (city vs. city + country vs. "Remote") — no normalization.
  • The actor reads public career listings; authenticated or internal-only jobs are not accessible.

Compared to alternatives

  • vs. per-platform scrapers (Lever-only, Greenhouse-only, etc.): One actor covers 7+ platforms automatically — no need to glue together multiple scrapers.
  • vs. LinkedIn Jobs: LinkedIn lags employer career pages by days and misses ATS-direct postings entirely (especially senior/stealth roles). This actor goes straight to the source so you catch roles the moment they go live.
  • vs. paid hiring-signal vendors (ZoomInfo Intent, Bombora, Demandbase): Those products charge $20K-$100K/yr for derived "intent" scores. Career-site data is the underlying primary signal — cheaper, raw, and far more specific (job title and department, not a topic bucket).

Pairs well with LinkedIn Jobs Scraper and Indeed Jobs Scraper for maximum-coverage job feeds.

FAQ

Do I need to know which platform each company uses? No. The scraper auto-detects Lever, Greenhouse, Workday, BambooHR, Keka, Ashby, Recruitee, and generic pages from the URL.

Can I get full descriptions? Yes — set scrapeDescriptions: true. It fetches each job's detail page, so runs take longer.

How do I monitor many companies? Schedule the actor daily or hourly on the Apify platform. Pass all career URLs in one run and downstream-dedupe by apply_url.

How fresh is the data? Pulled live from the company's career page at run time.

Last verified: 2026-05

More scrapers at thirdwatch.dev.