# Y Combinator (YC) Startup Directory Scraper (`headlessagent/yc-startup-directory-scraper`) Actor

Scrape Y Combinator directory companies, batches, tags, founders, team size, locations, and hiring info with Algolia search API fast path.

- **URL**: https://apify.com/headlessagent/yc-startup-directory-scraper.md
- **Developed by:** [Headless Agent](https://apify.com/headlessagent) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

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?

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 Startup Directory Scraper

Extract rich data on Y Combinator-backed companies directly from the public YC company directory. This tool helps investors, recruiters, researchers, and sales teams quickly collect verified startup intelligence in structured formats like Excel or CSV. You can search across thousands of startups by batch, industry, location, keywords, or open hiring status without manual copy-pasting.

***

### What you get

The scraper collects key details about each startup:

- **Company basics**: company name, web slug, short summary, and full description
- **Program details**: YC batch (e.g. Winter 2024) and current business status (Active, Acquired, Public, or Inactive)
- **Classification**: industry categories and specific topic tags
- **Headquarters & links**: city or country location, official website address, YC profile link, and company logo image
- **Team size**: reported employee count
- **Founders**: public founder names, job titles, and LinkedIn profile links (when available)
- **Job opportunities**: link to open positions or company hiring page (when available)

***

### How to use

Follow these steps in the Apify Console:

1. **Open the actor**: Go to the Y Combinator Startup Directory Scraper page on Apify.
2. **Fill in the input form**: Customize your search criteria:
   - **Batches / Seasons (`batches`)**: Enter one or more batch names or codes, such as `["W24", "Summer 2023"]`. If left empty, all batches are included.
   - **Industries (`industries`)**: Enter industries to narrow your search, like `["B2B", "Healthcare", "Fintech"]`. If left empty, all industries are included.
   - **Regions (`regions`)**: Enter locations such as `["America / Canada", "Europe", "Remote"]`. If left empty, startups from all locations are included.
   - **Is Hiring (`isHiring`)**: Check this box (set to true) to only collect companies that are currently hiring. If unchecked or left empty, all companies are returned regardless of hiring status.
   - **Search Query (`searchQuery`)**: Type any keyword or phrase to search names, summaries, and descriptions. If left empty, no keyword filter is applied.
   - **Max Items (`maxItems`)**: Set the maximum number of startups you want to collect (default is 20). If set to 0 or left empty, the scraper collects all matching companies.
   - **Include Founders & Jobs (`includeFounders`)**: Check this box (default is true) to visit each company page and collect founder profiles and job links. If unchecked (false), the run finishes faster by only saving top-level directory data.
3. **Press Start**: Hit the green **Start** button to run.
4. **Wait for completion**: Watch the live log until the status changes to **Succeeded**.
5. **Download your data**: Go to the **Output** or **Dataset** tab. Choose your preferred format (JSON, CSV, or Excel) and hit download.

You can also fetch your results automatically using Apify integrations or cloud services without writing any code.

***

### Example input

```json
{
  "batches": [
    "W24"
  ],
  "maxItems": 2
}
```

***

### Example output

The example is shortened and personal details are replaced with placeholder data.

```json
{
  "name": "Indemni",
  "slug": "indemni",
  "oneLiner": "Cargo Theft and Fraud Prevention Platform",
  "longDescription": "We are building a safer supply chain. Cargo Theft has been increasing yearly, and the supply chain industry is urgently looking for ways to solve this. Using experience fighting fraud at the largest deli...",
  "batch": "Winter 2024",
  "status": "Active",
  "industries": [
    "B2B",
    "Supply Chain and Logistics"
  ],
  "tags": [
    "Identity",
    "Logistics",
    "Supply Chain"
  ],
  "teamSize": 7,
  "location": "San Francisco, CA, USA",
  "website": "http://www.indemni.com",
  "ycUrl": "https://www.ycombinator.com/companies/indemni",
  "logoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/5e66c11bb21c9a5ccdcf4a475ed7e48693b41f2b.png",
  "founders": [
    {
      "name": "Jane Doe",
      "title": "Founder",
      "linkedinUrl": "https://linkedin.com/in/jane-doe-example"
    }
  ],
  "jobsUrl": "https://bookface.ycombinator.com/workatastartup"
}
```

This output example comes from a real run of the actor.

***

### Tips and limits

- **Public data only**: This scraper only collects information displayed on public YC directory pages. It cannot access private founder portals, member forums, or confidential investor metrics.
- **Missing founder or job information**: Some startups choose not to share founder social links or hiring details. If a company does not list founders or open roles publicly, those fields will be empty or point to a general startup job page.
- **Run speed**: When "Include Founders & Jobs" is enabled, the actor visits each company profile page individually to fetch extra details. For large batch sizes, this will naturally take longer than gathering basic directory cards.
- **Website changes**: If the public layout of the YC website changes unexpectedly, page discovery may temporarily slow down or fail until updated.
- **Responsible use**: Please use reasonable limits and avoid making overly frequent runs to keep your scraping polite and respectful of the host service.

***

### Frequently Asked Questions (FAQ)

#### Can I scrape all YC companies from all years?

Yes. To scrape the full directory, leave the `batches` and `searchQuery` inputs empty, and set `maxItems` to 0. Keep in mind that full runs with hundreds or thousands of companies will take more time to complete.

#### Why are some founder LinkedIn profiles missing in the output?

The scraper only extracts links that founders or companies have chosen to share publicly on their YC directory page. If a founder profile does not include a public LinkedIn URL, that field is omitted.

#### What is the difference between fast mode and full founder mode?

Setting `includeFounders` to false will quickly grab summaries and category tags directly from the directory catalog. Keeping it set to true visits each company page to gather founder names, titles, LinkedIn URLs, and hiring links.

#### How can I export the data to an Excel spreadsheet?

After the scraper finishes, open the **Dataset** tab in your Apify Console run page. You will see buttons to export the data directly into Excel (`.xlsx`), CSV, or JSON format.

# Actor input Schema

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

Filter by YC batch codes or names (e.g. \['W24', 'S24', 'Summer 2023', 'Winter 2024']).

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

Filter by industry vertical (e.g. \['B2B', 'Consumer', 'Healthcare', 'Fintech', 'Industrials', 'Education']).

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

Filter by region (e.g. \['America / Canada', 'United States of America', 'Europe', 'Remote', 'South Asia']).

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

Only return companies currently hiring on YC Work at a Startup.

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

Text query to search company names, keywords, and descriptions.

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

Maximum number of companies to scrape (leave empty or 0 for unlimited).

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

Enrich companies with public founder profiles (name, title, LinkedIn) and jobs link by fetching public company pages.

## Actor input object example

```json
{
  "batches": [],
  "industries": [],
  "regions": [],
  "maxItems": 20,
  "includeFounders": true
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with one record per YC company: batch, tags, founders, team size, location, website and hiring status.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("headlessagent/yc-startup-directory-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("headlessagent/yc-startup-directory-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 '{}' |
apify call headlessagent/yc-startup-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,headlessagent/yc-startup-directory-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/uUKuWRj4jZidnOCTf/builds/AK2fqqYqdczQyLTCP/openapi.json
