# Y Combinator Scraper - YC Companies, Founders & Open Jobs (`scrapersdelight/yc-company-founder-contact-scraper`) Actor

$2 per 1,000 companies; $1 on Business. Every Y Combinator company past the 1,000-result cap with its founders (LinkedIn, X, Hacker News, past companies) and open jobs (salary, equity, hiring manager, description); founder and job rows free. Paste a YC directory URL or filter by batch.

- **URL**: https://apify.com/scrapersdelight/yc-company-founder-contact-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 per y combinator company returneds

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

## Y Combinator Scraper: YC Companies, Founders & Open Jobs

Export the [Y Combinator startup directory](https://www.ycombinator.com/companies): **companies** (website, domain, one-liner, batch, status, team size, location, industries, socials, YC partner), **founders** (name, title, bio, LinkedIn, X, Hacker News username, past companies, photo) and **open jobs** (full description, salary and equity, location, remote, role, experience, visa, skills, hiring manager, interview process, apply link). Founders and jobs come inside each company row, and you can also get them as their own rows, free. Paste a YC directory search URL, pick filters, or scrape everything.

**Every company, not the first 1,000.** On 2026-09-30 the directory held **6,265 companies** from 51 batches. A full run returned all 6,265 with **11,826 founders**, and the **1,485 hiring companies** listed **6,117 open jobs**. YC's search stops at 1,000 results per query; this Actor splits bigger searches by batch and checks that every company YC states for your search came back before it finishes.

**$2 per 1,000 companies** on the Free, Starter and Scale plans, **$1 per 1,000 on Business** and above, founders and open jobs included. Founder and job rows are free. No start fee. The whole directory with every founder and job costs $12.53.

### Why use this Actor

- **Paste the URL you already built.** Set filters on ycombinator.com/companies, copy the address bar, paste it. Batch, industry, region, company size, hiring, top companies, nonprofit, public videos and search text are applied exactly as the directory applies them.
- **You pay per company, founders and jobs included.** Every company row lists its founders and open jobs. Turn on **Founder rows** or **Open job rows** to also get them as their own rows, ready for a CRM or a spreadsheet, at no extra cost. Founder LinkedIn is filled for 97.3% of 11,826 founders, Hacker News username for 100%.
- **Open jobs with the details that matter.** Salary and equity as YC shows them *and* as numbers, the full description, the hiring manager on 96.3% of jobs, and that person's LinkedIn when they are a founder (66.3% of jobs).
- **One company, one charge.** Company rows are deduplicated on YC's company id, and a run that restarts on Apify's side picks up where it stopped, never delivering or charging a company twice.
- **Inputs from other YC scrapers run as they are.** `scrapeAllCompanies` / `scrapeAllFounders` / `scrapeAllJobs`, and `url` / `scrape_founders` / `scrape_open_jobs` / `max_companies` / `scrape_all_companies`, are read with the same meaning. See [Inputs written for other YC scrapers](#inputs-written-for-other-yc-scrapers).

### Quick start

**Paste a directory URL** (hiring B2B companies from Winter 2026 with at most 25 people):

```json
{
    "url": "https://www.ycombinator.com/companies?batch=Winter%202026&industry=B2B&isHiring=true&team_size=%5B%221%22%2C%2225%22%5D",
    "scrapeAllFounders": true,
    "scrapeAllJobs": true
}
```

**Everything: every company, founder and open job:**

```json
{ "scrapeAllCompanies": true, "scrapeAllFounders": true, "scrapeAllJobs": true }
```

**Every company, plus a row per founder (free), no job rows:**

```json
{ "scrapeAllCompanies": true, "scrapeAllFounders": true, "scrapeAllJobs": false }
```

**Every open job at YC companies** (only hiring companies, no founder rows):

```json
{ "onlyHiring": true, "scrapeAllFounders": false, "scrapeAllJobs": true }
```

**Founders of one batch who have a LinkedIn:**

```json
{ "batches": ["S25"], "scrapeAllFounders": true, "requireFounderLinkedin": true }
```

**Enrich your own list of YC companies:**

```json
{ "companyUrls": ["https://www.ycombinator.com/companies/airbnb", "doordash", "stripe"] }
```

**New companies, on a schedule** (newest first):

```json
{ "launchedAfter": "30 days", "sortBy": "launchDate" }
```

Leave **Maximum companies** empty to get every match; set it to cap the run. With no URL, no filter and no "Scrape all companies", a run returns a 100-company sample.

### What you get

Every row has a `type`:

| `type` | One row per | Turned on by | Main fields |
|---|---|---|---|
| `company` | YC company (the billed unit) | always | company, links, batch, status, team, location, industries, founders (listed inside), jobs (listed inside) |
| `founder` | founder of a delivered company | **Founder rows** (off by default; free) | name, title, bio, LinkedIn, X, Hacker News, region, past companies, photo + the company |
| `job` | open job at a delivered company | **Open job rows** (off by default; free) | title, description, salary, equity, location, remote, role, experience, visa, skills, hiring manager + the company |

Founder and job rows carry their company's columns (`companyId`, `companyName`, `companyDomain`, `companyWebsite`, `batch`, `batchCode`, `companyStatus`, `companyTeamSize`, `companyLocation`, `companyIndustry`, `companyLinkedinUrl`, ...), so a single export still reads company by company. The dataset has four table views: All results, Companies, Founders and Open jobs.

#### Company rows

| Field group | Fields |
|---|---|
| Company | `companyId`, `name`, `slug`, `ycUrl`, `website`, `domain`, `oneLiner`, `longDescription`, `logoUrl`, `formerNames` |
| YC batch | `batch` ("Summer 2024"), `batchCode` ("S24"), `batchSeason`, `batchYear` |
| Status and size | `status` (Active / Acquired / Public / Inactive), `stage` (Early / Growth), `teamSize`, `isHiring`, `isTopCompany`, `isNonprofit` |
| Market | `industry`, `subindustry`, `industries`, `tags`, `regions` |
| Location | `location`, `city`, `cityTag`, `country`, `yearFounded`, `launchedAt` |
| Company links | `companyLinkedinUrl`, `companyXUrl`, `companyFacebookUrl`, `crunchbaseUrl`, `companyGithubUrl`, `workAtAStartupUrl` |
| Hiring write-ups | `hiringDescription` (the company's pitch to candidates), `techDescription` (its tech stack), both from Work at a Startup |
| YC extras | `ycPartner`, `ycPartnerUrl`, `demoDayVideoUrl`, `applicationVideoUrl`, `applicationAnswers`, `bonusQuestionAnswers`, `hasPublicDemoDayVideo`, `hasPublicApplicationVideo`, `hasPublicApplicationAnswers`, `hasBonusQuestionAnswers` |
| Founders (inside the row) | `founderCount`, `activeFounderCount`, `founderNames`, `founderLinkedinUrls`, `founders[]` (every founder field below) |
| Jobs and news (inside the row) | `openJobCount`, `jobPostings[]` (jobId, title, url, applyUrl, location, type, role, roleDetail, salaryRange, equityRange, minExperience, visa, skills, postedAgo, lastActive), `news[]` (title, url, domain, date), `launches[]` (Launch YC posts: title, tagline, url, createdAt, votes, body, postedBy) |

#### Founder rows

`founderId`, `name`, `firstName`, `lastName`, `title`, `isActive` (false = a former founder), `bio`, `linkedinUrl`, `linkedinHandle`, `xUrl`, `xHandle`, `hackerNewsUsername`, `hackerNewsUrl`, `region`, `currentCompany`, `currentTitle` (where the person is now, from YC's founders directory), `allYcCompanies`, `ycBatches`, `latestYcCompany`, `pastCompanies` (from Work at a Startup), `photoUrl`, plus the company columns.

#### Job rows

| Field group | Fields |
|---|---|
| Job | `jobId`, `title`, `jobUrl` (ycombinator.com), `workAtAStartupUrl`, `applyUrl`, `description` (the full text, Markdown), `interviewProcess` |
| Where and what | `location`, `locations` (split on " / "), `remote`, `jobType` (Full-time / Internship / Contract), `role` (Engineering, Sales, ...), `roleDetail` (Full stack, Machine learning, ...) |
| Pay | `salaryRange` (as YC shows it), `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryPeriod`, `equityRange`, `equityMinPercent`, `equityMaxPercent` |
| Requirements | `minExperience`, `minSchoolYear`, `visa`, `skills`, `applicationQuestions` (the company's own questions for applicants) |
| Hiring manager | `hiringManagerId`, `hiringManagerName`, `hiringManagerFirstName`, `hiringManagerLastName`, `hiringManagerPhotoUrl`, `hiringManagerIsFounder`, `hiringManagerLinkedinUrl` (when the hiring manager is one of the company's founders) |
| Freshness | `postedAgo` ("3 months"), `lastActive` |

`salaryMin` / `salaryMax` are the numbers in YC's text ("$120K - $250K" = 120000 and 250000). The currency is the ISO code YC appends ("£30K - £50K GBP"), else USD for "$". `salaryPeriod` is set only when YC states it ("/ hourly", "/ monthly"). `remote` is true when the location text names remote work ("Remote (US)").

### How full each field is

Measured on full runs on 2026-09-30.

**Companies** (all 6,265): website 99.3% · domain 99.3% · one-liner 97.4% · description 93.3% · team size 96.1% · location 97.6% · city 95.5% · country 96.8% · tags 86.2% · year founded 83.4% · company LinkedIn 74.2% · company X 54.3% · YC partner 49.6% · Crunchbase 43.4% · launches 39.6% · news 32.3% · hiring write-up 40.0% · tech write-up 29.9% · Facebook 19.6% · GitHub 18.8% · batch, status, industry, regions, logo, launch date 100%. Among the 1,485 hiring companies the write-ups are fuller: hiring 87.3%, tech 63.0%.

**Founders**, the whole directory and two opposite ends of it:

| | All 6,265 companies | 2025 + 2026 batches (1,352) | 2015 and earlier (924) |
|---|---|---|---|
| Founders per company | 1.89 | 1.97 | 1.86 |
| Companies with at least one founder LinkedIn | 97.7% | 99.0% | 92.0% |
| Founder LinkedIn | 11,504 of 11,826 (97.3%) | 99.5% | 88.8% |
| Founder X / Twitter | 5,144 (43.5%) | 57.0% | 30.6% |
| Founder Hacker News username | 11,826 (100%) | 100% | 100% |
| Founder bio | 9,282 (78.5%) | 99.7% | 44.2% |
| Founder region | 98.8% | 99.9% | 96.6% |
| Founder photo | 98.5% | 99.6% | 91.5% |
| Founder past companies | 3,011 (25.5%) | 4.5% | 19.1% |

70 of the 6,265 companies list no founder on their YC profile; they are still delivered (use `requireFounderLinkedin` to skip them). 2,212 founder entries are marked `isActive: false` (former founders).

**Open jobs** (all 6,117 jobs at the 1,485 hiring companies; 1,396 of them had at least one job listed):

| Field | Filled |
|---|---|
| title, location, job type, role, visa, apply link, posted | 100% |
| description (full text) | 6,117 (100%) |
| hiring manager | 5,890 (96.3%) |
| hiring manager is a founder, with their LinkedIn | 4,055 (66.3%) |
| salary | 4,979 (81.4%), every one parsed into numbers |
| minimum experience | 93.5% |
| role detail | 51.8% |
| equity | 1,813 (29.6%) |
| remote | 2,158 jobs (35.3%) name remote work |
| last active | 34.2% |
| skills | 22.8% |
| interview process | 1,121 (18.3%) |
| application questions | 450 (7.4%) |

Salary currencies seen: USD 4,375, INR 272, GBP 139, EUR 143, CAD 50; 107 are hourly and 215 monthly.

**Founder emails are not included.** YC does not publish founder email addresses on the directory, company or job pages. Use `domain` plus `firstName`/`lastName` with an email finder if you need them.

### Input

| Input | Type | Default | Notes |
|---|---|---|---|
| `url` | text | — | A ycombinator.com/companies search URL with your filters (see below). |
| `scrapeAllCompanies` | boolean | false | Every company in the directory. The URL and filters are ignored; `maxItems` still applies. |
| `scrapeAllFounders` | boolean | false | Also output a founder row per founder. Free. |
| `scrapeAllJobs` | boolean | false | Also output a job row per open job. Free. |
| `maxItems` | integer | empty | Companies to deliver (and pay for); their founder and job rows come with them. Empty = every match (a 100-company sample when nothing is chosen). 0 = no limit. |
| `batches` | list | all | "S24", "W09", "P25" or "X25" (Spring), "F24" (Fall), "Summer 2024", or a year ("2024" = every batch that year). |
| `industries` | list | all | YC industries or sub-industries: "Fintech", "B2B", "Healthcare", "Sales", "B2B -> Sales". |
| `regions` | list | all | "United States of America" (or "USA"), "Europe", "United Kingdom" (or "UK"), "India", "Remote", ... |
| `tags` | list | all | "SaaS", "AI", "Artificial Intelligence", "Developer Tools", "Marketplace", ... (about 330 tags). |
| `statuses` | list | all | Active, Acquired, Public, Inactive. |
| `onlyHiring` | boolean | false | Companies YC marks as hiring (1,485 on 2026-09-30). |
| `onlyTopCompanies` | boolean | false | YC's Top Companies list (91). |
| `onlyNonprofits` | boolean | false | Nonprofits (42). |
| `minTeamSize` / `maxTeamSize` | integer | 0 | 0 = no limit. |
| `launchedAfter` | text | — | "2026-06-01", or "30 days", "6 months", "1 year". |
| `searchQuery` | text | — | The same as the directory's search box. |
| `companyUrls` | list | — | YC (or Work at a Startup) company URLs or bare slugs. Used instead of the URL and filters. |
| `requireFounderLinkedin` | boolean | false | Skip companies where no founder has a LinkedIn URL. Skipped companies and their rows are not charged. |
| `sortBy` | select | relevance | `relevance` (the directory's order) or `launchDate` (newest launched first). |
| `directoryOnly` | boolean | false | Company rows with the directory fields only; the whole directory in about half a minute. Ignored while founder rows, job rows or `requireFounderLinkedin` are on. |
| `proxyConfiguration` | proxy | none | Runs connect directly. If YC ever blocks a run it moves to this proxy, then Apify Residential, automatically. |

Filters combine with AND across fields and OR inside one field: `batches: ["S24", "W25"]` with `industries: ["Fintech"]` = fintech companies from either batch. A URL and the filter fields can be used together; their filters add up.

**Every filter value is checked against the live directory before anything runs.** YC's search silently returns nothing for a value it does not hold (the directory stores "Summer 2024", so a raw "S24" matches zero companies). This Actor translates batch codes and stops with a clear message, naming the close matches, if a batch, industry, region or tag does not exist. Nothing is charged for a stopped run.

#### Pasting a YC directory URL

Set filters on [ycombinator.com/companies](https://www.ycombinator.com/companies), copy the address bar and paste it into `url`. If the address bar has not updated after a click, change any filter once more and copy again.

| URL parameter | Example | Applied as |
|---|---|---|
| `batch` (repeatable) | `batch=Summer%202026&batch=W25` | companies from any of these batches |
| `industry` (repeatable) | `industry=B2B`, `industry=Sales` | industry or sub-industry |
| `regions` (repeatable) | `regions=Europe` | HQ region |
| `team_size` | `team_size=["1","25"]` | the size slider: a lower bound only if the left handle is off "1", an upper bound only if the right handle is off "1,000+" (as on the site: `["1","25"]` keeps the 133 companies that list no headcount) |
| `isHiring`, `top_company`, `nonprofit` | `isHiring=true` | hiring / Top Companies / nonprofits |
| `app_video_public`, `demo_day_video_public`, `app_answers`, `question_answers` | `demo_day_video_public=true` | public application video / Demo Day video / application answers / bonus questions |
| `query` | `query=agents` | the search box |
| `tags`, `status` | `tags=SaaS` | tags / status (not on the site's own sidebar, applied if present) |

Any other parameter is listed in the run log as not used. Directory landing pages such as ycombinator.com/companies/industry/fintech are not search URLs; use the filters instead.

#### Inputs written for other YC scrapers

These fields are read with the meaning they have elsewhere, so a saved input or API call keeps working:

| Field | Read as |
|---|---|
| `scrapeAllCompanies: true` | every company in the directory |
| `scrapeAllFounders` / `scrapeAllJobs` | founder rows / job rows (free; the company rows list them either way) |
| `url` | the directory search URL |
| `scrape_founders` / `scrape_open_jobs` | founder rows / job rows (free; the company rows list them either way) |
| `max_companies` | maximum companies; empty = no limit |
| `scrape_all_companies: true` | every company in the directory, with `url` and `max_companies` ignored |
| `directoryUrl`, `includeFounders: false` | this Actor's earlier names for `url` and `directoryOnly` |

The run summary lists which of these a run used.

### Output examples

Real rows from a run on 2026-09-30 UTC with an input written for another YC scraper, `{"url": "https://www.ycombinator.com/companies?batch=Winter%202026&industry=B2B&isHiring=true&team_size=%5B%221%22%2C%2225%22%5D", "scrape_founders": true, "scrape_open_jobs": true, "max_companies": 15}`. Unedited except that long text is cut where marked "...", and the company row's `launches` is left out for length.

**Company row**

```json
{
    "type": "company",
    "companyId": 31292,
    "name": "Aurorin CAD",
    "slug": "aurorin-cad",
    "ycUrl": "https://www.ycombinator.com/companies/aurorin-cad",
    "website": "https://aurorincad.com",
    "domain": "aurorincad.com",
    "oneLiner": "Claude code for Mechanical Engineers",
    "longDescription": "There are 2 problems:\r\n\r\nThe first, CAD software is slow and the second, designing with it is a tedious process with many steps. ...",
    "batch": "Winter 2026",
    "batchCode": "W26",
    "batchSeason": "Winter",
    "batchYear": 2026,
    "status": "Active",
    "stage": "Early",
    "isHiring": true,
    "isTopCompany": false,
    "isNonprofit": false,
    "teamSize": 1,
    "industry": "B2B",
    "subindustry": "B2B -> Engineering, Product and Design",
    "industries": ["B2B", "Engineering, Product and Design"],
    "tags": [],
    "regions": ["United States of America", "America / Canada"],
    "location": "San Francisco, CA, USA",
    "city": "San Francisco",
    "cityTag": "san-francisco-bay-area",
    "country": "US",
    "yearFounded": 2026,
    "launchedAt": "2026-01-22T19:20:12.000Z",
    "formerNames": ["Rapid CAD", "Aurorin"],
    "logoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/f33a496f7311dedfd5027e589663789820e95b21.png",
    "companyLinkedinUrl": "https://www.linkedin.com/company/aurorin-cad/",
    "companyXUrl": "https://x.com/aurorincad?s=21",
    "companyFacebookUrl": null,
    "crunchbaseUrl": null,
    "companyGithubUrl": null,
    "ycPartner": "Jared Friedman",
    "ycPartnerUrl": "https://www.ycombinator.com/people/jared-friedman",
    "demoDayVideoUrl": null,
    "applicationVideoUrl": null,
    "applicationAnswers": [],
    "bonusQuestionAnswers": [],
    "hasPublicDemoDayVideo": false,
    "hasPublicApplicationVideo": false,
    "hasPublicApplicationAnswers": null,
    "hasBonusQuestionAnswers": false,
    "workAtAStartupUrl": "https://www.workatastartup.com/companies/aurorin-cad",
    "hiringDescription": "Aurorin exists so that a handful of great engineers can build what once took thousands. ...",
    "techDescription": "Aurorin has built a brand new CAD software stack from the ground up starting with the CAD kernel. All major CAD tools use kernels made in the 1980s. Our entire software stack is written in swift. ...",
    "foundersIncluded": true,
    "founderCount": 1,
    "activeFounderCount": 1,
    "founderNames": ["Michael Baron"],
    "founderLinkedinUrls": ["https://www.linkedin.com/in/michael-andrew-baron/"],
    "founders": [
        {
            "founderId": 2811605,
            "name": "Michael Baron",
            "firstName": "Michael",
            "lastName": "Baron",
            "title": "Founder/CEO",
            "isActive": true,
            "bio": "Founder of Aurorin, 3x SpaceX intern, prev Apple Intern. ...",
            "linkedinUrl": "https://www.linkedin.com/in/michael-andrew-baron/",
            "linkedinHandle": "michael-andrew-baron",
            "xUrl": "https://x.com/nominalaviator?s=21",
            "xHandle": "nominalaviator",
            "hackerNewsUsername": "michaelbaron",
            "hackerNewsUrl": "https://news.ycombinator.com/user?id=michaelbaron",
            "region": "United States of America",
            "currentCompany": "Aurorin CAD",
            "currentTitle": "CEO",
            "allYcCompanies": "Aurorin CAD",
            "ycBatches": ["W26"],
            "latestYcCompany": "Aurorin CAD",
            "pastCompanies": null,
            "photoUrl": "https://bookface-images.s3.amazonaws.com/avatars/fff2b6020076e2a93f1d4cd5e694baf2db3d0f7d.jpg"
        }
    ],
    "openJobCount": 1,
    "jobPostings": [
        {
            "jobId": 92565,
            "title": "Founding Engineer",
            "url": "https://www.ycombinator.com/companies/aurorin-cad/jobs/R3tKam9-founding-engineer",
            "location": "San Francisco, CA, US",
            "type": "Full-time",
            "role": "Engineering",
            "salaryRange": "$120K - $160K",
            "equityRange": "3.00% - 4.00%",
            "minExperience": "Any (new grads ok)",
            "visa": "Will sponsor",
            "skills": ["C++", "Swift", "GPU Programming", "CAD Design"],
            "roleDetail": "Full stack",
            "applyUrl": "https://account.ycombinator.com/authenticate?continue=https%3A%2F%2Fwww.workatastartup.com%2Fapplication%3Fsignup_job_id%3D92565&defaults%5BsignUpActive%5D=true&defaults%5Bwaas_company%5D=31292",
            "postedAgo": "6 months",
            "lastActive": "4 months"
        }
    ],
    "news": [],
    "scrapedAt": "2026-09-30T03:42:03.951Z"
}
```

**Founder row**

```json
{
    "type": "founder",
    "founderId": 2811605,
    "name": "Michael Baron",
    "firstName": "Michael",
    "lastName": "Baron",
    "title": "Founder/CEO",
    "isActive": true,
    "bio": "Founder of Aurorin, 3x SpaceX intern, prev Apple Intern. ...",
    "linkedinUrl": "https://www.linkedin.com/in/michael-andrew-baron/",
    "linkedinHandle": "michael-andrew-baron",
    "xUrl": "https://x.com/nominalaviator?s=21",
    "xHandle": "nominalaviator",
    "hackerNewsUsername": "michaelbaron",
    "hackerNewsUrl": "https://news.ycombinator.com/user?id=michaelbaron",
    "region": "United States of America",
    "currentCompany": "Aurorin CAD",
    "currentTitle": "CEO",
    "allYcCompanies": "Aurorin CAD",
    "ycBatches": ["W26"],
    "latestYcCompany": "Aurorin CAD",
    "pastCompanies": null,
    "photoUrl": "https://bookface-images.s3.amazonaws.com/avatars/fff2b6020076e2a93f1d4cd5e694baf2db3d0f7d.jpg",
    "companyId": 31292,
    "companyName": "Aurorin CAD",
    "companySlug": "aurorin-cad",
    "companyYcUrl": "https://www.ycombinator.com/companies/aurorin-cad",
    "companyWebsite": "https://aurorincad.com",
    "companyDomain": "aurorincad.com",
    "companyOneLiner": "Claude code for Mechanical Engineers",
    "batch": "Winter 2026",
    "batchCode": "W26",
    "companyStatus": "Active",
    "companyTeamSize": 1,
    "companyLocation": "San Francisco, CA, USA",
    "companyIndustry": "B2B",
    "companyIsHiring": true,
    "companyLinkedinUrl": "https://www.linkedin.com/company/aurorin-cad/",
    "companyLogoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/f33a496f7311dedfd5027e589663789820e95b21.png",
    "scrapedAt": "2026-09-30T03:42:03.951Z"
}
```

**Job row**

```json
{
    "type": "job",
    "jobId": 92565,
    "title": "Founding Engineer",
    "jobUrl": "https://www.ycombinator.com/companies/aurorin-cad/jobs/R3tKam9-founding-engineer",
    "workAtAStartupUrl": "https://www.workatastartup.com/jobs/92565",
    "applyUrl": "https://account.ycombinator.com/authenticate?continue=https%3A%2F%2Fwww.workatastartup.com%2Fapplication%3Fsignup_job_id%3D92565&defaults%5BsignUpActive%5D=true&defaults%5Bwaas_company%5D=31292",
    "description": "# Why us?\n\nAurorin exists so that a handful of great engineers can build what once took thousands. ...\n\n### Requirements\n\n* Strong background in systems programming or building of native applications\n* High responsibility and proactivity\n\n### Preferred skills and experience:\n\n* Strong Swift experience\n* Strong C++ experience\n* GPU programming experience\n\n...",
    "interviewProcess": null,
    "location": "San Francisco, CA, US",
    "locations": ["San Francisco, CA, US"],
    "remote": false,
    "jobType": "Full-time",
    "role": "Engineering",
    "roleDetail": "Full stack",
    "salaryRange": "$120K - $160K",
    "salaryMin": 120000,
    "salaryMax": 160000,
    "salaryCurrency": "USD",
    "salaryPeriod": null,
    "equityRange": "3.00% - 4.00%",
    "equityMinPercent": 3,
    "equityMaxPercent": 4,
    "minExperience": "Any (new grads ok)",
    "minSchoolYear": null,
    "visa": "Will sponsor",
    "skills": ["C++", "Swift", "GPU Programming", "CAD Design"],
    "hiringManagerId": 2811605,
    "hiringManagerName": "Michael Baron",
    "hiringManagerFirstName": "Michael",
    "hiringManagerLastName": "Baron",
    "hiringManagerPhotoUrl": "https://bookface-images.s3.amazonaws.com/avatars/fff2b6020076e2a93f1d4cd5e694baf2db3d0f7d.jpg",
    "hiringManagerIsFounder": true,
    "hiringManagerLinkedinUrl": "https://www.linkedin.com/in/michael-andrew-baron/",
    "applicationQuestions": [
        {
            "question": "Please provide a 2 sentence summary highlighting your top two exceptional academic and/or professional accomplishments. This should be a reflection of your most highly technical accomplishments.",
            "required": true,
            "type": "long_text"
        }
    ],
    "postedAgo": "6 months",
    "lastActive": "4 months",
    "companyId": 31292,
    "companyName": "Aurorin CAD",
    "companySlug": "aurorin-cad",
    "companyYcUrl": "https://www.ycombinator.com/companies/aurorin-cad",
    "companyWebsite": "https://aurorincad.com",
    "companyDomain": "aurorincad.com",
    "companyOneLiner": "Claude code for Mechanical Engineers",
    "batch": "Winter 2026",
    "batchCode": "W26",
    "companyStatus": "Active",
    "companyTeamSize": 1,
    "companyLocation": "San Francisco, CA, USA",
    "companyIndustry": "B2B",
    "companyIsHiring": true,
    "companyLinkedinUrl": "https://www.linkedin.com/company/aurorin-cad/",
    "companyLogoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/f33a496f7311dedfd5027e589663789820e95b21.png",
    "scrapedAt": "2026-09-30T03:42:03.951Z"
}
```

`photoUrl`, `hiringManagerPhotoUrl` and `logoUrl` are permanent image links. (The profile page's own photo links are signed and expire an hour after they are served, so they are not used.)

### Pricing

Pay per event: **$2 per 1,000 companies** ($0.002 each) on the Free, Starter and Scale plans, **$1 per 1,000** ($0.001 each) on Business and above. Each company row is one charge, with its founders and open jobs listed inside it. **Founder rows and job rows are free.** No start fee.

Costs for real runs, with the row counts measured on 2026-09-30:

| Run | Companies (charged) | Founder rows (free) | Job rows (free) | Cost | On Business |
|---|---|---|---|---|---|
| The Console's example (10 companies from Summer 2026) | 10 | — | — | $0.02 | $0.01 |
| One batch with founder rows (Summer 2026) | 231 | 459 | — | $0.46 | $0.23 |
| Every hiring company in Summer 2025, with job rows | 67 | — | 173 | $0.13 | $0.07 |
| Every hiring company, with founder and job rows | 1,485 | 2,796 | 6,117 | $2.97 | $1.49 |
| The whole directory | 6,265 | — | — | $12.53 | $6.27 |
| Everything: the whole directory with founder and job rows | 6,265 | 11,826 | about 6,100 | $12.53 | $6.27 |

You pay only for companies delivered to your dataset. A company skipped by `requireFounderLinkedin`, a company URL YC does not have and a profile that could not be reached are listed in the run summary and not charged. Set **Maximum companies** or a maximum charge on the run to cap the cost; the Actor stops at either and does not fetch what it could not bill.

### Use cases

- **Investors and VCs:** track batches, industries and team growth; watch new launches on a schedule; build founder lists by batch.
- **Sales and lead generation:** founders with LinkedIn, X and the company domain for outreach; hiring companies as a buying signal.
- **Recruiters and job seekers:** every open role with salary, equity, visa policy and the hiring manager's name (and LinkedIn when a founder hires).
- **Researchers and analysts:** the whole directory since 2005 with status, stage, team size, regions and industries for ecosystem studies.

### Use it from code

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("scrapersdelight/yc-company-founder-contact-scraper").call(run_input={
    "url": "https://www.ycombinator.com/companies?batch=Summer%202026",
    "scrapeAllFounders": True,
    "scrapeAllJobs": True,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    if row["type"] == "founder":
        print(row["name"], row["companyName"], row["linkedinUrl"])
```

JavaScript:

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('scrapersdelight/yc-company-founder-contact-scraper').call({
    onlyHiring: true,
    scrapeAllFounders: false,
    scrapeAllJobs: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const jobs = items.filter((row) => row.type === 'job' && row.salaryMin >= 150000);
console.log(`${jobs.length} jobs paying $150K or more`);
```

Download the dataset as JSON, CSV, Excel or HTML from the Storage tab, or connect it to Make, Zapier, n8n, Google Sheets, Slack or webhooks through Apify integrations. Schedules run it daily or weekly.

### Run summary

Each run saves a `RUN_SUMMARY` record in its key-value store: how many companies YC states for your URL or filters, how many unique companies came back (the completeness check), how the search was split, companies / founders / jobs delivered, founder and job field counts, which input names from other YC scrapers were read, the companies not found / without a public profile / unreachable (none charged), and companies delivered == companies charged (founder and job rows are counted, never charged).

### Data limits

- **Founder emails and phone numbers** are not published by YC and are not in the output.
- **Past companies** come from Work at a Startup, which fills them for 25.5% of founders (mostly founders of older companies).
- **Links that lead to nobody ship as null.** Founder "LinkedIn" values such as linkedin.com/feed/, a profile-settings page, a company page or a name typed where a link belongs, and YC's `missing.png` placeholder photo, are `null`. A LinkedIn `/pub/`, `/profile/view` or mobile `/mwlite/in/` link is a real profile and is kept as published.
- **Team size**: YC shows 0 for 133 companies that never set a headcount; those rows carry `teamSize: null`, not 0.
- **Text is shipped exactly as YC stores it.** 7 descriptions of early companies are stored double-encoded on YC's side (for example "â€™" for an apostrophe); they are delivered unchanged. `hiringDescription`, `techDescription` and `interviewProcess` arrive as HTML from Work at a Startup and are delivered as plain text (paragraphs, "- " list items, links kept as "text (address)").
- **Salary numbers** are the numbers YC shows; a few postings carry values like "$1 - $120K" or "$120 - $180", and they are delivered as written.
- `postedAgo` and `lastActive` are YC's relative wording ("3 months"), not dates.
- A founder with `isActive: false` is listed by YC as a former founder of that company.
- Order: with a cap, companies come in the directory's order (or newest launched first). When a match is over 1,000 companies it is read batch by batch, newest batch first.

### FAQ

**Can I get more than 1,000 companies?** Yes. A search that matches more than 1,000 is split by batch (and by id range inside any batch that ever grows past 1,000), and the run fails loudly instead of finishing short if fewer companies come back than YC states.

**Do I pay for founder or job rows?** No. You pay per company; every company row lists its founders and open jobs, and the founder and job rows are the same data as their own rows, free.

**Why is my URL filter not applied?** The run log names every URL parameter it did not use. Make sure the URL starts with https://www.ycombinator.com/companies? and contains your filters; if the address bar did not update after a click, change a filter again before copying.

**How do I get only new companies?** Schedule the Actor with `launchedAfter: "7 days"` (or the newest batch code) and `sortBy: "launchDate"`.

**Why does my batch filter say unknown?** The value is not a batch YC has. The error lists the directory's batches; codes are W (Winter), S (Summer), P or X (Spring), F (Fall) plus the two-digit year.

**How long does a run take?** Measured on Apify at the default 256 MB: 10 companies with founders in 3-4 seconds; 67 hiring companies with 173 job rows in 10 seconds; 200 hiring companies with 389 founder rows and 738 job rows in 2 minutes 24 seconds (including a forced restart). A company costs two small requests and a job two more.

**Can I call it from code or schedule it?** Yes, through the Apify API (Python, JavaScript, cURL), Schedules, Make, Zapier, n8n or an MCP client.

# Actor input Schema

## `url` (type: `string`):

Set your filters on [ycombinator.com/companies](https://www.ycombinator.com/companies) (batch, industry, region, company size, hiring, top companies, nonprofit, public videos, search text), then copy the full address bar URL and paste it here. Every filter in it is applied exactly as the directory applies it. Leave empty to use the filter fields below instead.

## `scrapeAllCompanies` (type: `boolean`):

Every company in the YC directory (6,265 on 2026-09-30), from all batches. The URL and filters are ignored; Maximum companies still applies if you set it. You pay per company: the whole directory is about $12.53.

## `scrapeAllFounders` (type: `boolean`):

Also output one row per founder (type "founder"): name, title, bio, LinkedIn, X, Hacker News username, region, past companies and photo, plus the company's name, website and batch. Free: you pay per company, and every company row already lists its founders; this only adds them as their own rows for spreadsheets and CRMs.

## `scrapeAllJobs` (type: `boolean`):

Also output one row per open job (type "job"): full description, salary and equity (as text and as numbers), location, remote, job type, role, experience, visa, skills, hiring manager, interview process and apply link. Free: you pay per company. Tip: filter on hiring companies (isHiring=true in the URL, or Only companies that are hiring) to skip companies without jobs.

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

Stop after this many companies (you pay per company; founder and job rows come with it free). Leave empty for every match of your URL or filters. With no URL, filter or "Scrape all companies" at all, a run returns a 100-company sample. 0 = no limit.

## `batches` (type: `array`):

Keep companies from ANY of these batches. Type them the way you know them: "S24", "W09", "P25" or "X25" (Spring), "F24" (Fall), "Summer 2024", or a year like "2024" for every batch that year. Each value is checked against the live directory and an unknown one stops the run before anything is charged.

## `industries` (type: `array`):

Keep companies in ANY of these YC industries or sub-industries, e.g. "Fintech", "B2B", "Healthcare", "Sales" or "B2B -> Sales" ("Developer Tools" and "AI" are tags - use the Tags field). Matched to the directory's own values (case-insensitive); an unknown value stops the run and lists close matches.

## `regions` (type: `array`):

Keep companies in ANY of these YC regions, e.g. "United States of America" (or "USA"), "Europe", "United Kingdom" (or "UK"), "India", "Latin America", "Remote".

## `tags` (type: `array`):

Keep companies with ANY of these YC tags, e.g. "SaaS", "Artificial Intelligence", "AI", "Developer Tools", "Marketplace". The directory has about 330 tags.

## `statuses` (type: `array`):

Keep companies with ANY of these statuses. Empty = all four.

## `onlyHiring` (type: `boolean`):

Only companies YC marks as hiring (1,485 of 6,265 on 2026-09-30).

## `onlyTopCompanies` (type: `boolean`):

Only companies on YC's Top Companies list (91 on 2026-09-30).

## `onlyNonprofits` (type: `boolean`):

Only companies YC marks as nonprofit (42 on 2026-09-30).

## `minTeamSize` (type: `integer`):

Only companies with at least this many people. 0 = no minimum.

## `maxTeamSize` (type: `integer`):

Only companies with at most this many people (e.g. 10 for early-stage teams). 0 = no maximum.

## `launchedAfter` (type: `string`):

Only companies whose YC directory launch date is on or after this date: "2026-06-01", or relative like "30 days", "6 months", "1 year". Useful on a schedule to catch each new batch.

## `searchQuery` (type: `string`):

Optional free text, the same as the search box on ycombinator.com/companies (company names, one-liners, descriptions).

## `companyUrls` (type: `array`):

Look up exact companies instead of searching: ycombinator.com/companies/airbnb URLs (or workatastartup.com/companies/airbnb) or bare slugs like "airbnb". The URL and filters are then ignored. A slug YC does not have is reported in RUN\_SUMMARY and not charged.

## `requireFounderLinkedin` (type: `boolean`):

Skip companies where no founder has a LinkedIn profile URL. Skipped companies (and their founder and job rows) are never delivered and never charged.

## `sortBy` (type: `string`):

"relevance" = the directory's own order; "launchDate" = newest launched first. When a match is over 1,000 companies it is read batch by batch, newest batch first.

## `directoryOnly` (type: `boolean`):

Skip each company's profile page: company rows carry the directory fields only (name, website, one-liner, description, batch, status, team size, location, industries, tags, regions, logo, launch date), and the whole directory comes back in about half a minute. Founder rows, job rows and "Only companies with a founder LinkedIn" need the profile, so this is ignored while any of them is on.

## `proxyConfiguration` (type: `object`):

Optional. Runs connect directly by default (YC answered Apify's network directly when measured). If YC ever blocks a run, it moves to this proxy, then to Apify RESIDENTIAL, automatically.

## Actor input object example

```json
{
  "url": "https://www.ycombinator.com/companies?batch=Summer%202026",
  "scrapeAllCompanies": false,
  "scrapeAllFounders": false,
  "scrapeAllJobs": false,
  "maxItems": 10,
  "onlyHiring": false,
  "onlyTopCompanies": false,
  "onlyNonprofits": false,
  "minTeamSize": 0,
  "maxTeamSize": 0,
  "requireFounderLinkedin": false,
  "sortBy": "relevance",
  "directoryOnly": false
}
```

# Actor output Schema

## `items` (type: `string`):

One row per result, marked by type: a company row per YC company (deduplicated on YC's company id, founders and jobs listed inside it), plus a founder row per founder (Scrape founders) and a job row per open job (Scrape open jobs), each carrying its company's name, website and batch.

## `runSummary` (type: `string`):

RUN\_SUMMARY: how many companies YC states for your URL or filters, the completeness check, companies / founders / jobs delivered, founder and job field counts, what was not found or unreachable (never charged) and the delivered == charged reconciliation.

# 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 = {
    "url": "https://www.ycombinator.com/companies?batch=Summer%202026",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/yc-company-founder-contact-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 = {
    "url": "https://www.ycombinator.com/companies?batch=Summer%202026",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/yc-company-founder-contact-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 '{
  "url": "https://www.ycombinator.com/companies?batch=Summer%202026",
  "maxItems": 10
}' |
apify call scrapersdelight/yc-company-founder-contact-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/yc-company-founder-contact-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/nf3G8ChbR4ZwUVbh2/builds/06RwnQgnHmiaXzbYg/openapi.json
