# Y Combinator Companies Scraper (`tortuga/ycombinator-scraper`) Actor

Scrape the Y Combinator startup directory: every company with batch, industry, tags, team size, location, status, one-liner, website and founders. Filter by batch, industry, region or status.

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

## Pricing

from $2.00 / 1,000 companies

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Y Combinator Companies Scraper

Scrape the Y Combinator startup directory (ycombinator.com/companies): every YC company with batch, status, industry, sub-industry, tags, team size, location, regions, one-liner, description, website and logo. Filter by batch (W24, S25, ...), industry, region, tag, status, hiring flag or a free-text search. Turn on **Include company details** to add founders (name, title, bio, LinkedIn and X links), open jobs with salary and equity ranges, latest news, Launch YC posts, social links and year founded.

Export to JSON, CSV or Excel, or pull the dataset into Google Sheets, a CRM, or an LLM pipeline through the API. No login, no API key; you pay only per company returned.

### What data does Y Combinator Companies Scraper extract?

Every item is one company. Fields marked *details* are only present when **Include company details** is on.

| Field | Description |
|---|---|
| `id` | YC's numeric company id |
| `slug` / `url` | Company slug and its YC directory page, e.g. `https://www.ycombinator.com/companies/airbnb` |
| `name` / `formerNames` | Company name and previous names |
| `website` | Company website |
| `oneLiner` / `longDescription` | Short tagline and the full description from the YC profile |
| `batch` / `batchName` | Short and long batch, e.g. `W24` / `Winter 2024` |
| `status` | `Active`, `Acquired`, `Public` or `Inactive` |
| `stage` | YC growth stage (`Early`, `Growth`, ...) when set |
| `industry` / `subindustry` / `industries` | Primary industry, sub-industry, and the combined list YC uses for filtering |
| `tags` | Tags such as `SaaS`, `Artificial Intelligence`, `Developer Tools` |
| `teamSize` | Number of employees reported to YC |
| `location` / `regions` | Location string (e.g. `San Francisco, CA, USA`) and region facets (`United States of America`, `Europe`, `Remote`, ...) |
| `isHiring` / `isTopCompany` / `isNonprofit` | Flags from the directory |
| `hasDemoDayVideo` / `hasAppVideo` | Whether the profile has a public Demo Day or application video |
| `launchedAt` | When the company launched on YC (ISO 8601) |
| `smallLogoUrl` | Logo thumbnail |
| `founders` | *details* - list of `{name, title, bio, linkedinUrl, twitterUrl, isActive}` |
| `founderBios` / `activeFoundersCount` | *details* - founder bios and how many founders are still active |
| `jobsCount` / `jobs` | *details* - open roles with `title, url, location, type, role, salaryRange, equityRange, minExperience, visa, skills` |
| `latestNews` | *details* - recent press `{title, url, date}` |
| `launches` | *details* - Launch YC posts `{title, tagline, url, createdAt, voteCount}` |
| `socialLinks` | *details* - `{linkedin, twitter, facebook, crunchbase, github}` company profiles |
| `foundedYear` / `city` / `country` / `primaryPartner` / `logoUrl` | *details* - extra profile fields |
| `scrapedAt` | Timestamp of the run (ISO 8601) |

### How to scrape Y Combinator companies by batch

1. Put one or more batches into **Batches**: `W24`, `S25`, `X25` (Spring), `F24` (Fall) or `Winter 2024`. Leave it empty to scrape the whole directory (about 6,200 companies).
2. Optionally narrow by **Industries** (`B2B`, `Fintech`, `Healthcare`, `Developer Tools`, ...), **Regions** (`United States of America`, `Europe`, `India`, `Remote`, ...), **Tags**, **Status** or **Search query**.
3. Set **Max companies** to cap the run and the cost, and click **Start**. Results appear in the **Dataset** tab.

The scraper enumerates the directory through the same public search index the YC website uses, so it is fast (a whole batch takes seconds) and returns exactly what the directory shows.

### Input example

```json
{
  "batches": ["W24", "S24"],
  "industries": ["Fintech"],
  "status": "Active",
  "isHiring": true,
  "maxItems": 200,
  "includeCompanyDetails": true
}
```

### Output example

