Company Careers Jobs — Straight from Greenhouse, Lever & Ashby
Pricing
from $2.00 / 1,000 job postings
Company Careers Jobs — Straight from Greenhouse, Lever & Ashby
Pull every open role straight from a company's own job board API. Give it company names - it detects Greenhouse, Lever or Ashby and returns all postings in one schema. Official public endpoints: nothing blocked or rate-limited, and jobs land here before aggregators index them.
Pricing
from $2.00 / 1,000 job postings
Rating
0.0
(0)
Developer
Atomo Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Company Careers Jobs — 11 ATS Platforms, One Schema
Most job scrapers fight Indeed and LinkedIn for data those sites actively defend. This one doesn't fight anything.
Eleven ATS platforms — Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Teamtailor, Recruitee, Personio, Breezy and Rippling — publish every company's open roles through public endpoints that exist to be read. That is how a company's own careers page renders its listings. No authentication, no rate limits, nothing to block.
Most job-board Actors cover three of them. Covering all eleven matters because those three are dominated by US startups, while the rest are where European scale-ups (Workable, Teamtailor, Recruitee, Personio) and large enterprises (Workday, SmartRecruiters) live. Bosch alone lists over 4,800 roles on SmartRecruiters, and Salesforce over 1,400 on Workday.
Measured against 66 well-known employers: three platforms found 76%, eleven found 89%.
And it is upstream: a role appears on the company's own board the moment it opens, often days before an aggregator indexes it.
You give it company names. It works out which ATS each one uses.
stripe → Greenhouse 615 jobsopenai → Ashby 778 jobspalantir → Lever 311 jobsBoschGroup → SmartRecruiters 4,812 jobsadobe → Workday 723 jobsnike → Workday 742 jobszego → Workable 36 jobsdoktor → Teamtailor 46 jobschannable → Recruitee 13 jobsrippling → Rippling 683 jobs
Workday needs three pieces to address a board (tenant, server number, site name), so a
company it cannot resolve by name can be given as a board URL instead —
https://cloudera.wd5.myworkdayjobs.com/External_Career — and it is read directly.
stripe, Stripe, stripe.com and https://stripe.com/jobs all resolve to the same
board. In testing, 33 of 38 well-known tech companies (86%) were detected automatically.
What you get
One record per open role, in a single schema across all three systems:
{"company": "stripe","ats": "greenhouse","job_id": "8172487","title": "Abuse Investigator","department": "Security Analytics","location": "Dublin","locations": ["Ireland Locations"],"is_remote": false,"workplace_type": "onsite","posted_at": "2026-09-03T13:30:34-04:00","updated_at": "2026-09-03T13:30:34-04:00","url": "https://stripe.com/jobs/search?gh_jid=8172487","apply_url": "https://stripe.com/jobs/search?gh_jid=8172487","description": "Who we are\n\nAbout Stripe\n\nStripe is a financial infrastructure...","description_chars": 4596,"source": "Company career site (public job board API)"}
| Group | Fields |
|---|---|
| Role | title, department, team, employment_type, experience_level, industry, compensation |
| Where | location, locations, country, is_remote, workplace_type |
| When | posted_at, updated_at |
| Links | url, apply_url |
| Text | description (HTML converted to plain text), description_chars |
| Identity | company, company_slug, ats, job_id |
Three details the raw APIs get wrong, and this Actor fixes:
- Remote status. Greenhouse does not publish a remote flag at all; Workable gives a
clean
telecommutingboolean; Lever and Ashby disagree on how to express one. Here every role getsis_remoteand aworkplace_typeofremote/hybrid/onsite, inferred from the location text where the upstream field is missing. - Dates. Lever returns millisecond epochs, the others ISO strings. All become ISO 8601.
- Descriptions. Greenhouse double-escapes its HTML (
<div>). Unescaped, stripped and normalised to readable text.
Input
| Field | Type | Notes |
|---|---|---|
companies | array | Names, slugs or career URLs. Empty = a sample of well-known tech companies |
includeDescription | boolean | Full posting text. Default on |
titleKeywords | array | Keep roles matching a title term |
locationKeywords | array | Keep roles matching a location |
departments | array | Keep roles in matching departments or teams |
remoteOnly | boolean | Fully remote roles only |
postedWithinDays | integer | Only roles first published in the last N days |
maxItems | integer | Cap the run. 0 = no limit |
Results are interleaved across companies, so a capped run still covers every company you asked for rather than exhausting the first one.
Companies whose board cannot be found are reported by name in the log rather than dropped silently — they either use a different ATS (Workday, SmartRecruiters, Taleo) or their board token differs from their company name.
Who this is for
- Job boards and aggregators wanting a clean, fast, unblockable upstream feed
- Recruiters and sourcers tracking who is hiring for what, before it hits LinkedIn
- Market and competitive analysts — headcount direction, which teams a rival is building, which cities they are opening
- Job seekers monitoring a shortlist of companies
- AI agents needing structured, current hiring data
Notes
Official endpoints, not scraping. Every request goes to a documented public job board API that the ATS vendors provide for exactly this purpose. The Actor never touches a rendered careers page, so redesigns and bot defences do not break it.
No personal data. Job postings occasionally carry a recruiter's email or phone in the body text. Those are stripped before the record is emitted.
Coverage. The seven platforms together cover venture-backed tech (Greenhouse, Lever, Ashby, Rippling), European scale-ups (Workable, Teamtailor) and large enterprises (SmartRecruiters). Workday and Taleo do not expose a comparable public board, so those companies show up in the "not found" log line rather than being dropped silently.
Development
$apify push
ATS 응답 모양이 바뀌면 src/normalize.py의 해당 핸들러만 고치면 된다.
탐지 순서는 src/ats.py — Greenhouse가 가장 흔해서 먼저 물어본다.