💼 Greenhouse Jobs Scraper - Tech Hiring Data avatar

💼 Greenhouse Jobs Scraper - Tech Hiring Data

Pricing

from $2.40 / 1,000 results

Go to Apify Store
💼 Greenhouse Jobs Scraper - Tech Hiring Data

💼 Greenhouse Jobs Scraper - Tech Hiring Data

Returns open jobs from any company that hires through Greenhouse: job title, company, department, location, remote flag, employment type, posted date, full description and apply link. Works for Stripe, Airbnb, Coinbase and thousands more. Filter by keyword, location and remote-only roles.

Pricing

from $2.40 / 1,000 results

Rating

0.0

(0)

Developer

Ben

Ben

Maintained by Community

Actor stats

0

Bookmarked

158

Total users

7

Monthly active users

11 hours ago

Last modified

Security

Limited permissions

Share

💼 Greenhouse Jobs Scraper — Tech Company Hiring Data via the Official API

Extract job listings from companies hiring on Greenhouse ATS — Stripe, Airbnb, Cloudflare, Discord, Figma, Notion, Uber, Coinbase, Databricks and 40+ more tech leaders — as clean, structured data. It runs on Greenhouse's official public job-board API, so there's no anti-bot fragility, no login, and no API key to manage. Price: $3.00 per 1,000 jobs on the Apify Free plan until November 9, 2026, $1.90 from then on. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

🧑‍💻 What is the Greenhouse Jobs Scraper?

It turns Greenhouse-hosted career pages into a structured hiring dataset. Use the built-in list of 40+ top tech employers, or supply your own Greenhouse company tokens, then filter by keyword, location or remote-only. Every matching role comes back with its title, company, departments, location, posting date and apply URL — so job boards, recruiters and talent-intel teams get fresh listings without manual browsing.

What data does it extract?

  • job_title — the role title
  • company_name and company_token — employer and its Greenhouse slug
  • location and remote_flag — location string plus an auto-detected remote indicator
  • departments — list of teams/departments the role sits in
  • employment_type — typically Full-time
  • posted_date — when the listing was last updated (ISO timestamp)
  • job_url — direct apply/listing URL
  • job_description — full description text (when includeDescription is enabled)
  • remote_scope, is_hybrid, visa_sponsorship, timezone_requirement — who can really apply (when includeDescription is on, see below)
  • job_id, source and scraped_at — stable ID, source label and run timestamp

⬇️ Input

Use the built-in company list, or target specific employers, then filter:

FieldDescription
companiesGreenhouse company tokens (e.g. stripe, airbnb, cloudflare). Leave empty to use the built-in 40+ tech-company list
keywordsFilter by title keywords, e.g. ["engineer", "devops", "product"]
locationFilter by location text, e.g. "remote", "San Francisco", "New York"
remoteOnlyOnly return remote positions (true / false)
maxResultsCap the run (1–5000, default 100)
includeDescriptionFetch and include full job descriptions and the remote eligibility fields (slower, richer output)
remoteScopeKeep only jobs with this remote scope: worldwide, unspecified, country, region, or one place like country:US, region:EMEA

Example input

{
"companies": ["stripe", "cloudflare", "notion", "figma"],
"keywords": ["senior", "engineer"],
"location": "remote",
"remoteOnly": true,
"maxResults": 200,
"includeDescription": true
}

⬆️ Output

Every job is one clean row (view as a table, or export JSON / CSV / Excel):

{
"job_id": "5547632003",
"job_title": "Senior Software Engineer, Payments",
"company_name": "Stripe",
"company_token": "stripe",
"job_description": "We are looking for a Senior Software Engineer to join...",
"location": "Remote (US)",
"remote_flag": true,
"employment_type": "Full-time",
"departments": ["Engineering", "Payments"],
"posted_date": "2026-05-28T14:02:00+00:00",
"job_url": "https://boards.greenhouse.io/stripe/jobs/5547632003",
"source": "Greenhouse",
"scraped_at": "2026-06-26T15:30:00.000000"
}

Remote eligibility fields

Most "Remote" roles are not open to everyone. With includeDescription or remoteScope set, each row also reads the location and the description with plain keyword rules (no AI model, so a sentence the rules do not know gives unspecified):