```json
{
  "type": "company",
  "id": 271,
  "slug": "airbnb",
  "name": "Airbnb",
  "url": "https://www.ycombinator.com/companies/airbnb",
  "website": "http://airbnb.com",
  "oneLiner": "Book accommodations around the world.",
  "longDescription": "Founded in August of 2008 and based in San Francisco, California, Airbnb is a trusted community marketplace ...",
  "batch": "W09",
  "batchName": "Winter 2009",
  "status": "Public",
  "stage": "Growth",
  "industry": "Consumer",
  "subindustry": "Travel, Leisure and Tourism",
  "industries": ["Consumer", "Travel, Leisure and Tourism"],
  "tags": ["Marketplace", "Travel"],
  "teamSize": 6132,
  "location": "San Francisco, CA, USA",
  "regions": ["United States of America", "America / Canada"],
  "isHiring": true,
  "isTopCompany": true,
  "isNonprofit": false,
  "launchedAt": "2009-01-01T00:00:00Z",
  "smallLogoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/3e9a....png",
  "founders": [
    { "name": "Brian Chesky", "title": "Founder/CEO", "bio": "Brian Chesky is the co-founder ...", "linkedinUrl": "https://www.linkedin.com/in/brianchesky/", "twitterUrl": "https://twitter.com/bchesky", "isActive": true }
  ],
  "activeFoundersCount": 3,
  "foundedYear": 2008,
  "jobsCount": 0,
  "latestNews": [{ "title": "Airbnb launches Airbnb Rooms ...", "url": "https://www.usatoday.com/...", "date": "May 03, 2023" }],
  "socialLinks": { "linkedin": "https://www.linkedin.com/company/airbnb/", "twitter": "https://twitter.com/Airbnb", "facebook": "https://www.facebook.com/airbnb/", "crunchbase": "https://www.crunchbase.com/organization/airbnb", "github": null },
  "scrapedAt": "2026-09-07T22:40:00Z"
}
```

### Can I get YC founders and their LinkedIn profiles?

Yes. Turn on **Include company details** and each company gets a `founders` list with name, title, bio and the LinkedIn / X links the founder chose to show on their YC profile. The scraper does not collect founder emails or any other contact details that are not on the public page.

### How do I scrape all YC companies?

Leave **Batches** empty and set **Max companies** to 7000 (the directory had about 6,200 companies in September 2026). The search index caps any single query at 1,000 results, so the scraper automatically splits the directory by batch (the largest batch has about 400 companies) and walks them newest first. A full run without details takes about a minute.

### How do I find YC startups that are hiring?

Set **Hiring only** to true, optionally with a batch or industry filter. With **Include company details** on, every company also gets its open `jobs` with title, location, salary range, equity range, experience level, visa requirement and skills, plus a `jobsCount`.

### Does it work without login or proxies?

Yes. Everything comes from the public directory and public company pages. Apify Proxy is on by default for reliability on large runs, but the scraper works without it.

### Pricing

Pay per company: a small price per company returned, plus a small extra charge per company page opened when **Include company details** is on. No subscription; the Apify free plan is enough to scrape several batches.

### Integrations and API

Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the **API** tab for ready-made snippets.

### Is it legal to scrape Y Combinator?

This Actor collects only publicly available business information from the YC directory and company profiles: company data, and founder names, titles and the public LinkedIn/X links shown on the YC page. It does not collect emails, phone numbers or any non-public data. You are responsible for how you use the data and for complying with YC's terms and applicable law (including GDPR/CCPA when processing founder names).

### Support

Found a bug or need a field added? Open an issue in the **Issues** tab; it is usually answered within a day.

# Actor input Schema

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

YC batches to include, e.g. W24, S25, X25 (Spring), F24 (Fall) or 'Winter 2024'. Leave empty for all batches (about 6,200 companies since 2005).

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

Industry or sub-industry names as shown in the directory sidebar, e.g. B2B, Fintech, Healthcare, Consumer, Industrials, Developer Tools, Infrastructure. Any of the values matches (OR).

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

Region facet values, e.g. 'United States of America', Europe, India, 'Latin America', 'United Kingdom', Remote, 'Fully Remote'. Any of the values matches (OR).

## `status` (type: `string`):

Company status as shown by YC.

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

Company tags, e.g. 'Artificial Intelligence', SaaS, 'Developer Tools', Marketplace, Climate. Any of the values matches (OR).

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

Free-text search over company name, one-liner, description and website (same as the directory search box).

## `isHiring` (type: `boolean`):

Only companies with open job postings on Work at a Startup.

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

Only companies on YC's Top Companies list.

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

Stop after this many companies. Keeps cost predictable. The full directory is about 6,200 companies.

## `includeCompanyDetails` (type: `boolean`):

Open each company page to add founders (name, title, bio, LinkedIn/X links), open jobs with salary and equity ranges, latest news, Launch YC posts, social links, year founded and the full description. Adds one page load and a small extra charge per company.

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

Apify Proxy is recommended for reliability on large runs.

## Actor input object example

```json
{
  "batches": [
    "W24"
  ],
  "status": "all",
  "isHiring": false,
  "topCompaniesOnly": false,
  "maxItems": 500,
  "includeCompanyDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "batches": [
        "W24"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tortuga/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 = {
    "batches": ["W24"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("tortuga/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 '{
  "batches": [
    "W24"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call tortuga/ycombinator-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tortuga/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/ZgcQMRCkpfoyIqwnT/builds/3Zh6D4Fu7zD89mVjf/openapi.json
