# YCombinator Jobs Scraper \[$0.75/1k💰] | YC Startup Salary (`ahmed_jasarevic/ycombinator-scraper`) Actor

Extract Y Combinator startup jobs: job title, company and YC batch, salary range, equity, visa sponsorship, location, skills and apply URLs — for recruiting research and salary benchmarking.

- **URL**: https://apify.com/ahmed\_jasarevic/ycombinator-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.74 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## YCombinator Jobs Scraper — YC Startup Hiring Data

Extract every open job from the **Y Combinator startup jobs board** ([ycombinator.com/jobs](https://www.ycombinator.com/jobs) / [workatastartup.com](https://www.workatastartup.com/jobs)) — job title, company + YC batch, salary range, equity, visa sponsorship, location, skills and direct apply URLs, in a clean structured dataset. Built for startup recruiting research, YC salary benchmarking and HR-tech pipelines.

### Main Use Cases

- **YC salary benchmarking** — collect salary ranges and equity data across YC-backed startups by role.
- **Startup recruiting research** — find companies hiring for engineering, sales, design, product and more.
- **Visa & relocation screening** — `enrichJobDetails` surfaces which roles sponsor visas and required experience.
- **HR-tech & job aggregator feeds** — a fresh, structured feed of YC startup jobs for your own job board.
- **Startup market research** — track which YC batches and industries are hiring, and how hiring changes over time.

### How It Works

The jobs board is a Rails + Inertia.js application: every page embeds its full state in a `data-page` HTML attribute, and all navigation is done through XHR requests that return **clean JSON**. The Actor reads the site's own internal JSON API directly — no browser, no CAPTCHA, no Cloudflare challenge — using BasicCrawler at 256 MB memory, so a full-board run costs a fraction of what a browser scraper would.

### Extract YC Startup Jobs Without an Official API

Y Combinator publishes no public jobs API. The Actor uses the site's internal JSON endpoints (`workatastartup.com/jobs?role=…&page=…` with `X-Inertia` headers) to pull up to 10,000 jobs per run across all 11 role categories — Engineering, Design, Product, Science, Sales, Marketing, Support, Operations, Recruiting & HR, Finance and Legal. Free Apify users get a preview of **50 jobs per run**; paid users can scrape the **full ~6,000-job board**.

### Input

| Field | Type | Required | Default | Notes |
|-------|------|----------|---------|-------|
| `role` | select | No | `all` | Role category to scrape: all, eng, design, product, science, sales, marketing, support, operations, recruiting, finance, legal |
| `maxItems` | integer | No | `100` | Maximum number of job postings to scrape (1–10,000) |
| `enrichJobDetails` | boolean | No | `false` | Fetch each job's detail page: equity range, visa sponsorship, min experience, skills, full description, detailed company info |
| `proxy` | proxy | No | off | Standard Apify proxy picker (usually not needed — the JSON API is not challenge-walled) |

Example input:

```json
{
  "role": "eng",
  "maxItems": 500,
  "enrichJobDetails": true
}
```

### Output

One dataset item per job posting (board mode):

```json
{
  "jobId": 30657,
  "title": "Full Stack Software Engineer",
  "jobType": "Full-time",
  "location": "Seattle, WA",
  "role": "eng",
  "roleLabel": "Engineering",
  "roleType": "Full stack",
  "salaryRange": "$80K - $140K",
  "companyName": "Mason",
  "companyBatch": "W16",
  "companyOneLiner": "Mason is the fastest way to take smart devices from idea to end user",
  "companyLastActiveAt": "13 days ago",
  "companyProfileUrl": "https://www.workatastartup.com/companies/mason",
  "jobDetailUrl": "https://www.workatastartup.com/jobs/30657",
  "applyUrl": "https://account.ycombinator.com/authenticate?continue=..."
}
```

With `enrichJobDetails: true` each item also includes `equityRange`, `sponsorsVisa`, `minExperience`, `skills`, `jobDescriptionHtml`, `interviewProcessHtml`, plus company profile fields (`companyDescription`, `companyTeamSize`, `companyIndustry`, `companyFounders`, `companyWebsiteUrl`, `companyLocation`, social links). Download as JSON, CSV, Excel or HTML.

### YC Startup Hiring Data by Role, Batch & Salary

Use `role` to slice the board — compare engineering salaries, sales comp, or product roles across YC batches (W16, S21, …). `companyLastActiveAt` shows posting age ("13 days ago") so you can track which companies are actively hiring. Pair with an Apify Schedule (daily/weekly) to monitor new postings over time.

### Integrations & Automation

- **Apify API** — run and fetch results programmatically.
- **Scheduling** — daily or weekly runs keep your feed fresh (recurring usage also improves Store recommendation signals).
- **Export** — JSON, CSV, Excel, HTML; push to your own database or warehouse.

### Related Actors

- [Y Combinator Jobs Scraper](https://apify.com/parsebird/yc-jobs-scraper) — pay-per-result YC jobs with detail enrichment
- [Y Combinator Jobs Scraper — Work at a Startup](https://apify.com/nomad-agent/ycombinator-was-scraper) — per-job priced board scraper
- [Y Combinator Jobs Scraper (automation-lab)](https://apify.com/automation-lab/ycombinator-jobs-scraper) — alternative YC jobs extraction
- [Y Combinator Companies & Jobs Scraper](https://apify.com/deltaspider/y-combinator-scraper) — company-centric YC data
- [Y Combinator Jobs Scraper (artemlazarevm)](https://apify.com/artemlazarevm/yc-jobs-scraper) — YC companies + jobs dataset

### FAQ

#### Why use this Actor instead of the official Y Combinator API?

There is no public YC jobs API. The Actor talks to the site's own internal JSON endpoints (Inertia) that the public jobs page already uses — same data the website renders, returned as structured JSON without a browser.

#### Does it include salary and equity data?

Salary ranges (`salaryRange`) are present when the employer publishes them — most are. Equity, visa sponsorship, experience and skills require `enrichJobDetails: true`.

#### What are alternatives to this Actor?

Other Apify actors: [parsebird/yc-jobs-scraper](https://apify.com/parsebird/yc-jobs-scraper) ($0.0028/job detail), [nomad-agent/ycombinator-was-scraper](https://apify.com/nomad-agent/ycombinator-was-scraper) ($0.0022/job), [automation-lab/ycombinator-jobs-scraper](https://apify.com/automation-lab/ycombinator-jobs-scraper) and [artemlazarevm/yc-jobs-scraper](https://apify.com/artemlazarevm/yc-jobs-scraper). This Actor has **no per-result fee — you pay platform compute only** (small JSON requests at 256 MB), so full-board dumps are unusually cheap to run.

#### How can I scrape all YC startup jobs?

Set `role: "all"` and `maxItems: 10000` (paid tier). The full board is ~6,000 jobs ≈ 200 board requests, or ~6,200 requests with detail enrichment.

#### Does the Actor handle site changes?

The Inertia asset version is re-detected automatically on every run, so the Actor keeps working across site redeploys without maintenance.

### For AI Agents & LLM Apps

**Purpose:** returns structured Y Combinator startup job postings (title, company + YC batch, salary, location, role, apply URL; optional equity/visa/skills enrichment).

Minimal input:

```json
{ "role": "all", "maxItems": 100 }
```

Enrichment variant (richer per-job data, ~10× more requests):

```json
{ "role": "eng", "maxItems": 200, "enrichJobDetails": true }
```

Output fields: `jobId, title, jobType, location, role, roleLabel, roleType, salaryRange, companyName, companySlug, companyBatch, companyOneLiner, companyLogoUrl, companyLastActiveAt, companyProfileUrl, jobDetailUrl, applyUrl` (+ with enrichment: `equityRange, sponsorsVisa, minExperience, skills, jobDescriptionHtml, interviewProcessHtml, companyDescription, companyTeamSize, companyIndustry, companyIndustries, companyFounders, companyWebsiteUrl, companyTwitterUrl, companyFacebookUrl, companyLocation`).

Behaviors an agent should know:

- `role` accepts the enum codes only (`all, eng, design, product, science, sales, marketing, support, operations, recruiting, finance, legal`).
- `enrichJobDetails: true` multiplies requests roughly 30× (one detail request per job) — enable it only when equity/visa/skills are actually needed.
- `salaryRange` is a display string and is absent when the employer didn't publish one; `companyLastActiveAt` is a relative string ("13 days ago").
- Billing: no per-result fee — billed on Apify compute units only (256 MB runs, JSON-only requests).

### Legal & Compliance Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Y Combinator. It reads publicly available job-listing pages — it does not bypass logins, paywalls or CAPTCHAs. You are responsible for complying with the site's Terms of Service and applicable data-protection law when using the results.

### SEO Keywords

y combinator jobs, yc startup jobs, yc jobs, work at a startup, y combinator jobs api, yc salary data, yc equity data, startup recruiting research, yc batch data, yc engineering jobs, yc sales jobs, yc marketing jobs, yc product jobs, visa sponsorship jobs, yc startup hiring, startup job board data, work at a startup api, yc companies data, startup market research, yc hiring trends, y combinator scraper, yc jobs dataset

# Actor input Schema

## `role` (type: `string`):

Which job role category to scrape. Choose 'all' to scrape every category (Engineering, Design, Product, Science, Sales, Marketing, Support, Operations, Recruiting & HR, Finance, Legal).

## `maxItems` (type: `integer`):

Maximum number of job postings to scrape.

## `enrichJobDetails` (type: `boolean`):

Fetch each job's detail page for richer data: equity range, visa sponsorship, minimum experience, skills, full job description, and detailed company info (team size, industry, founders, social links). Slower but much richer output.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "role": "all",
  "maxItems": 100,
  "enrichJobDetails": false,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/ycombinator-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "proxy": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/ycombinator-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/ycombinator-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/ycombinator-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tB9KjFaUHeD2xebeJ/builds/sVrtPM1ZJIRfaXj85/openapi.json