FieldValues
remote_scopeworldwide, country:US,CA (ISO codes), region:EMEA (EMEA, Americas, APAC, Europe, EU, ...), unspecified
is_hybridtrue when the text names a hybrid model or days in the office
visa_sponsorshipyes, no ("we cannot sponsor visas"), unspecified
timezone_requirementthe phrase as written, such as UTC+1 to UTC+3, or null

Example: location Remote (US only) and text "We cannot sponsor visas" gives "remote_scope": "country:US", "is_hybrid": false, "visa_sponsorship": "no", "timezone_requirement": null. Set "remoteScope": "worldwide" to keep only roles open anywhere.

💰 What a run costs

Apify planPer 1,000 jobs, until Nov 9, 2026Per 1,000 jobs, from Nov 9, 2026
Free$3.00$1.90
Bronze$2.70$1.71
Silver$2.55$1.62
Gold$2.40$1.52
Platinum$2.25$1.52
Diamond$2.10$1.52

The new prices apply from November 9, 2026, 20:33 UTC. Apify's standard start event ($0.00005 per GB of memory) is the only other charge. A job a filter drops is not saved or charged.

💡 Use cases

  • 🧲 Job boards: aggregate fresh tech roles from 40+ premium employers into your listings.
  • 🎯 Recruiters & talent intel: track hiring velocity and open roles by company, team and seniority.
  • 📈 Market research: analyze tech hiring trends across regions, skills and roles over time.
  • 🛠️ Developer-tool marketing: find companies hiring for your stack to target outreach.

❓ FAQ

How do I scrape Greenhouse job listings? Run it with the built-in company list, or pass your own companies tokens, then optionally filter by keywords, location or remoteOnly. You get structured jobs with title, company, departments, location, posting date and apply URL.

Is this the official Greenhouse API? Yes — it uses Greenhouse's public job-board JSON API (api.greenhouse.io/v1/boards/{token}/jobs). Listings are intentionally public and meant for indexing.

Do I need an API key or login? No. The job-board API is public — no Greenhouse account or credentials required.

How do I find a company's Greenhouse token? It's the slug in the board URL: boards.greenhouse.io/{token}. That {token} is what goes in the companies array.

Which companies are included by default? 40+ tech leaders such as Stripe, Airbnb, Cloudflare, Discord, Figma, Notion, Uber, Coinbase, Databricks, Datadog, Snowflake, Reddit, Robinhood, Twilio, Vercel and more.

Can I scrape companies not on the built-in list? Yes — just add their Greenhouse token to the companies array.

Are full job descriptions included? Only when includeDescription is true. Without it you get fast metadata-only results; with it each job makes one extra API call to fetch the description text.

How do I get only remote roles? Set remoteOnly: true, or filter by location: "remote". A remote_flag is set on every job automatically.

How fresh is the data? Real-time — each run reads the current state of every job board.

Can I run it on a schedule or via API? Yes — schedule recurring runs in Apify, call it via the API/SDK, or connect it to Make, Zapier or n8n.

Is scraping Greenhouse jobs legal? It reads publicly available job listings via the official board API. Respect each company's Terms of Service and handle any data responsibly.

🔗 You might also like


Keywords: Greenhouse jobs scraper, Greenhouse ATS API, tech jobs scraper, job board API, scrape job listings, recruiting data, hiring data, jobs aggregator, developer jobs, remote jobs scraper, ATS scraper, talent intelligence, job postings API, tech company hiring, Stripe jobs.

Workflow and data quality

For best results, run this actor as part of a repeatable data pipeline rather than a one-off scrape. Start with a focused input, export the dataset to CSV or JSON, and keep a stable unique field such as URL, ID, domain, package name or title as your deduplication key. Schedule the same task daily or weekly when you need monitoring, then compare each new dataset with the previous run to identify fresh records, removed records and changed fields.

The output is designed to be practical for business workflows: spreadsheets, dashboards, enrichment steps, alerts, CRM imports and lightweight internal APIs. Null values mean the source did not provide that field, not that the actor guessed. For larger projects, combine this actor with related Apify scrapers and use the shared URL/company/domain fields to build a richer dataset without manual copy-paste work.