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

\[💰 $2.0 / 1K] Extract YC-funded companies, founders, and open jobs from the Y Combinator startup directory. Filter by batch, industry, region, status, team size, or hiring activity — or paste any directory URL with filters pre-applied.

- **URL**: https://apify.com/solidcode/ycombinator-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Jobs, Lead generation, Developer tools
- **Stats:** 17 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.

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 Scraper

Pull every YC-funded company, founder, and open job from ycombinator.com/companies at scale — complete with batch codes, industry verticals, hiring flags, founder LinkedIn and X profiles, salary and equity ranges, and seven social handles per company. Built for VC sourcing teams, recruiters, and B2B sales teams who need a fresh, structured YC alumni dataset without hand-crafting filter URLs or stitching together founder bios one tab at a time.

### Why This Scraper?

- **Full directory coverage — 44 batches from W05 through F25** — every cohort in YC's public alumni list, from the 2005 founding class to the latest Fall batch, all in one run.
- **Eight industry verticals, six team-size bands, eleven regions** — multi-select filters for B2B, Consumer, Fintech, Healthcare, Industrials, Education, Government, Real Estate & Construction, plus team-size bands from solo founder up to 500+ and regions including the auto-expanding "Asia" group (covers South Asia, Southeast Asia, and East Asia in one click).
- **Founders embedded on every row** — full name, title, bio, LinkedIn URL, and X (Twitter) URL for every co-founder, typically 1 to 4 per company, no extra credits charged.
- **Open jobs with salary and equity ranges** — when a company is hiring, every posting comes with title, location, role, salary range, equity range, required skills, years of experience, and visa-sponsorship status.
- **Seven social handles per company** — website, LinkedIn, X, Facebook, Crunchbase, GitHub, plus the canonical YC profile URL.
- **`isHiring` quick-filter** — flip a single toggle to return only companies actively recruiting today, no URL building required.
- **Three input modes in one actor** — paste filter URLs (`?batch=W24&industry=B2B`), paste single-company URLs (`/companies/airbnb`), or use the guided multi-select filters. Mix all three in the same run.
- **Free-text search across the directory** — search by company name, tagline, or technology keyword (`"AI agents"`, `"developer tools"`) and get exactly what the YC search box returns.
- **camelCase output, ready for production** — clean, predictable field names that drop straight into databases, dashboards, and CRMs without renaming.

### Use Cases

**VC Sourcing & Pipeline Building**

- Track every new batch the moment it goes live and triage by vertical
- Build a watchlist of Active companies in your thesis area
- Surface acquired and public alumni to study exit patterns and founder follow-ons

**Recruiting & Talent Sourcing**

- Pull every YC company actively hiring with `isHiring: true` plus `includeJobs: true`
- Filter by team-size band (51 to 200) to target Series A-stage startups
- Capture founder LinkedIn URLs to map alumni networks for warm intros

**B2B Sales & ABM**

- Build a YC-backed account list for go-to-market motions targeting startup buyers
- Segment by industry vertical (B2B, Fintech) and team size to qualify ICPs
- Refresh on a schedule to catch new launches before competitors do

**Competitive & Market Research**

- Map every company in a vertical (e.g. all 2024 fintech batch graduates)
- Track industry composition trends across batches over time
- Build adjacency maps from the `tags` and `industries[]` fields

**Press & Media Monitoring**

- Watch for newly launched companies tagged Top Company
- Build founder profile lookups across batches for feature pieces
- Monitor acquisition status changes for scoop coverage

### Getting Started

#### Quick Start

The simplest possible run — fetches the first 100 companies from the full YC directory with founders embedded:

```json
{}
```

#### Filter by Batch, Industry, and Hiring Activity

Pull every B2B startup from the two most recent winter and summer batches that's actively hiring:

```json
{
    "batches": ["W24", "S24"],
    "industries": ["B2B"],
    "isHiring": true,
    "maxResults": 200
}
```

#### Free-Text Search by Region

Search for AI-agent companies headquartered in the United States:

```json
{
    "searchQuery": "AI agents",
    "regions": ["United States of America"],
    "maxResults": 50
}
```

#### Search by URL with Full Job Postings

Paste any YC directory URL with filters pre-applied — the actor parses the querystring and runs the same search. Add `includeJobs: true` to capture the full open-jobs list:

