Workday, SmartRecruiters, Recruitee, Personio Jobs Scraper avatar

Workday, SmartRecruiters, Recruitee, Personio Jobs Scraper

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
Workday, SmartRecruiters, Recruitee, Personio Jobs Scraper

Workday, SmartRecruiters, Recruitee, Personio Jobs Scraper

Pull every open job from career sites on Workday, SmartRecruiters, Recruitee, Personio and Breezy HR into one clean schema. Paste career-site URLs, filter by keyword, location, remote or posting date, and pay only per job returned.

Pricing

from $1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Nekruz Kasimov

Nekruz Kasimov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Workday, SmartRecruiters, Recruitee, Personio, Breezy Jobs Scraper

Get every open job from company career sites hosted on Workday, SmartRecruiters, Recruitee, Personio or Breezy HR, in one normalized dataset. Workday alone powers the career pages of thousands of large enterprises (NVIDIA, Salesforce, Adobe, banks, universities); SmartRecruiters, Recruitee, Personio and Breezy cover tens of thousands of European and mid-size companies.

Reads each platform's own public job-board endpoints, so no browser, no proxies, no CAPTCHAs. Pair it with the companion Actor for Greenhouse, Lever, Ashby and Workable to cover most of the market.

Use cases

  • Enterprise job boards and alerts, refreshed daily.
  • Account research: watch hiring at target companies.
  • Structured job data for AI agents, RAG pipelines and market analysis.

Input

FieldDescription
companiesCareer-site URLs. Workday: https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite. SmartRecruiters: https://jobs.smartrecruiters.com/Ubisoft2 or smartrecruiters:Ubisoft2. Recruitee: https://channable.recruitee.com or recruitee:channable. Personio: https://circus.jobs.personio.de or personio:circus. Breezy: https://acme.breezy.hr or breezy:acme. A bare slug is tried on all platforms except Workday.
includeDescriptionFull description as text and HTML. Recruitee and Personio include it for free; Workday and SmartRecruiters need one extra request per job. For Workday this also fills the posting date, requisition id, country and remote type.
keywords, locations, remoteOnly, postedAfter, maxJobsPerCompanySame filters as the companion Actor. On Workday, keywords are matched by Workday's search, which matches whole words and word beginnings, so use whole words or word beginnings (a fragment such as "gineer" will not match on Workday).

Output

One item per job with platform, company, companySlug, jobId, title, url, applyUrl, location, locations, country, isRemote, workplaceType, department, team, employmentType, experienceLevel, salary, publishedAt, updatedAt, requisitionId, optional descriptionPlain and descriptionHtml, and scrapedAt (Workday items also carry postedOnText, the relative age Workday shows, such as "Posted 3 Days Ago"). Fields a platform does not expose are null. The OUTPUT record summarizes every board: jobs found, after filters, pushed, or why it failed. It contains:

  • boards: one entry per board or input entry, with input, platform, slug, status, jobsOnBoard, jobsFetched (jobs downloaded, which can be fewer than on the board when paging stops at your cap or date filter), jobsAfterFilters, jobsPushed, plus descriptionFailures, error, failedPage or duplicateOf when they apply. A duplicate entry carries only input, platform, slug, status and duplicateOf.
  • jobsPushed: jobs saved to the dataset. jobsCharged: jobs billed under pay-per-event pricing, otherwise null.
  • descriptionFailures: jobs saved without a description (see Pricing). descriptionsRecovered: descriptions that failed once and succeeded on the automatic retry.
  • chargeLimitReached: true if the run stopped at your maximum charge per run.

Each board's status is one of ok (board read), not_found (the URL or platform:slug entry points to no board), not_found_on_any_platform (a bare slug matched no board on SmartRecruiters, Recruitee, Personio or Breezy), unrecognized (not a supported career-site URL or slug), error (the board request failed after retries; error has the reason), partial (a Workday or SmartRecruiters list page after the first failed after retries or came back without a job list; the jobs from the earlier pages are kept and returned, failedPage is the page that failed and error says why, for example "page 2 failed (HTTP 404); kept 20 jobs from earlier pages"), or duplicate (the entry is the same board as an earlier one, so it was not requested; duplicateOf is the first input for it).

With includeDescription, a Workday or SmartRecruiters job whose description could not be fetched is still returned, with null descriptions and a descriptionError field (for example HTTP 503).

Pricing

Per job returned. Filtered-out jobs are free. Set a maximum charge per run to cap spend; the Actor stops cleanly when it is reached (chargeLimitReached is true in OUTPUT).

A board entered more than once is requested and charged once: repeat entries show as duplicate in OUTPUT and cost nothing. Jobs kept from a partial board are charged like any other job.

A Workday or SmartRecruiters job whose description could not be fetched is not charged. Failed detail requests are retried (rate limits and server errors get one more try after a short pause); if the description is still missing, the job is returned with descriptionError set and counted in descriptionFailures. jobsCharged shows what was actually billed. Such a job still counts toward maxJobsPerCompany.

Notes

  • Workday career sites: copy the URL from the browser.
  • Boards are compared by platform and slug, ignoring case, so smartrecruiters:Ubisoft2, https://jobs.smartrecruiters.com/ubisoft2/ and jobs.smartrecruiters.com/Ubisoft2 are one board. The same bare slug entered twice is a repeat too.
  • Career-site URLs without https:// (for example channable.recruitee.com) are read as URLs, not as bare slugs.
  • Workday and SmartRecruiters are read page by page. If a later page fails, the run keeps the earlier jobs instead of dropping the board, and the final status message adds "(N incomplete, see OUTPUT)". Recruitee, Personio and Breezy are a single request each, so they are never partial.
  • Breezy boards do not expose descriptions or posting text beyond the listing.
  • Workday lists only a relative age ("Posted 3 Days Ago"), so postedAfter works at day precision for Workday boards; with includeDescription the exact date from the job page is re-checked.
  • Rate limits (HTTP 429), server errors (5xx) and network errors are tried up to 3 times. The Actor waits for the Retry-After the server sends (at most 60 s), otherwise 1.5 s, then 3 s.