Nino Ventures · 2026-10-31

How to export Greenhouse, Lever and Ashby jobs to CSV

Most tech companies don't host their own job pages. They use an applicant tracking system: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee or Personio. Each of these has a public job board, and most expose it as JSON so the company's careers page can render it. That means you can get a clean, complete list of a company's open jobs without scraping LinkedIn or a job aggregator.

This guide covers where those feeds live, what's in them, and how to export many companies at once to CSV.

The public endpoints

If you only need one company, you can do it by hand:

The hard part is the board name. It's often not the company name (Ubisoft's SmartRecruiters ID is Ubisoft2), and you first need to know which system a company uses. For a list of 50 companies that's an afternoon of clicking through careers pages.

Exporting many companies at once

The Career Site Jobs Scraper does the lookup for you. Give it domains; it checks the careers page for an ATS link, falls back to guessing the board name and verifies the guess, then pulls every job into one schema. $1.50 per 1,000 jobs.

{
  "companies": ["stripe.com", "airbnb.com", "gitlab.com", "ramp.com", "notion.so",
                "figma.com", "palantir.com", "mollie.com", "bunq.com", "n26.com",
                "https://jobs.smartrecruiters.com/Ubisoft2", "https://boards.greenhouse.io/discord"]
}

Our test with 20 companies on 31 October 2026: 17 resolved to a board, 3 didn't (Revolut, Canva and Personio run systems the actor doesn't cover). 2,749 jobs came back in 160 seconds. Stripe alone had 745 open roles, Ubisoft 314, Palantir 301, GitLab 238, Airbnb 202.

By system: Greenhouse 1,699 jobs, Ashby 404, SmartRecruiters 314, Lever 301, Recruitee 25, Workable 6.

What a row looks like

{
  "company": "Airbnb",
  "ats": "greenhouse",
  "title": "AirCover Specialist, Claims Experience",
  "department": "Community Support",
  "location": "Canada",
  "salaryMin": 58000,
  "salaryMax": 68000,
  "salaryCurrency": "CAD",
  "postedAt": "2026-10-28T14:52:05.000Z",
  "url": "https://careers.airbnb.com/positions/8306554?gh_jid=8306554"
}

Salary is only there when the company publishes it. In our run that was 623 of 2,749 jobs. It depends on the company more than the system: Ramp had a range on 165 of 172 jobs, Duolingo on all 57, Stripe on none of its 745.

Download as CSV, Excel or JSON from the dataset tab, or open it in Google Sheets.

Filters that save money

Watching for new and closed jobs

Turn on Only new jobs since last run and schedule a daily run. You get just the roles that appeared since yesterday, and the run summary lists jobs that disappeared. A company that suddenly opens 15 sales roles in Germany, or closes half its engineering openings, is a signal for recruiters, sales teams and investors.

Limits

More guides