# Y Combinator Companies & Jobs Scraper: YC Startup Directory (`cprussin/ycombinator-companies`) Actor

Scrape the Y Combinator company directory (~6,000 YC startups) by batch, industry, region, status, tags or team size: one-liner, description, website, team size, launch date and hiring flag. Jobs mode: YC startup jobs with salary and equity. $3 per 1,000 companies or jobs.

- **URL**: https://apify.com/cprussin/ycombinator-companies.md
- **Developed by:** [Connor Prussin](https://apify.com/cprussin) (community)
- **Categories:** Lead generation, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Companies & Jobs Scraper: YC Startup Directory

**Y Combinator Companies Scraper** exports the [Y Combinator company directory](https://www.ycombinator.com/companies) and open jobs at YC startups as clean JSON, CSV or Excel. It reads the same public search index the ycombinator.com directory uses, so it's fast and complete, with no login and no browser:

- ✅ **All ~6,000 YC companies**, from Summer 2005 to the latest batch.
- ✅ **Filters**: batch (`Summer 2025` or `S25`), industry, region, status (Active, Acquired, Inactive, Public), tags, hiring, top companies, team size, free-text search.
- ✅ **Company data**: name, one-liner, long description, batch, status, stage, industries, regions, locations, tags, team size, website, YC page, launch date, hiring flag, top-company flag, logo.
- ✅ **Jobs mode**: open jobs at YC startups by role (and location, including remote), for specific companies, or for every hiring company that matches your filters.
- ✅ **Job data**: title, company, batch, location, remote, salary min/max with currency, equity range, minimum experience, job type, role, visa, apply link.
- ✅ **Monitoring**: `onlyNew` returns only companies or jobs not seen in earlier runs. Schedule it for new-batch or new-job alerts.
- ✅ Pay only for items written to your dataset.

### Start in one minute

Click **Start** with the prefilled input:

```json
{
  "mode": "companies",
  "batches": ["Summer 2025"],
  "jobRoles": ["software-engineer"],
  "maxItems": 20
}
```

You get: 20 Summer 2025 companies (the prefilled job role is for jobs mode) with `name`, `oneLiner`, `industries`, `teamSize`, `website`, `isHiring` and `ycUrl`.

**Cost:** $0.06: 20 companies × $0.003. No start fee.

### Use with an AI assistant

Connect the [Apify MCP server](https://mcp.apify.com) to Claude, ChatGPT, Cursor or any MCP client (`https://mcp.apify.com?tools=cprussin/ycombinator-companies` loads only this actor), then paste:

```text
Use the Apify actor cprussin/ycombinator-companies to list active YC fintech companies from the W25 and S25 batches that are hiring, with one-liner, team size and website.
```

### Recipes

#### Fintech companies from recent batches

Active fintech startups from Summer and Winter 2025.

```json
{
  "mode": "companies",
  "batches": ["S25", "W25"],
  "industries": ["Fintech"],
  "statuses": ["Active"],
  "maxItems": 50
}
```

#### Small hiring startups for outreach

Summer 2025 companies with open jobs and at most 20 people.

```json
{
  "mode": "companies",
  "batches": ["Summer 2025"],
  "hiringOnly": true,
  "maxTeamSize": 20,
  "maxItems": 50
}
```

#### Remote engineering jobs

Software engineer jobs at YC startups, remote.

```json
{
  "mode": "jobs",
  "jobRoles": ["software-engineer"],
  "jobLocation": "remote",
  "maxItems": 30
}
```

#### Jobs at specific companies

Open jobs at companies you name by slug.

```json
{
  "mode": "jobs",
  "companySlugs": ["stripe", "airbnb"],
  "maxItems": 30
}
```

#### Newly launched companies

Schedule it weekly: newest first, and after the first run you get (and pay for) only companies not returned before.

```json
{
  "mode": "companies",
  "sortBy": "launchDate",
  "maxItems": 50,
  "onlyNew": true
}
```

### Who uses Y Combinator company data?

- **Sales and lead generation**: every new YC batch is a list of funded startups buying tools. Filter by batch, industry and team size.
- **Investors and analysts**: track batches, sectors, outcomes (acquired, public, inactive) and hiring activity.
- **Recruiters and job seekers**: find YC startups that are hiring, with salary and equity for each job.
- **Founders and researchers**: map competitors and market trends across YC batches.
- **AI agents**: give an LLM the YC directory through the Apify API or MCP server.

### How does the Y Combinator scraper work?

1. **Companies mode**: the actor loads ycombinator.com/companies once to get the public, search-only key of YC's company index, then queries that index with your filters. Results come in YC's directory order (or newest launches first).
2. **Jobs mode**: the actor reads YC's job board pages, e.g. `ycombinator.com/jobs/role/software-engineer` or `/jobs/role/designer/remote`, and company jobs pages like `ycombinator.com/companies/stripe/jobs`, and reads the job data embedded in them.
3. You get one dataset item per company or job, up to `maxItems`.

It respects ycombinator.com's robots.txt: it never requests the disallowed `/companies?...` filter URLs.

### How do I choose which YC companies or jobs to scrape?

| Field                       | Description                                                  | Example                                    |
| --------------------------- | ------------------------------------------------------------ | ------------------------------------------ |
| `mode`                      | `companies` (directory) or `jobs`                            | `"companies"`                              |
| `query`                     | Free-text search over names and descriptions                 | `"payments"`                               |
| `batches`                   | YC batches, full names or short codes                        | `["Summer 2025", "W25"]`                   |
| `industries`                | Industries or sub-industries (any of)                        | `["Fintech", "Healthcare"]`                |
| `regions`                   | Regions or countries (any of)                                | `["Europe", "India"]`                      |
| `statuses`                  | `Active`, `Acquired`, `Inactive`, `Public`                   | `["Active"]`                               |
| `tags`                      | Company tags (any of)                                        | `["Developer Tools", "Open Source"]`       |
| `hiringOnly`                | Only companies with open jobs                                | `true`                                     |
| `topCompaniesOnly`          | Only YC Top Companies                                        | `true`                                     |
| `minTeamSize`/`maxTeamSize` | Team size range                                              | `10` / `200`                               |
| `sortBy`                    | `relevance` (YC's order) or `launchDate` (newest first)      | `"launchDate"`                             |
| `jobRoles`                  | Jobs mode: YC job board roles                                | `["software-engineer", "product-manager"]` |
| `jobLocation`               | Jobs mode: location for role pages                           | `"remote"`, `"san-francisco"`, `"london"`  |
| `companySlugs`              | Jobs mode: company slugs or YC URLs                          | `["stripe", "airbnb"]`                     |
| `jobsFromFilteredCompanies` | Jobs mode: jobs of every hiring company matching the filters | `true`                                     |
| `maxItems`                  | Max companies or jobs                                        | `500`                                      |
| `onlyNew`                   | Monitoring: only items not returned by an earlier run        | `true`                                     |

- Filter values are matched case-insensitively against YC's directory. A value that matches nothing stops the run with suggestions, so a typo never returns the wrong companies.
- Different filters combine with AND, values within one filter with OR.
- Job roles: `software-engineer`, `designer`, `product-manager`, `recruiting-hr`, `sales-manager`, `marketing`, `support`, `operations`, `science`, `finance`, `legal`.

### What data do you get for each YC company?

```json
{
  "companyId": "30832",
  "name": "F2",
  "slug": "f2",
  "formerNames": [],
  "oneLiner": "The AI platform for private markets investors",
  "longDescription": "F2 is the AI platform for private markets investors. Purpose-built for private credit, private equity, and commercial banking, ...",
  "batch": "Summer 2025",
  "batchCode": "S25",
  "status": "Active",
  "stage": "Early",
  "industry": "B2B",
  "subindustry": "Engineering, Product and Design",
  "industries": ["B2B", "Engineering, Product and Design"],
  "regions": [
    "United States of America",
    "America / Canada",
    "Remote",
    "Partly Remote"
  ],
  "locations": "New York City, NY, USA",
  "tags": ["AI"],
  "teamSize": 15,
  "website": "http://f2.ai",
  "ycUrl": "https://www.ycombinator.com/companies/f2",
  "jobsUrl": "https://www.ycombinator.com/companies/f2/jobs",
  "launchedAt": "2025-11-10T15:49:41.000Z",
  "isHiring": true,
  "topCompany": false,
  "nonprofit": false,
  "logoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/976c3cad3814111f1af6d087f0a0fe249be74b42.png",
  "scrapedAt": "2026-10-03T00:00:00.000Z"
}
```

### What data do you get for each YC job?

```json
{
  "jobId": "94746",
  "title": "Applied AI Engineer",
  "jobUrl": "https://www.ycombinator.com/companies/infer/jobs/1DhbYdF-applied-ai-engineer",
  "applyUrl": "https://account.ycombinator.com/authenticate?continue=...",
  "companyName": "Infer",
  "companySlug": "infer",
  "companyUrl": "https://www.ycombinator.com/companies/infer",
  "companyBatch": "S21",
  "companyOneLiner": "Operating system for insurance agencies",
  "companyLogoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/f093ce23ca35f332213eeee11dee08581cefba9d.png",
  "location": "Bengaluru, KA, IN / Bengaluru, Karnataka, IN",
  "locations": ["Bengaluru, KA, IN", "Bengaluru, Karnataka, IN"],
  "remote": false,
  "jobType": "Full-time",
  "role": "Engineering",
  "roleCategory": "eng",
  "roleSubtype": "Machine learning",
  "salaryRange": "₹2M - ₹5M INR",
  "salaryMin": 2000000,
  "salaryMax": 5000000,
  "salaryCurrency": "INR",
  "salaryPeriod": null,
  "equityRange": "0.01% - 0.20%",
  "equityMin": 0.01,
  "equityMax": 0.2,
  "experience": "3+ years",
  "minExperienceYears": 3,
  "visa": "US citizenship/visa not required",
  "skills": [],
  "postedAgo": "5 months",
  "lastActive": "8 days",
  "sourceUrl": "https://www.ycombinator.com/jobs/role/software-engineer",
  "scrapedAt": "2026-10-03T00:00:00.000Z"
}
```

- `salaryMin`/`salaryMax` are amounts in `salaryCurrency` as posted ("$200K" = 200000, "₹2M" = 2000000), usually yearly. `salaryPeriod` is set when YC states another period (e.g. `monthly`).
- `equityMin`/`equityMax` are percentages (`0.5` = 0.5%). `minExperienceYears` is `0` for "Any (new grads ok)".
- `postedAgo` is YC's relative age ("5 months"); YC doesn't publish exact posting dates.

### How much does it cost to scrape Y Combinator companies?

Pay-per-event, only for items written to your dataset:

| Event   | Price      |
| ------- | ---------- |
| Company | **$0.003** |
| Job     | **$0.003** |

That's **$3 per 1,000 companies or jobs**. The default input (20 Summer 2025 companies) costs $0.06. A whole batch of ~170 companies costs about $0.50, and the full directory of ~6,000 companies about $19. If you set a **maximum cost per run**, the actor stops cleanly when it reaches it.

### How do I monitor YC for new companies or jobs?

Turn on `onlyNew` and run the actor on an [Apify schedule](https://docs.apify.com/platform/schedules) (e.g. daily; save the input as a task and schedule the task).

- The first run is a baseline and returns items as usual. Later runs return, and charge for, only companies (by `companyId`) or jobs (by `jobId`) not returned before. Skipped items are never charged.
- New-batch alerts: `batches: ["Fall 2026"]` with `onlyNew` returns each company once as YC adds it to the directory. New jobs: a role or company list in Jobs mode.
- State lives in your account in the key-value store `ycombinator-companies-state`, one record per mode and set of filters. Changing them starts a new baseline. It remembers the latest 50,000 items.
- Add a Slack, email or webhook integration to the task to get alerts.

### Y Combinator scraper FAQ

**Is this an official YC API?** No. It uses the public, search-only key that ycombinator.com's own directory page uses, and YC's public job board pages.

**How many companies can I get?** All of them. YC's search index returns at most 1,000 results per query, so for bigger result sets the actor continues batch by batch automatically.

**Why does a jobs page fail with "no jobs page for location"?** YC shows all locations for location slugs it doesn't know. The actor detects this instead of returning unrelated jobs. Try `remote`, `san-francisco`, `new-york`, `los-angeles`, `seattle`, `boston`, `austin`, `london` or `india`.

**Do I need a proxy?** No. You can add Apify Proxy for ycombinator.com pages, but it's rarely needed.

**Can I use it through the API or with AI agents?** Yes. Call it through the Apify API, the Apify MCP server or any Apify integration.

**Disclaimer:** This actor is not affiliated with, endorsed by or sponsored by Y Combinator. Y Combinator is a trademark of its owner. You are responsible for complying with ycombinator.com's terms and applicable laws when using the data.

### Related actors

- [product-hunt-launches](https://apify.com/cprussin/product-hunt-launches?fpr=to54nm): Product Hunt launches, leaderboards, upvotes and makers.
- [wellfound-jobs](https://apify.com/cprussin/wellfound-jobs?fpr=to54nm): Startup jobs from Wellfound (AngelList Talent) with salary, equity and company data.
- [new-business-registrations](https://apify.com/cprussin/new-business-registrations?fpr=to54nm): New LLC and corporation filings from state open-data portals.

# Actor input Schema

## `mode` (type: `string`):

Companies: the YC company directory (all ~6,000 YC startups), filtered by batch, industry, region, status, tags and more. Jobs: open jobs at YC startups by role (and location), from specific companies, or from all hiring companies that match the company filters.

## `query` (type: `string`):

Optional free-text search over company names, one-liners and descriptions, e.g. <code>payments</code> or <code>AI agents</code>. Leave empty to list every company that matches the filters.

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

YC batches, e.g. <code>Summer 2025</code>, <code>Winter 2024</code>, <code>Spring 2026</code>, <code>Fall 2025</code>. Short codes work too: <code>S25</code>, <code>W24</code>, <code>X26</code> (Spring), <code>F25</code> (Fall). Leave empty for all batches.

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

Industries or sub-industries as on ycombinator.com/companies, e.g. <code>B2B</code>, <code>Fintech</code>, <code>Healthcare</code>, <code>Engineering, Product and Design</code>, <code>Security</code>. A company matches if it has any of them.

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

Company regions or countries, e.g. <code>United States of America</code>, <code>Europe</code>, <code>India</code>, <code>Latin America</code>, <code>Remote</code>, <code>Fully Remote</code>. A company matches if it has any of them.

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

Only companies with any of these statuses. Leave empty for all.

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

Company tags, e.g. <code>Artificial Intelligence</code>, <code>Developer Tools</code>, <code>SaaS</code>, <code>Open Source</code>, <code>Robotics</code>. A company matches if it has any of them.

## `hiringOnly` (type: `boolean`):

Only companies with open jobs on YC's job board.

## `topCompaniesOnly` (type: `boolean`):

Only companies on YC's Top Companies list.

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

Only companies with at least this many employees.

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

Only companies with at most this many employees.

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

Relevance: YC's default directory order. Launch date: newest launched companies first (ignored when Search is set).

## `jobRoles` (type: `array`):

Jobs mode: YC job board roles. Each role reads ycombinator.com/jobs/role/\<role> (in the job location below, if set). Leave empty to use only company jobs pages, or all roles in the job location.

## `jobLocation` (type: `string`):

Jobs mode: optional location for the role pages, e.g. <code>remote</code>, <code>san-francisco</code>, <code>new-york</code>, <code>los-angeles</code>, <code>seattle</code>, <code>boston</code>, <code>austin</code>, <code>london</code>, <code>india</code>. Leave empty for all locations.

## `companySlugs` (type: `array`):

Jobs mode: YC company slugs or URLs, e.g. <code>stripe</code> or <code>https://www.ycombinator.com/companies/airbnb</code>. Reads each company's jobs page.

## `jobsFromFilteredCompanies` (type: `boolean`):

Jobs mode: also read the jobs page of every hiring company that matches the company filters above (batch, industry, region, tags, ...), e.g. all open jobs at Summer 2025 startups. One page request per company.

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

Stop after this many companies (Companies mode) or jobs (Jobs mode). Each item is billed as one event.

## `onlyNew` (type: `boolean`):

Return only companies or jobs not returned by an earlier run with the same mode and filters. Schedule the actor (e.g. daily) for new-company or new-job alerts: the first run is a baseline, later runs output (and bill) only new items. State is kept in the key-value store "ycombinator-companies-state" in your account.

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

Optional Apify Proxy for ycombinator.com pages (usually not needed). The company search itself uses YC's public search API directly.

## Actor input object example

```json
{
  "mode": "companies",
  "batches": [
    "Summer 2025"
  ],
  "hiringOnly": false,
  "topCompaniesOnly": false,
  "sortBy": "relevance",
  "jobRoles": [
    "software-engineer"
  ],
  "jobsFromFilteredCompanies": false,
  "maxItems": 20,
  "onlyNew": 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 = {
    "mode": "companies",
    "batches": [
        "Summer 2025"
    ],
    "jobRoles": [
        "software-engineer"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("cprussin/ycombinator-companies").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 = {
    "mode": "companies",
    "batches": ["Summer 2025"],
    "jobRoles": ["software-engineer"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("cprussin/ycombinator-companies").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 '{
  "mode": "companies",
  "batches": [
    "Summer 2025"
  ],
  "jobRoles": [
    "software-engineer"
  ],
  "maxItems": 20
}' |
apify call cprussin/ycombinator-companies --silent --output-dataset

```

## MCP server setup

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

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/NFnj0fIf5HpcFdCyq/builds/DJnJiMMmfC0SNfl1o/openapi.json
