# Y Combinator Scraper: YC Startup Directory + Job Boards (`birchwood-data/yc-companies-scraper`) Actor

Y Combinator scraper for the full YC startup directory (6,300+ companies): website, batch, status, team size, industry, tags, location and hiring flag. Filter by batch, industry or region. Optional add-on finds each startup's job board (Greenhouse, Lever, Ashby, Workday).

- **URL**: https://apify.com/birchwood-data/yc-companies-scraper.md
- **Developed by:** [Birchwood Data](https://apify.com/birchwood-data) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 company scrapeds

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 Scraper: YC Startup Directory + Job Boards

Export the **entire Y Combinator startup directory** (6,300+ companies across every batch) or just the slice you need: by batch, industry, region, status, stage, team size, launch date or "is hiring". Each company comes with its website, one-liner, description, batch, status, team size, industries, tags, locations, logo and YC profile link.

**Unique add-on: Careers/ATS Finder.** Optionally visit each startup's website and detect its careers page and **ATS job board** (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Recruitee, Workable, BambooHR, Rippling, YC Work at a Startup). Then feed the board URLs into our [ATS Job Scraper](https://apify.com/birchwood-data/ats-job-scraper) or Workday Jobs Scraper to get every open job at YC startups.

### Why use this Y Combinator scraper?

- ⚡ **Fast and cheap**: the full directory (6,338 companies) exported in about 15 seconds in our test. There's no browser; it uses the same search endpoint as the ycombinator.com/companies page.
- 🎯 **All the directory's filters**, plus team size and launch-date filters the website doesn't have.
- 🧾 **Company data only.** No founder names, emails or other personal data are collected.
- 💸 **Pay only for companies you get.** The ATS add-on is charged only when a job board is actually found.

### What can you use YC company data for?

- Lead lists for selling to startups (dev tools, SaaS, recruiting, fintech)
- Recruiting: find hiring YC startups and their job boards
- VC/market research: batch-by-batch analysis of industries, outcomes (Active / Acquired / Public / Inactive) and team growth
- Feeds for AI agents, CRMs (HubSpot, Salesforce), Google Sheets, Airtable, Zapier, Make, n8n

### Input examples

All hiring B2B companies from the Summer 2025 batch, with their job boards:

```json
{"batches": ["Summer 2025"], "industries": ["B2B"], "onlyHiring": true, "detectCareersPage": true}
```

Every YC company with 50–500 employees in Europe:

```json
{"regions": ["Europe"], "minTeamSize": 50, "maxTeamSize": 500}
```

Batch, industry and region values are the same labels shown in the directory's filters (e.g. `Winter 2024`, `Fintech`, `United States of America`, `Remote`).

### Output

Here's a real item from a test run, with the description shortened:

```json
{
  "id": 1005,
  "name": "Truebill",
  "slug": "truebill",
  "oneLiner": "Live your best financial life",
  "description": "Rocket Money (formerly Truebill) is a leading personal finance app that analyzes members' spending habits, identifies inefficiencies, and offers immediate metho...",
  "website": "https://www.truebill.com",
  "batch": "Winter 2016",
  "status": "Acquired",
  "stage": "Growth",
  "teamSize": 225,
  "industry": "Fintech",
  "subindustry": "Fintech -> Consumer Finance",
  "industries": [
    "Fintech",
    "Consumer Finance"
  ],
  "tags": [
    "Fintech"
  ],
  "locations": "Silver Spring, MD, USA",
  "regions": [
    "United States of America",
    "America / Canada",
    "Remote",
    "Partly Remote"
  ],
  "isHiring": false,
  "topCompany": true,
  "nonprofit": false,
  "formerNames": [],
  "launchedAt": "2015-11-12",
  "logoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/fae52e07d79df342dcfc28d120038d2083ae0679.png",
  "ycUrl": "https://www.ycombinator.com/companies/truebill",
  "ycJobsUrl": "https://www.ycombinator.com/companies/truebill/jobs",
  "scrapedAt": "2026-10-26T13:49:19+00:00",
  "careersUrl": "https://www.rocketmoney.com/careers",
  "atsProvider": "greenhouse",
  "atsBoardToken": "truebill",
  "atsBoardUrl": "https://job-boards.greenhouse.io/truebill"
}
```

The `careersUrl`, `atsProvider`, `atsBoardToken` and `atsBoardUrl` fields only appear when the add-on is on. `atsBoardToken` is the board slug that ATS Job Scraper accepts directly (for Workday it's `tenant/site`). You can download the results as JSON, CSV, Excel or HTML, or read them through the API. A `RUN_SUMMARY` record shows matched, saved and detected counts.

### Pricing

Pay per event:

- **company**: each company saved to the dataset.
- **careers-lookup** (add-on): charged only when an external ATS job board is detected. Lookups with no board, and YC Work at a Startup links, are free.

See the Pricing tab for current prices. Set *Max cost per run* and the Actor stops cleanly at your budget.

### Notes

- ATS detection reads the homepage HTML and one careers page. Sites that build their careers page fully in JavaScript, or host jobs on their own domain (e.g. Stripe), return no board. In our tests it found a board or YC job link for 10 of 25 hiring Summer 2024 startups and 2 of 14 top fintech companies.
- The data comes from YC's public directory, so it's as fresh as YC's listing. Team size and status are what YC shows.

### Is it legal?

It reads the public YC company directory, the same data anyone sees at ycombinator.com/companies. It collects business information only, with no personal data. Use the results in line with applicable laws and YC's terms.

### Other Actors by Birchwood Data

Our Actors are built to chain together: **find companies → find their job boards → scrape every job → screenshot or structure the results.**

| Actor | What it does |
| --- | --- |
| [ATS Job Scraper](https://apify.com/birchwood-data/ats-job-scraper) | Jobs from Greenhouse, Lever, Ashby, SmartRecruiters and Recruitee career pages, with salary, remote flag and new/removed-job tracking. |
| [Workday Jobs Scraper](https://apify.com/birchwood-data/workday-jobs-scraper) | Jobs from any Workday (myworkdayjobs.com) career site: NVIDIA, Salesforce, Adobe and thousands more. Same core fields as ATS Job Scraper. |
| [Website Screenshot API](https://apify.com/birchwood-data/website-screenshot-api) | Bulk full-page or mobile screenshots of any URL, e.g. company websites from the YC list or career pages you monitor. |
| [Text to JSON](https://apify.com/birchwood-data/text-to-data) | Turn job descriptions, emails or PDFs into JSON matching your own schema. For example, pull skills or tech stack out of `descriptionText`. |

**Example pipeline:** Y Combinator Scraper (`onlyHiring`, `detectCareersPage`) → feed the `atsBoardUrl` values into ATS Job Scraper or Workday Jobs Scraper → schedule daily with `onlyNewJobs` → send new jobs to Slack, Google Sheets or your ATS via Apify integrations.

### Support

Found a bug or need a feature? Open an issue on the **Issues** tab and we will get back to you as soon as possible.

# Actor input Schema

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

Free-text search like the directory's search box, e.g. 'developer tools', 'AI agents'. Leave empty for all companies.

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

Exact batch names as shown on the directory, e.g. 'Summer 2025', 'Winter 2024'. Empty = all batches.

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

Empty = any status.

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

e.g. 'B2B', 'Fintech', 'Healthcare', 'Developer Tools'. Matches the directory's industry facet.

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

e.g. 'United States of America', 'Europe', 'Remote', 'India'.

## `stages` (type: `array`):

Empty = any.

## `onlyHiring` (type: `boolean`):

Directory's 'Is hiring' flag.

## `onlyTopCompanies` (type: `boolean`):

YC's 'Top Companies' list.

## `excludeNonprofits` (type: `boolean`):

Skip nonprofit organizations.

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

0 = no minimum.

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

0 = no maximum.

## `launchedAfter` (type: `string`):

Keep companies whose YC launch date is on or after this date.

## `detectCareersPage` (type: `boolean`):

Visits each company's website and detects its careers page and ATS board (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Recruitee, Workable, BambooHR, Rippling). Charged as an extra event only when an external ATS board is found (YC Work at a Startup links are reported free). The output plugs straight into ATS Job Scraper / Workday Jobs Scraper.

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

0 = no limit.

## `maxConcurrency` (type: `integer`):

Used only by the careers add-on.

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

Optional. Not needed for the directory.

## Actor input object example

```json
{
  "onlyHiring": false,
  "onlyTopCompanies": false,
  "excludeNonprofits": false,
  "minTeamSize": 0,
  "maxTeamSize": 0,
  "detectCareersPage": false,
  "maxItems": 50,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Scraped Y Combinator companies.

## `runSummary` (type: `string`):

Matched/saved counts and careers add-on stats.

# 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 = {
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("birchwood-data/yc-companies-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 = { "maxItems": 50 }

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,birchwood-data/yc-companies-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/HQPsIHeuiUqvGjaCh/builds/2epI08f94eSKT1fGX/openapi.json
