Career Site Jobs Scraper: Greenhouse, Lever, Ashby, Workday
Pricing
from $1.80 / 1,000 job founds
Career Site Jobs Scraper: Greenhouse, Lever, Ashby, Workday
Open jobs from company career sites on Greenhouse, Lever, Ashby, Workday and 4 more ATS, in one schema. Monitor new jobs; optional AI fields. Pay per job.
Pricing
from $1.80 / 1,000 job founds
Rating
0.0
(0)
Developer
kelvin lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Get every open job of the companies you choose, live from their own career sites: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee and Personio, in one clean schema whatever the system. Give job board links, company websites or board names. Run it once for an export, or on a schedule as a monitor that returns only new jobs and tells you which ones closed. Optional AI fields (skills, job function, seniority, visa sponsorship, remote regions, salary from the text and a short summary) come from Claude. Public APIs only: no browser, no login, no residential proxy. You pay per job.
What you can use it for
- Job boards and aggregators: fill a niche board from hundreds of companies and keep it fresh; closed jobs come as free rows so you can delist them.
- Sales signals: watch your target accounts and get "Acme opened 3 sales roles in Germany" in Slack, with
inputandcompanyDomainon every row to join back to your CRM. - Recruiters and agencies: new roles at the companies you follow, filtered by title, location, workplace type or department.
- Labour-market research: salaries with their source (board, description text or AI), seniority, skills and countries across companies.
- AI agents: every field is described for agents that call the Actor through MCP.
Input
Only companies is required.
| Field | Description |
|---|---|
companies | One company per line. Best is its job board link, e.g. https://boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/ramp, https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, https://careers.smartrecruiters.com/BoschGroup, https://apply.workable.com/huggingface, https://bunq.recruitee.com, https://ottonova.jobs.personio.de. Also accepted: greenhouse:stripe; a company website such as stripe.com (its careers page must link to one of these boards); or a bare board name such as stripe, tried on Greenhouse, Lever, Ashby, Workable, Recruitee and Personio. Up to 500 per run. |
titleKeywords, excludeTitleKeywords | Keep or drop jobs by words in the title (whole words, any case). |
locations | City, US state, country name or two-letter code. |
workplaceTypes | remote, hybrid, onsite. |
employmentTypes | full_time, part_time, contract, temporary, internship. |
departments | Text in the department or team, e.g. Engineering. |
postedWithinDays | Only jobs posted in the last N days. |
onlyWithSalary | Only jobs with a salary from the board or the description text. |
descriptionFormat | text (default), html (cleaned), both or none (fastest). |
maxJobsPerCompany | Default 1,000, newest first. |
maxItems | Charged jobs in the whole run (default 1,000, up to 50,000). |
onlyNewJobs | Monitor mode: only jobs not delivered before under monitorName, plus free closed rows. |
monitorName | Separate watchlists keep separate histories (default default). |
skipExistingOnFirstRun | Monitor mode: the first run saves today's jobs without returning or charging them, so you get alerts on new roles only. |
reportClosedJobs | Monitor mode: free rows for delivered jobs that closed (default on). |
alertWebhookUrl | Monitor mode: one message per run with new or closed jobs. Slack and Discord webhooks get readable text, other https URLs (Make, Zapier, n8n) get JSON. Stored as a secret. |
aiEnrichment | Adds the AI fields to each delivered job, charged as its own event. |
maxConcurrency, requestTimeoutSecs, proxyConfiguration | Advanced. No proxy is needed; residential proxy is not supported. |
Example: a daily monitor of three companies' engineering jobs in Europe, with a Slack alert.
{"companies": ["https://jobs.ashbyhq.com/ramp", "stripe.com", "https://apply.workable.com/huggingface"],"titleKeywords": ["engineer", "developer"],"locations": ["Germany", "France", "Netherlands", "Remote"],"onlyNewJobs": true,"monitorName": "eu-engineering","skipExistingOnFirstRun": true,"alertWebhookUrl": "https://hooks.slack.com/services/…"}
Output
One row per job. A Greenhouse job (description shortened):
{"rowType": "job","jobKey": "greenhouse:stripe:7012345","input": "stripe.com","ats": "greenhouse","boardToken": "stripe","boardUrl": "https://boards.greenhouse.io/stripe","jobId": "7012345","requisitionId": null,"company": "Stripe","companyDomain": "stripe.com","title": "Backend Engineer, Payments","url": "https://stripe.com/jobs/search?gh_jid=7012345","applyUrl": "https://stripe.com/jobs/search?gh_jid=7012345","department": "Payments Engineering","team": null,"location": "San Francisco, CA","allLocations": ["San Francisco, CA"],"city": "San Francisco","region": "California","countryCode": "US","workplaceType": null,"employmentType": null,"seniority": null,"postedAt": "2026-10-20T14:03:11.000Z","updatedAt": "2026-10-22T09:00:00.000Z","language": "en","descriptionText": "Who we are\n\nAbout Stripe…","descriptionHtml": null,"salaryMin": 180000,"salaryMax": 250000,"salaryCurrency": "USD","salaryPeriod": "year","salaryText": "$180,000 - $250,000","salarySource": "description","changeType": null,"firstSeenAt": null,"billable": true,"aiEnriched": false,"error": null,"scrapedAt": "2026-10-24T01:00:07.000Z","aiSeniority": null,"aiExperienceYearsMin": null,"aiSkills": null,"aiJobFunction": null,"aiVisaSponsorship": null,"aiRemoteRegions": null,"aiSummary": null,"aiError": null}
jobKeyis the same for the same job in every run: use it to deduplicate and to join runs.salarySourcesays where the numbers come from:ats(the board's own fields),description(a pay range in the text, as US pay-transparency laws require) orai.- Unknown values are
null, never guesses: a Workday "Posted 30+ Days Ago" is not turned into a date, andworkplaceType: nullmeans not stated, not on-site. - In monitor mode
changeTypeisneworclosed, andfirstSeenAtis when the monitor first delivered the job. - With
aiEnrichment, theai*fields are filled by Claude Haiku 5.5 from the title, locations and description. They are estimates;aiErrorsays why a job could not be enriched (then it is not charged for AI). - A company that cannot be read gets one free row with
rowType: "error"and the reason. - Views: Jobs, AI and Errors. The run's key-value store has a
SUMMARYrecord with per-company counts (open, matched, new, closed jobs), jobs left out by each filter and AI usage.
Pricing
Pay per event:
| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
Job found (rows with billable: true) | $0.003 | $0.003 | $0.0024 | $0.0018 |
Job enriched with AI (rows with aiEnriched: true, only when aiEnrichment is on) | $0.003 | $0.003 | $0.0024 | $0.0018 |
| Actor start (Apify's standard start fee) | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
For example, 500 jobs from 10 companies cost $1.50 on the Free plan, or $3.00 with AI fields. A monitor run that finds nothing new costs only the start fee.
Free: jobs left out by your filters, closed-job rows, error rows, the first-run baseline of a monitor, and AI enrichment that failed. Set a maximum cost per run in the run options; the Actor stops cleanly when it is reached, and a job whose AI charge no longer fits is saved without the AI fields.
Limits
- Only public job boards of these 8 systems. Other systems (iCIMS, SuccessFactors, Taleo, BambooHR, Teamtailor…) are not read yet; a company website that only links one of them gets an error row.
- A bare name can match a different company with the same board name on a small ATS; check
companyandboardUrl, or give the board link. - Lever and Ashby publish no company name, so
companyis null there (useinputorcompanyDomain). - Workday has a weekly maintenance window (often Friday night to Saturday, US time) during which its boards answer with a maintenance page; the Actor then returns an error row for that company. Run again later.
- Some Personio boards publish no description in their feed;
descriptionTextis then null and AI enrichment is skipped for those jobs. - With
maxJobsPerCompanybelow a board's size, closed jobs are not reported for that company.