# Y Combinator Scraper — Companies, Founders & Jobs (`khadinakbar/y-combinator-scraper`) Actor

Scrape the YC ecosystem in one actor: 5,700+ companies, 8,000+ founders with socials, 3,000+ jobs with salary/equity/visa, news & launches. Paste any YC URL or filter by batch, industry, region, hiring. MCP-ready, $0.005/result.

- **URL**: https://apify.com/khadinakbar/y-combinator-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, MCP servers, Jobs
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 result scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 — Companies, Founders, Jobs & All Data Points

Scrape the entire Y Combinator ecosystem from one Apify Actor. **5,700+ companies** (W05 to the latest cohort), **8,000+ founders** with social URLs, **3,000+ open jobs** with salary, equity, visa, and skills. Plus news mentions, YC Launch posts, app/demo-day videos, and the YC application Q&A when public.

Paste any YC URL — `/companies?...filters`, `/companies/{slug}`, `/companies/{slug}/jobs/{slug}`, `/jobs?role=...` — or pick from the filter UI. The actor auto-routes each URL to the right extractor.

### What you get

| Surface | Data points |
|---|---|
| **Company** | id, slug, name, batch (W26/S26/F25/etc.), status, one-liner, long description, website, team size, year founded, industry + sub-industry, regions, HQ city/country, location string, tags, top-company flag, hiring flag, nonprofit flag, launched-at date, logo URLs, **LinkedIn / Twitter / Facebook / Crunchbase / GitHub URLs**, app video URL, demo-day video URL, app answers (when public), primary YC partner |
| **Founder** | userId, full name, title, bio, **LinkedIn URL, Twitter URL**, avatar, hasEmail flag, isActive flag |
| **Open Job (per company)** | id, title, jobUrl, applyUrl, location, type (full-time/part-time/contract/intern), role + roleSpecificType + prettyRole, **salaryRange, equityRange, visa sponsorship**, skills[], minExperience, createdAt, lastActive |
| **Job (jobs mode)** | All open-job fields **plus full long-form description** + hiring manager when `scrapeJobDescriptions` is on |
| **News & Launch posts** | News title + URL + date; YC Launch post title + tagline + permalink |
| **Run summary** | Counts, errors, duration, mode |

### Why this actor

- **One actor, every surface.** No need to chain three scrapers — companies, founders, jobs, news come back in one record per company.
- **MCP-native.** Single auto-routing input, structured agent-friendly output, predictable per-event pricing. Drop into Claude / GPT / Apify MCP and it answers questions like "find YC fintech startups in Europe hiring engineers" in one tool call.
- **Reliable.** Uses YC's public Algolia index for company discovery (no proxy needed, no rate limit) + residential-proxy HTML enrichment with session pool + circuit-breaker. Target: 95%+ run success rate.
- **Premium-tier completeness, fair price.** $0.005 per record (between the cheap `$0.001/1K` actors that drop fields and the premium leader at `$0.01–0.15`). Founders and jobs are billed separately ($0.001 each) so you only pay for what you turn on.

### Pricing

| Event | Price |
|---|---|
| Actor start | $0.00005 (per GB RAM) |
| Result (one company OR one job) | **$0.005** |
| Enrichment (one founder OR one embedded job per company) | **$0.001** |

**Typical run cost:** 100 companies + founders enrichment + 3 founders avg/company ≈ `100 × $0.005 + 300 × $0.001 = $0.80`.

Pay-Per-Usage is also enabled for power users running multi-million-record jobs — compute units + proxy passthrough are billed directly by Apify.

### Quick start

#### Get the Spring 2026 batch with founders

