Company Career Page Jobs Scraper
Pricing
from $2.00 / 1,000 jobs
Company Career Page Jobs Scraper
Give it company domains or names (stripe.com, notion.so, Scale AI) and get their live job openings, normalized into one schema. It resolves each company's real job board on its own: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee and Rippling.
Pricing
from $2.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Fabrizio Zaffarana
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
Give it a list of company domains or names and get back their live job openings, normalized into one schema.
You don't need to know where a company hosts its careers page. Paste stripe.com, notion.so,
ramp.com, and the Actor figures out each company's real job board on its own, then pulls the
openings. Supported boards: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Rippling.
Why this one is different
Almost every jobs scraper asks you for a board you already had to find yourself
(greenhouse.io/stripe, jobs.lever.co/acme). That's fine for one company and useless for three
hundred.
Here the input is the company. Give it a domain or a name; the resolution is the product.
It also isn't a job-aggregator scrape: the data comes from each company's own careers board, so you get roles as the employer publishes them, including the ones that never reach the big job sites.
Supported job boards
Greenhouse · Lever · Ashby · Workable · SmartRecruiters · Recruitee · Rippling
Roughly 670 well-known companies resolve instantly from a built-in registry; everything else is resolved live. Every company your run resolves is remembered, so repeat runs get faster.
How many companies actually resolve (measured, not promised)
Read this before you buy. Coverage depends heavily on who is in your list, because it depends on which ATS the company runs. Measured on a 50-company sample (2026-08-10):
| Your list looks like | Returned openings | Board found but empty | No supported board |
|---|---|---|---|
| Tech / dev-tools (Vercel, Linear, Supabase, Sentry…) | 72% | 6% | 22% |
| Scale-ups & SaaS (Monzo, Wise, Miro, Personio…) | 75% | 0% | 25% |
| Large / non-tech (Nestlé, Siemens, IKEA, banks…) | 6% | 13% | 81% |
| Mixed sample overall | 52% | 6% | 42% |
Large enterprises mostly won't work, and it isn't a bug: they run Workday, Taleo, iCIMS or SuccessFactors, which aren't supported here. If your list is Fortune-500 domains, this Actor is the wrong tool. If it's startups and scale-ups, expect roughly 3 in 4.
Every company that doesn't return openings tells you which of the three cases it is, so you always know whether to retry, use another source, or accept that the company simply isn't hiring.
Input
{"companies": ["stripe.com", "notion.so", "Scale AI"],"maxJobsPerCompany": 100,"remoteOnly": false,"titleFilter": "engineer"}
| Field | Type | Default | What it does |
|---|---|---|---|
companies | array | — | Domains (stripe.com), URLs (https://acme.com/careers) or names (Scale AI). Up to 500. |
maxJobsPerCompany | integer | 100 | Cap per company. Lower it to control cost on large boards. |
remoteOnly | boolean | false | Keep only roles the board flags remote or hybrid. |
titleFilter | string | — | Case-insensitive substring on the job title. |
departmentFilter | string | — | Case-insensitive substring on the department. |
locationFilter | string | — | Case-insensitive substring on the location text. |
includeDescription | boolean | false | Adds the full plain-text description. Much larger output. |
maxConcurrency | integer | 5 | Companies processed at once. |
Shortcut: if you already know the board, force it with ats:slug, e.g. greenhouse:stripe.
Output
One row per job. Unknown fields are null, never missing, so the shape is safe to load straight
into a table.
{"id": "greenhouse_8023928","title": "Account Executive, Bridge","department": null,"team": null,"location": {"raw": "London","city": "London","region": null,"country": null,"is_remote": false,"workplace_type": null},"employment_type": null,"posted_at": "2026-07-30T10:59:38.000Z","updated_at": "2026-08-06T16:10:12.000Z","compensation": null,"apply_url": "https://stripe.com/jobs/search?gh_jid=8023928","job_url": "https://stripe.com/jobs/search?gh_jid=8023928","description_text": null,"source": "greenhouse","company_input": "stripe.com","company_name": "Stripe","company_ats": "greenhouse","company_slug": "stripe","company_careers_url": "https://job-boards.greenhouse.io/stripe","resolve_confidence": "registry","scraped_at": "2026-08-09T19:27:31.590Z"}
resolve_confidence tells you how sure the match is: registry and exact are solid, variant is
corroborated by the board's own company name, fuzzy is a loose match worth eyeballing, provided
means you passed the board yourself.
Locations are parsed where the board gives enough to parse. When a board lists several sites at once
("SF, NYC, SEA"), you get the first site and null for region/country rather than an invented one.
What it costs you
Billing is per job returned. Companies that resolve to nothing produce no rows and cost nothing. A bad domain in your list is free.
The run's maximum charge is respected. If you cap what a run may spend, the Actor stops as soon as
that cap is reached instead of pushing against it: the companies it never got to are listed as
skipped_charge_limit in the run summary, so you know exactly where to resume.
Run summary
Diagnostics never land in your billed dataset. After each run, the run-summary record in the
key-value store has a per-company breakdown: what resolved, to which board, how many roles the board
actually has, and why anything failed.
{"companies_requested": 3,"companies_resolved": 1,"companies_board_empty": 1,"companies_not_resolved": 1,"companies_board_error": 0,"total_jobs": 2,"outcomes": [{ "input": "stripe.com", "status": "ok", "ats": "greenhouse", "slug": "stripe","confidence": "registry", "jobs_returned": 2, "total_on_board": 412, "truncated": false },{ "input": "deel.com", "status": "board_empty", "ats": "ashby", "slug": "deel","jobs_returned": 0,"error": "A board named \"deel\" exists on Ashby but publishes no openings…" }]}
Each company lands in exactly one state, and the difference is the point:
status | What it means | Worth retrying? |
|---|---|---|
ok | Openings returned. | — |
board_empty | A board with that slug exists but publishes nothing: hiring freeze, listings turned off, or an unrelated board with the same name. | No |
not_resolved | No supported board found. Almost always an ATS outside the seven above. | No |
board_error | The board answered with an error or timed out. | Yes |
skipped_charge_limit | The run hit the maximum charge you set for it before reaching this company, so it was never fetched. | Yes, with a higher cap |
Good to know
- A result is never silently empty. A company that returns no openings always tells you which of the three cases above it is, with the boards that were tried.
board_emptyis not proof of identity. With zero openings there is no company name on the board to check against, so we report that a board with that slug exists, not that it is definitely that company's.- Filters are applied after fetching, because the boards don't expose them. Setting one pulls the whole board, which is slower but complete.
departmentFilteris the expensive one on Greenhouse boards, so only set it when you need it.- Boards with more than 1000 open roles are capped;
truncated: truetells you when that happened. - Location is parsed conservatively: an uncertain field is
null, never a guess. A role listed for a continent or a bloc ("North America", "EMEA") reports that as the region and leavescountryempty, because a multi-country scope is not one country. A token we can't confirm is a country becomes the region instead, so"Bengaluru, Karnataka"gives you the region, not a fictional country. Where a job lists several sites in one comma-separated string, the first is used as the primary;location.rawalways carries the board's original text.
Typical uses
Recruiting and sourcing pipelines · sales and market intelligence (who's hiring for what) · tracking hiring at a portfolio or a competitor set · building a niche job board from real employer boards.