Greenhouse Jobs Scraper — Any Company's Careers Page
Pricing
from $1.21 / 1,000 results
Greenhouse Jobs Scraper — Any Company's Careers Page
Scrape every open job from any company's Greenhouse careers page: title, location, department, full description, and per-company custom fields. No login, no API key.
Pricing
from $1.21 / 1,000 results
Rating
0.0
(0)
Developer
Axery
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Greenhouse Job Board Scraper
Scrapes every open job from any company's Greenhouse careers page — title, location, department, full description, and the company's own custom application fields. No login, no API key.
Thousands of companies use Greenhouse to host their careers page (Stripe, Airbnb, Coinbase, and many more), each reachable through the same public JSON API. Useful for talent-market research, competitor hiring tracking, sales lead generation (which companies are scaling which teams), and building a multi-company job aggregator.
What makes this different
Descriptions come through clean. Greenhouse stores each job description as HTML with its own angle brackets entity-escaped (<h2>...</h2>). Passed straight through, every description carries literal < markers instead of readable text. This Actor decodes it properly and gives you both a real description_html and a stripped description_text.
Custom fields are kept, not guessed at. Every company defines its own application metadata — an "ACC?" flag, a Workday employee ID, a "Workplace Type" selector — and there is no fixed schema across companies. Rather than mapping a handful of names onto columns that would be wrong for most other companies, custom_fields carries the raw list through so nothing is silently dropped.
workplace_type is extracted when it's there. Many companies tag Remote/Hybrid/On-site as one of those custom fields under varying names; this Actor recognizes the common ones and surfaces it as its own column when present, without inventing a value when it isn't.
Any company, one call. Pass a list of board tokens and get every company's jobs into one dataset, run in parallel via one Actor call instead of one integration per company.
Input
| Field | Type | Notes |
|---|---|---|
boardTokens | array | The token from the company's careers URL, e.g. stripe. |
includeDescription | boolean | Keep full HTML/text descriptions, or skip for a lighter dataset. |
maxItems | integer | Per company. 0 = every open job. |
incremental | boolean | Only jobs not seen in previous runs. |
proxyConfiguration | object | Not normally needed. |
Finding a company's board token
It's in their careers page URL: boards.greenhouse.io/stripe or job-boards.greenhouse.io/stripe → token is stripe. Not every company uses Greenhouse, and a wrong or unused token returns a clear "board not found" error for that entry rather than an empty silent result.
Output
{"job_id": "greenhouse.io:8130725","company_name": "Stripe","title": "Account Executive, AI Startups (Hunter)","location": "San Francisco","departments": ["Startups - Account Executives (NA)"],"workplace_type": null,"description_text": "Who we are\n\nAbout Stripe\nStripe is a financial infrastructure platform...","updated_at": "2026-08-18T21:38:47Z","url": "https://stripe.com/jobs/search?gh_jid=8130725"}
Each run also writes a RUN_COVERAGE record to the key-value store with what was requested, what came back, and any per-company failures — so a partial run is visible rather than silent.
Local development
pip install -r requirements.txtpython test_local.py stripe airbnb --max 10 --out sample_output.jsonpython test_local.py coinbase --no-description
sample_output.json is real output from a live run against Stripe's board.