```json
{
    "startUrls": [
        "https://www.ycombinator.com/companies?batch=W24&industry=Fintech&isHiring=true"
    ],
    "includeJobs": true,
    "maxResults": 100
}
```

#### Single-Company Deep-Dive

Paste one or more individual company URLs to pull just those rows with full founder and job detail:

```json
{
    "startUrls": [
        "https://www.ycombinator.com/companies/airbnb",
        "https://www.ycombinator.com/companies/stripe"
    ],
    "includeFounders": true,
    "includeJobs": true
}
```

### Input Reference

#### Sources

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | YC directory URLs (`https://www.ycombinator.com/companies?...`) or individual company URLs (`https://www.ycombinator.com/companies/<slug>`). Mix any combination. Leave empty to use the guided filters below. |
| `searchQuery` | string | null | Free-text query against the YC directory. Matches company name, tagline, and tags. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `batches` | string\[] | `[]` | Funding cohorts. Multi-select from 44 batches (Winter 2005 through Fall 2025, plus Imagine K12). Leave empty for all batches. |
| `status` | string\[] | `[]` | Operating status: Active, Public, Acquired, or Inactive. Leave empty for all statuses. |
| `regions` | string\[] | `[]` | Headquarters region. 11 options including United States, Canada, Europe, United Kingdom, Asia, India, Latin America, Africa, Middle East, Oceania, and Remote. |
| `industries` | string\[] | `[]` | Industry vertical: B2B, Consumer, Education, Fintech, Government, Healthcare, Industrials, or Real Estate and Construction. |
| `teamSize` | string\[] | `[]` | Team-size band: 1 (solo founder), 2 to 10, 11 to 50, 51 to 200, 201 to 500, or 500+. |
| `isHiring` | boolean | `false` | If on, return only companies with at least one open role advertised on their YC profile right now. Companies whose hiring label is still on but whose roles are all filled are left out, and the search keeps going until your result count is filled. |