```json
{
  "mode": "companies",
  "batches": ["Spring 2026"],
  "scrapeFounders": true,
  "maxResults": 100
}
````

#### Get all hiring B2B startups in Europe

```json
{
  "mode": "companies",
  "industries": ["B2B"],
  "regions": ["Europe", "United Kingdom"],
  "isHiring": true,
  "scrapeFounders": true,
  "scrapeOpenJobs": true,
  "maxResults": 200
}
```

#### Get every open software-engineer job in San Francisco

```json
{
  "mode": "jobs",
  "jobRole": "eng",
  "jobLocation": "san-francisco",
  "scrapeJobDescriptions": true,
  "maxResults": 500
}
```

#### Paste any YC URL

```json
{
  "startUrls": [
    "https://www.ycombinator.com/companies?batch=Spring%202026&industry=Fintech",
    "https://www.ycombinator.com/companies/stripe",
    "https://www.ycombinator.com/jobs?role=design"
  ],
  "scrapeFounders": true
}
```

#### Daily incremental "what's new" run

```json
{
  "mode": "jobs",
  "jobRole": "eng",
  "monitoringMode": true,
  "maxResults": 0
}
```

The actor persists every emitted job id in the `STATE` key-value collection. On the next scheduled run, only IDs not yet seen are emitted. Perfect for cron-driven email alerts and pipelines.

### Code examples

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("khadinakbar/y-combinator-scraper").call(run_input={
    "mode": "companies",
    "batches": ["Spring 2026", "Winter 2026"],
    "industries": ["B2B"],
    "scrapeFounders": True,
    "maxResults": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item["batch"], len(item.get("founders", [])))
```

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('khadinakbar/y-combinator-scraper').call({
  mode: 'companies',
  batches: ['Spring 2026'],
  scrapeFounders: true,
  scrapeOpenJobs: true,
  maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
  console.log(item.name, item.founders?.length, item.openJobs?.length);
}
```

#### MCP (Claude / Cursor / Continue)

Use the `apify--y-combinator-scraper` tool name through Apify MCP at `https://mcp.apify.com`.

```
Find me 20 YC fintech startups in Europe that are currently hiring,
and include each founder's LinkedIn URL.
```

The agent calls `apify--y-combinator-scraper` with `industries=["Fintech"]`, `regions=["Europe"]`, `isHiring=true`, `scrapeFounders=true`, `maxResults=20`.

### Filters reference

#### Companies mode

| Filter | Type | Example |
|---|---|---|
| `query` | string | "developer tools", "AI agents" |
| `batches` | array | `["Spring 2026", "Winter 2026"]` |
| `industries` | array | `["B2B", "Fintech"]` |
| `regions` | array | `["Europe", "Remote"]` |
| `topCompany` | boolean | `true` = curated Top Companies only |
| `isHiring` | boolean | `true` = currently hiring only |
| `nonprofit` | boolean | `true` = YC nonprofits only |
| `minTeamSize` / `maxTeamSize` | integer | `10` / `50` |

#### Jobs mode

| Filter | Type | Example |
|---|---|---|
| `query` | string | "react", "machine learning" |
| `jobRole` | enum | `eng`, `design`, `product`, `ops`, `marketing`, `sales`, `support`, `recruiting-hr`, `science` |
| `jobLocation` | string | `san-francisco`, `new-york`, `london`, `remote`, `india` |

#### Enrichment toggles

| Toggle | When | Cost |
|---|---|---|
| `scrapeFounders` | Companies mode | $0.001 per founder added |
| `scrapeOpenJobs` | Companies mode | $0.001 per job added |
| `scrapeNewsAndLaunches` | Companies mode | free (same HTTP fetch) |
| `scrapeJobDescriptions` | Jobs mode | free (covered by base $0.005/job) |

### Output shape

Each company record looks like:

```json
{
  "itemType": "company",
  "id": 271,
  "slug": "airbnb",
  "name": "Airbnb",
  "batch": "W09",
  "batchName": "Winter 2009",
  "status": "Public",
  "oneLiner": "Book accommodations around the world.",
  "website": "http://airbnb.com",
  "teamSize": 6132,
  "industries": ["Consumer"],
  "regions": ["United States of America"],
  "tags": ["Marketplace", "Travel"],
  "topCompany": true,
  "isHiring": false,
  "linkedinUrl": "https://www.linkedin.com/company/airbnb/",
  "twitterUrl": "https://twitter.com/airbnb",
  "githubUrl": "https://github.com/airbnb",
  "logoUrl": "https://...",
  "ycUrl": "https://www.ycombinator.com/companies/airbnb",
  "primaryPartner": "Garry Tan",
  "founders": [
    {
      "fullName": "Brian Chesky",
      "title": "Founder/CEO",
      "linkedinUrl": "https://www.linkedin.com/in/brianchesky/",
      "twitterUrl": "https://twitter.com/bchesky",
      "founderBio": "...",
      "hasEmail": true,
      "isActive": true
    }
  ]
}
```

Each job record looks like:

```json
{
  "itemType": "job",
  "id": 47049,
  "title": "Frontend Engineer, Identity",
  "jobUrl": "https://www.ycombinator.com/companies/stripe/jobs/jdBhPmD-frontend-engineer-identity",
  "applyUrl": "https://...workatastartup.com/application?...",
  "location": "United States / Remote",
  "jobType": "Full-time",
  "prettyRole": "Engineering",
  "roleSpecificType": "Frontend",
  "salaryRange": "",
  "equityRange": "",
  "visa": "Will sponsor",
  "skills": ["JavaScript"],
  "minExperience": "6+ years",
  "companyName": "Stripe",
  "companyBatch": "S09",
  "companyOneLiner": "Economic infrastructure for the internet.",
  "createdAt": "over 4 years",
  "lastActive": null
}
```

### Reliability notes

- **Companies discovery uses YC's public Algolia index** (`YCCompany_production`). No proxy, no rate limit. We re-acquire the dynamic API key from `ycombinator.com/companies` once at run start.
- **HTML enrichment** (`/companies/{slug}`, `/jobs`, `/jobs/{slug}`) uses Apify residential proxy by default, with Crawlee session pool (max 20 sessions, max 30 uses each, retire on error score 3+).
- **Retries:** 5 per request with exponential backoff and jitter. Sessions retire on 403/429.
- **Graceful failure:** when a target URL fails after retries, the URL + reason is recorded in the run summary `errors[]` array and the run continues. Partial success is success.

### Related actors

Pair this with:

- **[`khadinakbar/linkedin-profile-email-scraper`](https://apify.com/khadinakbar/linkedin-profile-email-scraper)** — enrich every YC founder's LinkedIn with a verified email.
- **[`khadinakbar/linkedin-jobs-scraper`](https://apify.com/khadinakbar/linkedin-jobs-scraper)** — broader job market signal beyond the YC ecosystem.
- **[`khadinakbar/b2b-lead-finder-enrichment`](https://apify.com/khadinakbar/b2b-lead-finder-enrichment)** — find decision makers at any of the scraped YC companies.

### FAQ

**Q: Is this legal?**
Y Combinator publishes the entire company directory + jobs board for public, unauthenticated viewing. This actor reads only those public pages and the public Algolia index that YC's own frontend uses. We do not log in, do not bypass any auth wall, and do not access Work At A Startup's authenticated areas.

**Q: How fresh is the data?**
Every run hits YC live — there's no cached snapshot. Algolia is updated in near real-time by YC's content team. Company HTML and jobs pages are server-rendered fresh.

**Q: Why are some `applyUrl` values pointing to `account.ycombinator.com/authenticate`?**
YC routes apply links through their authentication system on the way to Work At A Startup. That's their design — the URL is correct, and a human user who clicks it from a browser will be prompted to sign in once, then forwarded to the actual job application form.

**Q: Why is `salaryRange` empty on some jobs?**
Many YC startups don't publish salary bands on their YC job posting. That's a YC company choice, not a scraper limitation. When present, it's returned verbatim ("$180K - $230K").

### Legal disclaimer

This actor scrapes only publicly accessible pages on `ycombinator.com`. By using this actor you agree to:

- Comply with Y Combinator's [Terms of Service](https://www.ycombinator.com/legal).
- Use the data for legitimate purposes (research, hiring, BD, journalism).
- Respect the personal data of founders (do not spam, comply with GDPR/CCPA, honor opt-outs).
- The actor author is not responsible for misuse.

# Actor input Schema

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

Any Y Combinator URL. Mix and match company URLs, jobs URLs, filter URLs in the same run. The actor auto-detects which extractor to use per URL. Leave empty to use the Filter fields below. Example URLs: 'https://www.ycombinator.com/companies?batch=Spring%202026\&industry=B2B', 'https://www.ycombinator.com/companies/airbnb', 'https://www.ycombinator.com/companies/stripe/jobs/jdBhPmD-frontend-engineer-identity', 'https://www.ycombinator.com/jobs?role=eng'.

## `mode` (type: `string`):

Pick a target surface. Companies runs an Algolia search with the filter fields below. Jobs paginates the `/jobs` board with role/location filters. Ignored when Start URLs is non-empty.

## `query` (type: `string`):

Keyword search across company names, one-liners, descriptions (Companies mode) or job titles + descriptions (Jobs mode). Leave empty to skip keyword filtering. Example: 'developer tools', 'AI agents', 'fintech'. NOT a regex — Algolia matches partial words.

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

Companies mode only. Pick one or more batches (cohorts). Leave empty for no batch filter. Example: \['Spring 2026', 'Winter 2026']. Spring/Summer/Fall/Winter naming follows YC's own taxonomy.

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

Companies mode only. Pick one or more industries. Empty = no industry filter. YC's top-level taxonomy: B2B, Consumer, Healthcare, Fintech, Engineering/Product/Design, Industrials, Education, Real Estate and Construction, Government.

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

Companies mode only. Pick one or more HQ regions. Empty = no region filter. Use 'Remote' or 'Fully Remote' for distributed teams.

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

Companies mode only. Limit results to companies flagged as 'Top' by Y Combinator (a curated subset, ~500 companies). Useful for VC sourcing and competitive landscape mapping.

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

Companies mode only. Limit to companies currently marked as hiring on YC. Combine with `scrapeOpenJobs` to fetch the actual job postings.

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

Companies mode only. Limit to companies marked as nonprofits. Leave off to include both commercial and nonprofit YC orgs.

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

Companies mode only. Smallest team size to include. Leave 0 for no minimum. Example: 10 returns companies with team\_size >= 10.

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

Companies mode only. Largest team size to include. Leave 0 for no maximum. Example: 50 returns companies with team\_size <= 50.

## `jobRole` (type: `string`):

Jobs mode only. Filter the YC jobs board by role category. Empty = all roles. Maps to YC's `/jobs?role=...` query string.

## `jobLocation` (type: `string`):

Jobs mode only. Filter by city slug or 'remote'. Empty = all locations. Common values: 'san-francisco', 'new-york', 'london', 'remote', 'india', 'seattle', 'los-angeles', 'austin'.

## `scrapeFounders` (type: `boolean`):

Companies mode only. Fetch `/companies/{slug}` for each company and add the `founders[]` array (name, title, bio, LinkedIn URL, Twitter URL, has\_email flag, avatar). Adds one HTTP request per company. Each founder counts as one enrichment event ($0.001).

## `scrapeOpenJobs` (type: `boolean`):

Companies mode only. Adds the `openJobs[]` array to each company (title, salary, equity, visa, location, apply URL). If `scrapeFounders` is also true, both are populated from the same single HTTP fetch. Each job counts as one enrichment event ($0.001).

## `scrapeJobDescriptions` (type: `boolean`):

Jobs mode only. Fetch each job detail page (`/companies/{slug}/jobs/{slug}`) for the full long-form description, hiring manager, and related jobs. Slower (one HTTP per job) but produces the richest job records for downstream NLP. No enrichment event charged — already covered by the base $0.005/job.

## `scrapeNewsAndLaunches` (type: `boolean`):

Companies mode only. Adds `newsItems[]` (title, url, date) and `launches[]` (YC Launch posts) to each company. Same HTTP fetch as founders/jobs enrichment, so no extra requests if any company enrichment is already on.

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

Hard cap on number of records to return. The actor stops cleanly once this many companies (Companies mode) or jobs (Jobs mode) have been emitted. Set 0 for no cap (will scrape the full ecosystem — 5,700+ companies or all open jobs). Free-tier accounts are capped at 100 regardless.

## `monitoringMode` (type: `boolean`):

When true, persists every emitted company id / job id to the STATE key-value collection. On subsequent runs, only IDs not yet seen are emitted — perfect for scheduled cron runs that should only output 'what's new'. State is per Apify user/actor.

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

Proxy used for HTML page fetches (`/companies/{slug}`, `/jobs`, `/jobs/{slug}`). YC's Algolia API is hit directly without proxy. Default uses Apify residential proxy for highest reliability against rate limits.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.ycombinator.com/companies?batch=Spring%202026"
    }
  ],
  "mode": "companies",
  "query": "",
  "batches": [],
  "industries": [],
  "regions": [],
  "topCompany": false,
  "isHiring": false,
  "nonprofit": false,
  "minTeamSize": 0,
  "maxTeamSize": 0,
  "jobRole": "",
  "jobLocation": "",
  "scrapeFounders": true,
  "scrapeOpenJobs": false,
  "scrapeJobDescriptions": false,
  "scrapeNewsAndLaunches": false,
  "maxResults": 100,
  "monitoringMode": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

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

No description

## `runConsole` (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 = {
    "startUrls": [
        {
            "url": "https://www.ycombinator.com/companies?batch=Spring%202026"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/y-combinator-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": [{ "url": "https://www.ycombinator.com/companies?batch=Spring%202026" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/y-combinator-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    {
      "url": "https://www.ycombinator.com/companies?batch=Spring%202026"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call khadinakbar/y-combinator-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/y-combinator-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Y Combinator Scraper — Companies, Founders & Jobs",
        "description": "Scrape the YC ecosystem in one actor: 5,700+ companies, 8,000+ founders with socials, 3,000+ jobs with salary/equity/visa, news & launches. Paste any YC URL or filter by batch, industry, region, hiring. MCP-ready, $0.005/result.",
        "version": "0.1",
        "x-build-id": "WW9JtCJ0ZC9zb70Kv"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~y-combinator-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-y-combinator-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/khadinakbar~y-combinator-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-y-combinator-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/khadinakbar~y-combinator-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-y-combinator-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "🔗 Start URLs (paste any YC URL — auto-routed)",
                        "type": "array",
                        "description": "Any Y Combinator URL. Mix and match company URLs, jobs URLs, filter URLs in the same run. The actor auto-detects which extractor to use per URL. Leave empty to use the Filter fields below. Example URLs: 'https://www.ycombinator.com/companies?batch=Spring%202026&industry=B2B', 'https://www.ycombinator.com/companies/airbnb', 'https://www.ycombinator.com/companies/stripe/jobs/jdBhPmD-frontend-engineer-identity', 'https://www.ycombinator.com/jobs?role=eng'.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "mode": {
                        "title": "🎯 Mode (used when Start URLs is empty)",
                        "enum": [
                            "companies",
                            "jobs"
                        ],
                        "type": "string",
                        "description": "Pick a target surface. Companies runs an Algolia search with the filter fields below. Jobs paginates the `/jobs` board with role/location filters. Ignored when Start URLs is non-empty.",
                        "default": "companies"
                    },
                    "query": {
                        "title": "🔎 Free-text query",
                        "type": "string",
                        "description": "Keyword search across company names, one-liners, descriptions (Companies mode) or job titles + descriptions (Jobs mode). Leave empty to skip keyword filtering. Example: 'developer tools', 'AI agents', 'fintech'. NOT a regex — Algolia matches partial words.",
                        "default": ""
                    },
                    "batches": {
                        "title": "🏢 Companies · YC Batches",
                        "type": "array",
                        "description": "Companies mode only. Pick one or more batches (cohorts). Leave empty for no batch filter. Example: ['Spring 2026', 'Winter 2026']. Spring/Summer/Fall/Winter naming follows YC's own taxonomy.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Fall 2026",
                                "Summer 2026",
                                "Spring 2026",
                                "Winter 2026",
                                "Fall 2025",
                                "Summer 2025",
                                "Spring 2025",
                                "Winter 2025",
                                "Fall 2024",
                                "Summer 2024",
                                "Winter 2024",
                                "Summer 2023",
                                "Winter 2023",
                                "Summer 2022",
                                "Winter 2022",
                                "Summer 2021",
                                "Winter 2021",
                                "Summer 2020",
                                "Winter 2020",
                                "Summer 2019",
                                "Winter 2019",
                                "Summer 2018",
                                "Winter 2018",
                                "Summer 2017",
                                "Winter 2017",
                                "Summer 2016",
                                "Winter 2016",
                                "Summer 2015",
                                "Winter 2015",
                                "Summer 2014",
                                "Winter 2014",
                                "Summer 2013",
                                "Winter 2013",
                                "Summer 2012",
                                "Winter 2012",
                                "Summer 2011",
                                "Winter 2011",
                                "Summer 2010",
                                "Winter 2010",
                                "Summer 2009",
                                "Winter 2009",
                                "Summer 2008",
                                "Winter 2008",
                                "Summer 2007",
                                "Winter 2007",
                                "Summer 2006",
                                "Winter 2006",
                                "Summer 2005"
                            ]
                        },
                        "default": []
                    },
                    "industries": {
                        "title": "🏢 Companies · Industries",
                        "type": "array",
                        "description": "Companies mode only. Pick one or more industries. Empty = no industry filter. YC's top-level taxonomy: B2B, Consumer, Healthcare, Fintech, Engineering/Product/Design, Industrials, Education, Real Estate and Construction, Government.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "B2B",
                                "Consumer",
                                "Healthcare",
                                "Fintech",
                                "Engineering, Product and Design",
                                "Industrials",
                                "Education",
                                "Real Estate and Construction",
                                "Government"
                            ]
                        },
                        "default": []
                    },
                    "regions": {
                        "title": "🏢 Companies · HQ Regions",
                        "type": "array",
                        "description": "Companies mode only. Pick one or more HQ regions. Empty = no region filter. Use 'Remote' or 'Fully Remote' for distributed teams.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "United States of America",
                                "America / Canada",
                                "Canada",
                                "Mexico",
                                "Latin America",
                                "Europe",
                                "United Kingdom",
                                "Africa",
                                "Middle East and North Africa",
                                "South Asia",
                                "India",
                                "Southeast Asia",
                                "East Asia",
                                "Oceania",
                                "Remote",
                                "Fully Remote",
                                "Partly Remote"
                            ]
                        },
                        "default": []
                    },
                    "topCompany": {
                        "title": "🏢 Companies · Top Companies Only",
                        "type": "boolean",
                        "description": "Companies mode only. Limit results to companies flagged as 'Top' by Y Combinator (a curated subset, ~500 companies). Useful for VC sourcing and competitive landscape mapping.",
                        "default": false
                    },
                    "isHiring": {
                        "title": "🏢 Companies · Hiring Companies Only",
                        "type": "boolean",
                        "description": "Companies mode only. Limit to companies currently marked as hiring on YC. Combine with `scrapeOpenJobs` to fetch the actual job postings.",
                        "default": false
                    },
                    "nonprofit": {
                        "title": "🏢 Companies · Nonprofits Only",
                        "type": "boolean",
                        "description": "Companies mode only. Limit to companies marked as nonprofits. Leave off to include both commercial and nonprofit YC orgs.",
                        "default": false
                    },
                    "minTeamSize": {
                        "title": "🏢 Companies · Minimum Team Size",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Companies mode only. Smallest team size to include. Leave 0 for no minimum. Example: 10 returns companies with team_size >= 10.",
                        "default": 0
                    },
                    "maxTeamSize": {
                        "title": "🏢 Companies · Maximum Team Size",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Companies mode only. Largest team size to include. Leave 0 for no maximum. Example: 50 returns companies with team_size <= 50.",
                        "default": 0
                    },
                    "jobRole": {
                        "title": "💼 Jobs · Role",
                        "enum": [
                            "",
                            "eng",
                            "design",
                            "product",
                            "ops",
                            "marketing",
                            "sales",
                            "support",
                            "recruiting-hr",
                            "science"
                        ],
                        "type": "string",
                        "description": "Jobs mode only. Filter the YC jobs board by role category. Empty = all roles. Maps to YC's `/jobs?role=...` query string.",
                        "default": ""
                    },
                    "jobLocation": {
                        "title": "💼 Jobs · Location",
                        "type": "string",
                        "description": "Jobs mode only. Filter by city slug or 'remote'. Empty = all locations. Common values: 'san-francisco', 'new-york', 'london', 'remote', 'india', 'seattle', 'los-angeles', 'austin'.",
                        "default": ""
                    },
                    "scrapeFounders": {
                        "title": "👥 Enrich · Scrape Founders",
                        "type": "boolean",
                        "description": "Companies mode only. Fetch `/companies/{slug}` for each company and add the `founders[]` array (name, title, bio, LinkedIn URL, Twitter URL, has_email flag, avatar). Adds one HTTP request per company. Each founder counts as one enrichment event ($0.001).",
                        "default": true
                    },
                    "scrapeOpenJobs": {
                        "title": "💼 Enrich · Scrape Open Jobs per Company",
                        "type": "boolean",
                        "description": "Companies mode only. Adds the `openJobs[]` array to each company (title, salary, equity, visa, location, apply URL). If `scrapeFounders` is also true, both are populated from the same single HTTP fetch. Each job counts as one enrichment event ($0.001).",
                        "default": false
                    },
                    "scrapeJobDescriptions": {
                        "title": "📝 Enrich · Scrape Full Job Descriptions",
                        "type": "boolean",
                        "description": "Jobs mode only. Fetch each job detail page (`/companies/{slug}/jobs/{slug}`) for the full long-form description, hiring manager, and related jobs. Slower (one HTTP per job) but produces the richest job records for downstream NLP. No enrichment event charged — already covered by the base $0.005/job.",
                        "default": false
                    },
                    "scrapeNewsAndLaunches": {
                        "title": "📰 Enrich · Scrape News Mentions & YC Launch Posts",
                        "type": "boolean",
                        "description": "Companies mode only. Adds `newsItems[]` (title, url, date) and `launches[]` (YC Launch posts) to each company. Same HTTP fetch as founders/jobs enrichment, so no extra requests if any company enrichment is already on.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "🔢 Maximum Results",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Hard cap on number of records to return. The actor stops cleanly once this many companies (Companies mode) or jobs (Jobs mode) have been emitted. Set 0 for no cap (will scrape the full ecosystem — 5,700+ companies or all open jobs). Free-tier accounts are capped at 100 regardless.",
                        "default": 100
                    },
                    "monitoringMode": {
                        "title": "🛰️ Monitoring Mode (incremental scheduled runs)",
                        "type": "boolean",
                        "description": "When true, persists every emitted company id / job id to the STATE key-value collection. On subsequent runs, only IDs not yet seen are emitted — perfect for scheduled cron runs that should only output 'what's new'. State is per Apify user/actor.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "🛡️ Proxy Configuration (HTML enrichment only)",
                        "type": "object",
                        "description": "Proxy used for HTML page fetches (`/companies/{slug}`, `/jobs`, `/jobs/{slug}`). YC's Algolia API is hit directly without proxy. Default uses Apify residential proxy for highest reliability against rate limits.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
