Skip to main content
Thirdwatchthirdwatch
Jobs & recruitment

Benchmark Startup Salary and Equity with YC's Job Board

Pull the whole board and build the comp distribution — salary and equity ranges by role type across hundreds of startups.

Sep 16, 2026 · 2 min read · 490 words
See the scraper →

Nowhere else publishes this many startup comp ranges in one place. Thirdwatch's YC Jobs Scraper reads Y Combinator's Work at a Startup board and returns every listing with the two fields job boards usually hide — salary range and equity range.

Skip the setup: Run this as a ready-to-go task on Apify — pre-loaded with the configuration from this guide.

Why benchmark compensation

Comp benchmarking for startups is normally anecdote and levels.fyi screenshots. The YC board publishes structured salary and equity ranges at scale — a real distribution, not a sample.

A full-board pull gives you salaryMin/salaryMax/equityMin/equityMax per role — group by roleType for the bands.

The scraper parses the board's embedded data, so every row arrives fully structured — comp ranges included.

How does this compare to the alternatives?

Approach Cost model Coverage Effort
Manual board browsing Free What you can read Doesn't scale
Job aggregator subscription Monthly fee Their coverage, their schema Vendor lock-in
Thirdwatch jobs scraper Pay per job row The whole board, structured One run

Why this Actor

  • Salary AND equity ranges on every listing — the fields other boards hide.
  • Company context bundled: batch, one-liner, logo, last-active date.
  • Direct applyUrl per job — no intermediate listing page.
  • Filter by free-text query or role type.
  • Cheap and fast — the whole board in one HTTP run.

How to do it in 3 steps

Step 1: Configure the input

Set the inputs as shown below — query takes the targets, free-text filtering plus a role type filter; leave both empty for the full board.

Step 2: Run the Actor

Run it from the console, the API, or the linked saved task. One dataset row is written per job.

Step 3: Use the output

Each row carries the role plus company name, batch, one-liner, location, remote flag, salary range, equity range, and the apply URL.

{
  "maxJobs": 100
}

Each dataset row looks like:

{
  "jobId": "12345",
  "title": "Full-Stack Engineer",
  "jobUrl": "https://www.ycombinator.com/companies/acme/jobs/12345",
  "applyUrl": "https://www.ycombinator.com/companies/acme/jobs/12345",
  "companyName": "Acme",
  "companySlug": "acme",
  "companyBatch": "W24",
  "companyOneLiner": "APIs for logistics",
  "location": "Remote",
  "jobType": "full-time",
  "roleType": "engineering",
  "salaryMin": 140000,
  "salaryMax": 190000,
  "salaryCurrency": "USD",
  "equityMin": 0.1,
  "equityMax": 0.5
}

What to watch for

Comp ranges are as published by each company — some listings omit salary or equity. The board only shows live postings, so expired roles disappear rather than aging out.

Related use cases

Run the YC Jobs Scraper on Apify Store — pay per result, free to try, no credit card to test.

Frequently asked questions

What salary data comes back?

`salaryMin`, `salaryMax` and `salaryCurrency` where published — plus `equityMin`/`equityMax` as percentage ranges. YC companies post both unusually often.

Does it cover remote roles?

Yes — `location` and the job type fields carry the remote flag; filter on `remote` in `query` to scope to remote-friendly roles.

How current is the data?

The board's live listings — `companyLastActiveAt` on each row shows when the company last engaged, a useful freshness signal.

Can I filter to a specific batch?

Company batch (`companyBatch`, e.g. `W24`) is on every row — filter post-extraction.

What's the apply link?

`applyUrl` points at the direct application path — no login wall in the way.

How many jobs are on the board?

Typically several hundred to a few thousand; `maxJobs` bounds the pull.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.