#### What to Extract

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeFounders` | boolean | `true` | Embed each company's founders on the result row — name, title, bio, LinkedIn, and X profile. |
| `includeJobs` | boolean | `false` | Embed each company's open job listings on the result row — title, location, salary, equity, required skills, years of experience, and visa sponsorship. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Hard cap on total company rows. Set to 0 for no cap (an internal upper limit of 10,000 still applies). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots. |

### Output

One row per company. `founders[]` and `jobs[]` ride along as embedded arrays controlled by the toggles above.

```json
{
    "companyId": "1234",
    "name": "Airbnb",
    "slug": "airbnb",
    "url": "https://www.ycombinator.com/companies/airbnb",
    "logo": "https://bookface-images.s3.amazonaws.com/...",
    "shortDescription": "Book accommodations around the world.",
    "longDescription": "Founded in August of 2008 and based in San Francisco...",
    "batch": "Winter 2009",
    "status": "Public",
    "industry": "Consumer",
    "subindustry": "Travel, Leisure and Tourism",
    "industries": ["Consumer", "Travel, Leisure and Tourism"],
    "tags": ["Marketplace", "Travel"],
    "location": "San Francisco, CA, USA",
    "regions": ["United States of America"],
    "country": "USA",
    "yearFounded": 2008,
    "teamSize": 6132,
    "primaryPartner": "Paul Graham",
    "website": "http://airbnb.com/",
    "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,
    "isHiring": false,
    "openJobsCount": 0,
    "nonprofit": false,
    "topCompany": true,
    "launchedAt": 1234567890,
    "founders": [
        {
            "id": 5678,
            "name": "Brian Chesky",
            "title": "Co-Founder & CEO",
            "bio": "Brian Chesky is the co-founder and CEO of Airbnb...",
            "linkedin": "https://www.linkedin.com/in/brianchesky",
            "twitter": "https://twitter.com/bchesky"
        }
    ],
    "jobs": [],
    "scrapedAt": "2026-05-02T14:30:00Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `companyId` | string | YC's internal company identifier |
| `name` | string | Company name |
| `slug` | string | URL slug used in `/companies/<slug>` |
| `url` | string | Canonical YC profile URL |
| `batch` | string | Batch name (e.g. `Winter 2024`, `Fall 2025`) |
| `status` | string | Active, Public, Acquired, or Inactive |
| `industry` | string | Top-level industry vertical |
| `subindustry` | string | More specific industry category |
| `industries` | string\[] | All industry tags applied by YC |
| `tags` | string\[] | Topic tags (e.g. `Developer Tools`, `AI`, `Marketplace`) |
| `teamSize` | number | Self-reported employee count |
| `nonprofit` | boolean | Whether the company is a nonprofit |
| `topCompany` | boolean | YC's "Top Company" badge flag |

#### Description & Branding

| Field | Type | Description |
|-------|------|-------------|
| `shortDescription` | string | One-line tagline as shown in the directory |
| `longDescription` | string | Full company blurb from the YC profile page |
| `logo` | string | Company logo URL. Blank for the small share of companies that have no logo on file with Y Combinator |
| `primaryPartner` | string | YC partner attached to the company |
| `yearFounded` | number | Founding year |
| `launchedAt` | number | Unix epoch when the YC profile went live |

#### Location

| Field | Type | Description |
|-------|------|-------------|
| `location` | string | Headquarters city and region |
| `regions` | string\[] | YC region tags (e.g. `United States of America`, `Remote`) |
| `country` | string | Headquarters country parsed from the location string |

#### Hiring

| Field | Type | Description |
|-------|------|-------------|
| `isHiring` | boolean | `true` when the company listed at least one open role on its YC profile at scrape time, so it always matches `openJobsCount` |
| `openJobsCount` | number | Number of open jobs at scrape time |
| `jobs` | object\[] | Open job postings (when `includeJobs: true`) |

Each `jobs[]` entry contains:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | YC job posting identifier |
| `title` | string | Job title |
| `location` | string | Posted location |
| `remote` | boolean | Whether the role is remote-friendly |
| `type` | string | Full-time, part-time, intern, contract, or co-founder |
| `role` | string | Engineering, Design, Product, etc. |
| `salaryRange` | string | The pay range exactly as Y Combinator publishes it |
| `salaryMin` / `salaryMax` | string | The low and high ends of the range |
| `salaryCurrency` | string | Currency code for the range: USD, CAD, GBP, EUR, or INR |
| `salaryPeriod` | string | `monthly` or `hourly` when the posting states one, otherwise empty |
| `equityMin` / `equityMax` | string | Equity range as published |
| `skills` | string\[] | Required skills tags |
| `yearsExperienceMin` | number | Minimum years of experience |
| `visaSponsorship` | boolean | Whether the role is open to candidates without US work authorization (true when the company sponsors a visa, or when none is required) |
| `visaPolicy` | string | The visa policy exactly as Y Combinator publishes it |
| `applyUrl` | string | Direct application link |
| `description` | string | Full job description body |
| `postedAt` | string | Posting date as `YYYY-MM-DD`, ready to sort and filter by recency. Empty for long-standing roles that Y Combinator dates only to the nearest year |
| `postedAtPrecision` | string | How exactly the posting date is known: `day`, `month`, or `year` |
| `createdAt` | string | How long ago the role went up, in Y Combinator's own wording (e.g. `22 days`, `over 2 years`) |

#### Founders

When `includeFounders: true`, each row carries a `founders[]` array (1 to 4 entries typical).

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | YC founder identifier |
| `name` | string | Full name |
| `title` | string | Title at the company (e.g. `Co-Founder & CEO`) |
| `bio` | string | Founder biography from the YC profile |
| `linkedin` | string | Founder LinkedIn URL |
| `twitter` | string | Founder X (Twitter) URL |

#### Social & Web Links

| Field | Type | Description |
|-------|------|-------------|
| `website` | string | Company website |
| `linkedin` | string | Company LinkedIn URL |
| `twitter` | string | Company X (Twitter) URL |
| `facebook` | string | Company Facebook URL |
| `crunchbase` | string | Company Crunchbase URL |
| `github` | string | Company GitHub URL |
| `scrapedAt` | string | ISO-8601 UTC timestamp of the run |

### Tips for Best Results

- **Combine `batches` and `industries` for tighter cohorts** — for example, "all W24 + S24 fintech startups" is one filter combination away.
- **Use `searchQuery` for fuzzy matching** — works across company names, taglines, and tags. Great for thematic sweeps like `"developer tools"` or `"AI agents"`.
- **Founder emails are not publicly listed by Y Combinator** — the actor returns LinkedIn and X URLs instead, which are typically more useful for warm outreach anyway.
- **Turn `includeJobs` on for hiring sweeps** — captures full job descriptions, salary ranges, equity ranges, and visa-sponsorship status in a single pass. Skip it when you only need company and founder data for a faster, leaner run.
- **Logo URLs are short-lived signed links** — expect them to expire about an hour after the run. Download or rehost the images promptly if you plan to display them yourself.
- **Mix URL inputs and guided filters in one run** — paste a YC filter URL alongside a few specific `/companies/<slug>` URLs and the guided filters; the actor handles all three input modes in the same dataset.
- **For full coverage of one batch, set `maxResults: 0`** — the actor automatically fans out across the directory's per-query ceiling and returns every company in the cohort.

### Pricing

**$2.00 per 1,000 companies returned.** No compute charges — you only pay per result returned.

| Companies | Estimated Cost |
|-----------|----------------|
| 100 | $0.20 |
| 1,000 | $2.00 |
| 10,000 | $20.00 |
| 100,000 | $200.00 |

A "result" is one company row, regardless of how many founders or open jobs ride along in the embedded arrays. Platform fees (compute, storage) are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Airtable** — Structured database sync
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access via REST, JavaScript, and Python SDKs

### Legal & Ethical Use

This actor is designed for legitimate sourcing, recruiting, market research, and competitive analysis use cases. The data extracted is published openly by Y Combinator on its public alumni directory at ycombinator.com/companies. Users are responsible for complying with applicable laws and Y Combinator's terms of service. Do not use extracted data for spam, harassment, or any illegal purpose. Be mindful of personal-data and outreach-consent regulations (GDPR, CCPA, CAN-SPAM) when contacting founders found in the dataset.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more Y Combinator URLs. Accepts directory pages with filters pre-applied (e.g. https://www.ycombinator.com/companies?batch=W24\&industry=B2B), individual company URLs (https://www.ycombinator.com/companies/airbnb), or a mix. Leave empty to use the guided filters below — or to scrape the full unfiltered directory if no filters are set.

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

Optional free-text search across the YC directory (matches the search box on ycombinator.com/companies). Combines with the filters below.

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

Funding cohorts to include. Multi-select. Leave empty to include all batches.

## `status` (type: `array`):

Operating status. Multi-select. Leave empty for all statuses.

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

Headquarters region. Multi-select. Leave empty for all regions.

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

Industry vertical. Multi-select. Leave empty for all industries.

## `teamSize` (type: `array`):

Self-reported employee count. Multi-select. Leave empty for any size.

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

If on, return only companies with at least one open role advertised on their YC profile right now. Y Combinator's own hiring label can stay switched on long after the last role was filled, so those companies are left out and you are not charged for them — the search keeps going until your result count is filled with companies that are genuinely recruiting. Useful for recruiting and lead generation.

## `includeFounders` (type: `boolean`):

Embed each company's founders on the result row — name, title, bio, LinkedIn, and X. Turn it off if you only need company-level data. (Note: Y Combinator does not publish founder emails publicly — `email` and `emailStatus` are always null.)

## `includeJobs` (type: `boolean`):

Embed each company's open job listings on the result row — title, location, remote, salary, equity, required skills, years of experience, and visa sponsorship. Turn it off for noticeably faster runs when you don't need job data. (Company details such as social links, founding year, and YC partner are always included, whichever way you set these two toggles.)

## `maxResults` (type: `integer`):

Hard cap on total company rows. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 10,000 still applies to prevent runaway pagination). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.

## Actor input object example

```json
{
  "startUrls": [],
  "batches": [],
  "status": [],
  "regions": [],
  "industries": [],
  "teamSize": [],
  "includeFounders": true,
  "includeJobs": false,
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of YC companies with the most useful columns at a glance.

## `details` (type: `string`):

Full per-company rows including founders, jobs, and all profile fields.

# 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 = {
    "startUrls": [],
    "batches": [],
    "status": [],
    "regions": [],
    "industries": [],
    "teamSize": [],
    "isHiring": false,
    "includeFounders": true,
    "includeJobs": false,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/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 = {
    "startUrls": [],
    "batches": [],
    "status": [],
    "regions": [],
    "industries": [],
    "teamSize": [],
    "isHiring": False,
    "includeFounders": True,
    "includeJobs": False,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/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 '{
  "startUrls": [],
  "batches": [],
  "status": [],
  "regions": [],
  "industries": [],
  "teamSize": [],
  "isHiring": false,
  "includeFounders": true,
  "includeJobs": false,
  "maxResults": 100
}' |
apify call solidcode/ycombinator-scraper --silent --output-dataset

```

## MCP server setup

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