# Y Combinator Scraper - YC Companies, Founders & Jobs (`artificially/ycombinator-scraper`) Actor

Scrape the Y Combinator company directory with batch, industry, region, tag, status, team size and hiring filters. Input: search query and filters. Output: one item per YC company with website, one-liner, batch, status, industries, location, team size, socials, founders and open jobs.

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

## Pricing

from $2.21 / 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.
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 & Jobs

Export the **Y Combinator startup directory** (ycombinator.com/companies) to a clean dataset: every YC company with website, one-liner, description, batch, status, industries, tags, regions, location, team size and hiring flag. Optionally add **founders** (name, title, bio, LinkedIn, X), **social links** (LinkedIn, X, Facebook, Crunchbase, GitHub) and **open jobs** (title, location, salary, equity, visa, skills) from each company's public YC page.

**Built by [Artificially](https://apify.com/artificially)** | Follow us on [X @artificially\_io](https://x.com/artificially_io)

#### Use with AI agents (MCP)

This actor works as a tool for Claude, ChatGPT, Cursor and other AI agents through [Apify's MCP server](https://mcp.apify.com). Ask something like "list W25 fintech startups that are hiring, with their founders" and the agent calls it for you. Set `compactOutput: true` and a small `maxResults` (e.g. 20) so results fit easily in the agent's context.

**Quick setup** (sign in with your Apify account when asked):

- **Claude** (claude.ai or Claude Desktop): Settings → Connectors → Add custom connector, and paste `https://mcp.apify.com?tools=artificially/ycombinator-scraper`
- **Claude Code or Cursor** via the Apify CLI (latest version, `apify upgrade`): `apify mcp install claude-code --tools artificially/ycombinator-scraper` (use `cursor` instead of `claude-code` for Cursor)
- **Any MCP client** (Cursor, VS Code, Windsurf):

```json
{
  "mcpServers": {
    "apify": { "url": "https://mcp.apify.com?tools=artificially/ycombinator-scraper" }
  }
}
```

**Try asking:**

- "List YC W25 companies in B2B that are hiring, with founders and LinkedIn links."
- "Find Y Combinator AI agent startups and their open engineering jobs."

### Why this actor

- **The whole directory in seconds** – all 6,000+ YC companies in under a minute, no browser and no proxy. The actor uses the same public search the YC website uses, so counts match what you see on ycombinator.com/companies.
- **Every filter the website has** – batch, industry, region, tag, status, team size, hiring, nonprofit, top company and free-text search, plus a city/location text filter.
- **Founders, socials and jobs in one pass** – turn on `includeFounders`, `includeJobs` or `includeSocials` and each company's public YC page is added to the item.
- **Friendly batch input** – `W24`, `S25`, `F24`, `P25`/`X25`, `Winter 2025` or just `2024` all work.
- **Monitoring mode** – turn on `onlyNewSinceLastRun`, schedule the actor, and get only the companies you have not seen yet (for example each new batch as it is announced).
- **You only pay for results** – only valid companies (with name, slug and YC URL) are saved and charged.

### Use cases

- **Sales and lead generation** – build lists of funded startups by batch, industry and size, with founders' LinkedIn profiles and company socials.
- **Investors and analysts** – track batches, statuses (Active, Acquired, Public, Inactive), industries and team growth over time.
- **Recruiters and job seekers** – find YC startups that are hiring and see their open roles with salary and equity ranges.
- **Market research** – map which problems YC funds (tags, industries, regions) and how that changes batch to batch.
- **Enrichment pipelines** – feed websites and LinkedIn URLs into LinkedIn, email or CRM enrichment tools.

### Input

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `searchQuery` | string | Free-text search, like the search box on the YC site | – |
| `batches` | array | `W24`, `S25`, `F24`, `P25`, `Winter 2025`, `2024` … | – |
| `industries` | array | YC industries or sub-industries, e.g. `B2B`, `Fintech`, `Healthcare`, `Security` | – |
| `regions` | array | YC regions, e.g. `United States of America`, `Europe`, `India`, `Remote` | – |
| `locations` | array | Text match on the location, e.g. `San Francisco`, `London` | – |
| `tags` | array | YC tags, e.g. `Developer Tools`, `Generative AI`, `Open Source` | – |
| `status` | array | `Active`, `Acquired`, `Public`, `Inactive` | – |
| `teamSizeMin` / `teamSizeMax` | integer | Team size range | – |
| `isHiring` | boolean | Only companies hiring on Work at a Startup | `false` |
| `nonprofit` | boolean | Only nonprofits | `false` |
| `topCompany` | boolean | Only YC Top Companies | `false` |
| `sortBy` | string | `relevance` or `launchDate` (newest first) | `relevance` |
| `includeFounders` | boolean | Add founders from the company page | `false` |
| `includeJobs` | boolean | Add open jobs from the company page | `false` |
| `includeSocials` | boolean | Add social links, year founded, city, country and YC partner | `false` |
| `maxResults` | integer | Stop after this many companies | – |
| `onlyNewSinceLastRun` | boolean | Return only companies not returned by earlier runs with the same search | `false` |
| `compactOutput` | boolean | Slim items for AI agents | `false` |
| `proxyConfiguration` | object | Optional; not needed | none |

Unknown filter values are reported in the log with close matches, and the run stops with a clear message if none of the values for a filter exist.

#### Example input

```json
{
    "batches": ["W25", "S25"],
    "industries": ["B2B"],
    "isHiring": true,
    "teamSizeMax": 50,
    "includeFounders": true,
    "includeJobs": true,
    "maxResults": 200
}
```

### Output

```json
{
    "ycId": 29517,
    "name": "RetailReady",
    "slug": "retailready",
    "ycUrl": "https://www.ycombinator.com/companies/retailready",
    "website": "https://www.retailreadyai.com/",
    "oneLiner": "An AI-powered supply chain compliance engine",
    "longDescription": "Every time workers in a warehouse box an order, they reference a 100 page manual...",
    "batch": "Winter 2024",
    "batchShort": "W24",
    "status": "Active",
    "stage": "Early",
    "industry": "B2B",
    "industries": ["B2B", "Supply Chain and Logistics"],
    "subindustry": "B2B -> Supply Chain and Logistics",
    "tags": ["B2B", "Compliance", "Logistics", "Supply Chain", "AI"],
    "regions": ["United States of America", "America / Canada"],
    "location": "San Francisco, CA, USA",
    "city": "San Francisco",
    "country": "US",
    "teamSize": 12,
    "launchedAt": "2024-01-16T16:52:04.000Z",
    "yearFounded": 2024,
    "isHiring": true,
    "topCompany": false,
    "nonprofit": false,
    "formerNames": [],
    "logoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/199d48c929434ddb64281cd83b9621eb37c3ed62.png",
    "primaryPartner": "Jared Friedman",
    "socials": {
        "linkedin": "https://www.linkedin.com/company/retailreadyai/",
        "twitter": null,
        "facebook": null,
        "crunchbase": null,
        "github": null
    },
    "founders": [
        {
            "name": "Elle Smyth",
            "title": "Founder",
            "bio": "Elle is the Co-Founder of RetailReady, which she started with Sarah Hamer...",
            "linkedin": "https://linkedin.com/in/ellesmyth",
            "twitter": null,
            "isActive": true
        }
    ],
    "jobs": [
        {
            "id": 77573,
            "title": "Full Stack Software Engineer",
            "location": "San Francisco, CA, US",
            "type": "Full-time",
            "role": "Engineering",
            "roleSpecificType": "Full stack",
            "salary": "$110K - $170K",
            "equity": "0.01% - 0.30%",
            "minExperience": "Any (new grads ok)",
            "visa": "US citizen/visa only",
            "skills": ["Flask", "React", "React Native", "TypeScript", "Next.js"],
            "url": "https://www.ycombinator.com/companies/retailready/jobs/wEGXWv4-full-stack-software-engineer"
        }
    ],
    "jobCount": 3,
    "scrapedAt": "2026-09-23T10:13:19.982Z"
}
```

`socials`, `city`, `country`, `yearFounded` and `primaryPartner` are filled when any company-page option is on; `founders` needs `includeFounders`, `jobs` and `jobCount` need `includeJobs`. Otherwise they are `null`.

The key-value store also contains:

- `SUMMARY` – directory match count, companies saved, company pages fetched, filters applied (as resolved to YC's exact values), warnings and limits reached.
- `FAILED_DETAILS` – companies whose YC page could not be loaded. These companies are still saved with the directory data.

### Pricing

This actor uses pay-per-event pricing: a tiny fee per run plus a fee per company saved to the dataset. Founders, socials and jobs are included at no extra charge. Set a maximum cost per run in Apify Console and the actor stops cleanly when it is reached. See the **Pricing** tab for current prices.

### FAQ

**How many companies are there?**
About 6,200 public companies across every batch since Summer 2005. The actor logs how many match your filters before it starts; this is the same number the YC website shows.

**How do I get each new batch automatically?**
Set `batches` to the upcoming batch (or leave it empty), turn on `onlyNewSinceLastRun` and create an [Apify Schedule](https://docs.apify.com/platform/schedules). Each run returns only companies added since the last run. Changing the search or filters starts a fresh history.

**Where do founders and jobs come from?**
From each company's public page on ycombinator.com (for example ycombinator.com/companies/airbnb). Jobs are the public listings shown there; the actor does not log in to Work at a Startup and does not collect founder emails.

**Why is the order different with very large searches?**
The YC search returns at most 1,000 results per query. Larger result sets are fetched batch by batch (newest batch first), so every company is included but the order is grouped by batch.

**Do I need a proxy?**
No. The directory and company pages are public and load quickly without one.

**Is this legal?**
The actor reads public information that Y Combinator publishes for every visitor, using the same public search the website uses. It does not log in or bypass any protection. You are responsible for using the data in line with applicable laws, including data protection rules for personal data such as founder profiles.

### Support

Missing a field or filter? Open an issue on the actor's **Issues** tab – we usually respond within a day.

### Related actors

- [LinkedIn Company Scraper](https://apify.com/artificially/linkedin-company-scraper): enrich YC companies with LinkedIn size, industry, headquarters and more.
- [LinkedIn Company Employees Scraper](https://apify.com/artificially/linkedin-employees-scraper): find the people working at a YC startup beyond the founders.
- [Career Site Jobs Scraper](https://apify.com/artificially/career-site-jobs-scraper): all open jobs from a startup's own Greenhouse, Lever, Ashby or Workday career site.

# Actor input Schema

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

Free-text search over company name, one-liner, description, tags and industries, exactly like the search box on ycombinator.com/companies. Example: "ai agents" or "payments". Leave empty to list all companies that match the filters.

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

Keep companies from ANY of these YC batches. Accepts short codes (W24, S25, F24, P25 or X25 for Spring), full names ("Winter 2025", "Summer 2021") or a year ("2024" = every batch of that year). Example: \["W24", "Summer 2025"]. Leave empty for all batches.

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

Keep companies in ANY of these YC industries or sub-industries (case-insensitive). Top level: B2B, Consumer, Education, Fintech, Government, Healthcare, Industrials, Real Estate and Construction. Sub-industries include Engineering, Product and Design; Infrastructure; Security; Sales; Marketing; Analytics; Payments; Insurance; Healthcare IT; Therapeutics; Manufacturing and Robotics; Climate; Defense and more. Example: \["B2B", "Fintech"].

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

Keep companies in ANY of these YC regions (case-insensitive exact names from the directory). Examples: "United States of America", "America / Canada", "Europe", "United Kingdom", "Germany", "India", "Latin America", "Southeast Asia", "Remote", "Fully Remote", "Partly Remote". Example: \["Europe", "Canada"].

## `locations` (type: `array`):

Keep companies whose location text or region contains ANY of these strings (case-insensitive substring). Use for cities, e.g. \["San Francisco", "New York", "London"]. Applied after the search, so it may need more scanning than the regions filter.

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

Keep companies with ANY of these YC tags (case-insensitive exact tag names). Examples: "Artificial Intelligence", "AI", "Generative AI", "SaaS", "Developer Tools", "Open Source", "Fintech", "Robotics", "Climate". Example: \["Developer Tools", "Open Source"].

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

Keep companies with ANY of these statuses. Allowed values: Active, Acquired, Public, Inactive. Example: \["Active"]. Leave empty for all.

## `teamSizeMin` (type: `integer`):

Keep companies with at least this many employees, as listed on YC. Example: 10.

## `teamSizeMax` (type: `integer`):

Keep companies with at most this many employees, as listed on YC. Example: 50.

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

Set to true to keep only companies YC marks as hiring (they have open roles on Work at a Startup). Combine with includeJobs to get the roles.

## `nonprofit` (type: `boolean`):

Set to true to keep only nonprofit YC companies.

## `topCompany` (type: `boolean`):

Set to true to keep only companies on YC's Top Companies list (e.g. Airbnb, Stripe, DoorDash).

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

relevance = the directory's default order (best search match first); launchDate = most recently launched first.

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

Set to true to add founders (name, title, bio, LinkedIn, X/Twitter) from each company's public YC page. Needs one extra page request per company, so runs are slower.

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

Set to true to add open roles (title, location, type, salary, equity, experience, visa, skills, URL) listed on each company's public YC page. Needs one extra page request per company; combine with isHiring to skip companies without jobs.

## `includeSocials` (type: `boolean`):

Set to true to add LinkedIn, X/Twitter, Facebook, Crunchbase and GitHub links plus year founded, city, country and YC partner from each company's YC page. Also filled automatically whenever includeFounders or includeJobs is on (same page request).

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

Stop after saving this many companies. Example: 100. Leave empty for all matches (the run also stops at your maximum cost per run).

## `onlyNewSinceLastRun` (type: `boolean`):

Set to true to remember companies already returned for this exact search (query + filters) and return only companies you have not seen before. Ideal with Apify Schedules to catch each new batch: you pay only for new companies.

## `compactOutput` (type: `boolean`):

Set to true to save a slim item per company with only: name, slug, ycUrl, website, oneLiner, batch, status, industries, location, teamSize, isHiring, linkedin, founders (name, title, linkedin) and jobs (title, location, salary, url). Recommended when an AI agent or LLM reads the results. Leave false for the full item.

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

Optional, leave as is. The YC directory and company pages are public and work without a proxy.

## Actor input object example

```json
{
  "batches": [
    "W24"
  ],
  "isHiring": false,
  "nonprofit": false,
  "topCompany": false,
  "sortBy": "relevance",
  "includeFounders": false,
  "includeJobs": false,
  "includeSocials": false,
  "maxResults": 50,
  "onlyNewSinceLastRun": false,
  "compactOutput": false
}
```

# Actor output Schema

## `companies` (type: `string`):

One item per YC company (overview table view)

## `summary` (type: `string`):

Directory match count, companies saved, company pages fetched, filters applied and limits reached

## `failedDetails` (type: `string`):

Companies whose YC page could not be loaded; they were saved with directory data only

# 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"
    ],
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("artificially/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"],
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("artificially/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"
  ],
  "maxResults": 50
}' |
apify call artificially/ycombinator-scraper --silent --output-dataset

```

## MCP server setup

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