# 🚀 Y Combinator Scraper (`scraper-engine/y-combinator-scraper`) Actor

Y Combinator Scraper extracts startup profiles, founders, industries, batches, locations, websites, and company details from Y Combinator. Ideal for startup research, lead generation, competitor analysis, and market intelligence.

- **URL**: https://apify.com/scraper-engine/y-combinator-scraper.md
- **Developed by:** [Scraper Engine](https://apify.com/scraper-engine) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Y Combinator Scraper — Companies, Founders and Open Jobs as JSON

Y Combinator Scraper extracts structured data for every company matching a YC directory search — company description, batch, industry, stage, socials, founder details, and open job listings. Paste in a search URL from [ycombinator.com/companies](https://www.ycombinator.com/companies), and get back typed, normalized JSON with no HTML parsing on your end. Results save to the dataset the moment each company finishes, so a long run never loses completed work. Start a run and watch the first records land within seconds.

### 🚀 What is Y Combinator Scraper?

Y Combinator Scraper is an Apify Actor that turns one or more YC directory search URLs into structured company records — including founders and open jobs — without a headless browser. It queries the same search backend and detail pages the public directory itself uses, so no Y Combinator account or login is ever required. It's built for developers, growth and recruiting teams, and AI engineers who need YC's startup data as clean JSON instead of scraping the HTML themselves.

### 🔍 What Y Combinator company data is publicly available to scrape?

Everything on a company's public YC directory page — its profile, founders, and open jobs — is visible to any visitor without logging in; a small number of fields simply aren't published by YC at all, at any access level.

| Data category | Publicly available | Not published by YC |
| --- | --- | --- |
| Company profile (name, description, batch, industry, stage, status) | Yes | — |
| Company website and social links | Yes | — |
| Founder name, title, bio, LinkedIn, X | Yes | — |
| Founder email address | — | Only a "has email" flag is exposed, never the address |
| Open job title, description, location, salary, equity, skills | Yes | — |
| Revenue, funding amount, valuation | — | Not part of the public directory |
| YC application or interview data | — | Internal to YC, never public |
| Job applicant / candidate data | — | Visible only to the hiring company's own account |

Y Combinator Scraper only returns publicly visible data — what any visitor sees. Nothing behind a login wall.

### 📊 What data can I extract with Y Combinator Scraper?

Every run returns one JSON record per company, covering identity and classification, metrics and links, plus nested founder and job objects.

| Field name | Description |
| --- | --- |
| `url` | Company's profile URL on the YC directory |
| `company_id` | Numeric company ID assigned by YC |
| `company_name` | Company name |
| `company_image` | Company logo URL |
| `short_description` | One-line company description ("one-liner") |
| `long_description` | Full company description |
| `batch` | YC batch, e.g. "Spring 2026" |
| `industry` | Primary industry |
| `subindustry` | Sub-industry, derived from YC's category tree |
| `stage` | Company growth stage |
| `status` | Company status, e.g. "Active" |
| `tags` | Additional industry/topic tags, or `null` |
| `website` | Company's own website URL |
| `year_founded` | Year the company was founded |
| `team_size` | Number of employees, as reported to YC |
| `company_location` | Company headquarters location |
| `company_linkedin` | Company LinkedIn URL |
| `company_x` | Company X (Twitter) URL |
| `company_facebook` | Company Facebook URL |
| `company_crunchbase` | Company Crunchbase URL |
| `company_github` | Company GitHub URL |
| `primary_partner` | YC partner mentoring the company |
| `top_company` | YC "top company" flag |
| `nonprofit` | Nonprofit flag |
| `is_hiring` | Whether the company currently has open roles |
| `number_of_open_jobs` | Open job count — always included, even when job details aren't scraped |
| `open_jobs` | Full job listings — populated only when Scrape Open Jobs is on |
| `founders` | Founder objects — populated only when Scrape Founders is on |

#### Company identity and classification

`url`, `company_id`, `company_name`, `company_image`, `short_description`, `long_description`, `batch`, `industry`, `subindustry`, `stage`, `status`, `tags` — what the company is, what it's called, and how YC categorizes it.

#### Metrics, flags and links

`website`, `year_founded`, `team_size`, `company_location`, `company_linkedin`, `company_x`, `company_facebook`, `company_crunchbase`, `company_github`, `primary_partner`, `top_company`, `nonprofit`, `is_hiring`, `number_of_open_jobs` — the numeric, boolean, and link fields.

#### Founders and open jobs (nested objects)

Each entry in `founders` returns `id`, `name`, `title`, `bio`, `emails` (`{available, email, status}`), `linkedin`, `x`. Each entry in `open_jobs` returns `id`, `title`, `description_url`, `description`, `location`, `remote`, `type`, `role`, `salary`, `equity`, `skills`, `years_experience`, `visa`.

> ⚠️ `emails.email` and `emails.status` are always `null`. YC's directory exposes only `emails.available` — a true/false flag for whether the founder has listed an email with YC — never the address itself.

#### 🤖 Add-on: Need additional Y Combinator data?

Pair this Actor with **LinkedIn People Profile Scraper** to pull full LinkedIn profile data for a founder beyond the `linkedin` URL, or **Twitter X Profile Viewer** to enrich a founder's `x` handle with bio, follower count, and recent posts. For a company's own site content rather than its YC listing, **Website Content Crawler** can crawl the `website` field directly.

### 🆚 Why not build this yourself?

Y Combinator does not publish a public API for its startup directory, so the only way to get this data programmatically is to scrape it — and doing that reliably means more than a simple HTML fetch. The directory's search runs on a client-side Algolia index whose credentials live inside the page's JavaScript and can rotate; this Actor live-extracts them on every run and falls back to a pinned value if extraction fails. Company detail pages embed their data as an Inertia.js JSON blob, not stable HTML markup, so a naive scraper breaks the moment YC ships a frontend change. And YC does rate-limit and block aggressive scraping, which means building and maintaining your own proxy-escalation logic. Y Combinator Scraper already handles all three, plus the search backend's 1,000-result-per-query cap, so you get structured records without owning that maintenance burden.

### ▶️ How to use Y Combinator Scraper

Y Combinator Scraper runs on the Apify platform — no separate signup or API key is needed to try it in Console.

1. Open **Y Combinator Scraper** on its Apify Store listing and click **Try for free** (or **Start**).
2. Go to the [YC directory](https://www.ycombinator.com/companies), apply the filters you want, copy the URL, and paste it into **🔍 YC Companies Search URL(s)** — the only required input.
3. Toggle **👥 Scrape Founders** and **💼 Scrape Open Jobs** depending on what you need; adjust **🎯 Maximum Companies** if you want a smaller sample.
4. Click **Start**.
5. Watch results arrive live in the **Output** tab, or download the full dataset as JSON, CSV, or Excel once the run finishes.

#### Scaling to bulk company extraction

The `urls` input is an array, so pasting several YC directory search URLs (different batches, industries, or stages) into one run merges and de-duplicates every match into a single dataset — no need to run the Actor once per filter. For the entire directory instead of a filtered search, enable **🌍 Scrape ALL Companies**, which ignores `urls` and `maxCompanies` and pulls all 5,500+ funded companies across every batch.

### 💡 What can you do with Y Combinator company data?

- **A growth marketer** building a partnership list uses `industry`, `batch`, and `website` to shortlist recently-funded companies in a target vertical before outreach.
- **A recruiter** sourcing candidates uses `is_hiring` and `number_of_open_jobs` to find actively-hiring startups, then pulls `open_jobs` for the exact roles and salary ranges on offer.
- **A sales development rep** uses `founders[].linkedin` and `founders[].title` to identify the right decision-maker at each company before connecting.
- **A market researcher** aggregates `industry`, `subindustry`, and `batch` across thousands of records to chart which sectors YC is funding batch-over-batch.
- **An AI engineer** feeds `long_description` and `founders[].bio` into a RAG pipeline so an agent can answer natural-language questions about YC's startup portfolio with source-grounded context.

### 🛡️ How does Y Combinator Scraper handle rate limits and blocking?

By default, every request goes directly to Y Combinator with no proxy, for maximum speed. If a request comes back rejected or blocked (HTTP 403, 429, or a 5xx server error), the Actor automatically escalates through a proxy ladder — no proxy → Apify Proxy datacenter → Apify Proxy residential — retrying up to 3 times on residential before giving up on that one request. Once the run escalates to residential, it stays there for every remaining request rather than dropping back down. Separately, a genuine network failure (timeout, DNS error, connection reset) is retried with backoff; `⏱️ Delay Between Requests` and `⚡ Max Concurrency` let you pace requests to avoid triggering rate limits in the first place.

> ⚠️ If 12 consecutive requests fail to reach Y Combinator at all — a connectivity problem, not a block — the run stops early and keeps whatever was already scraped, rather than retrying indefinitely.

### ⬇️ Input

Y Combinator Scraper accepts the parameters below, defined in `input_schema.json`. Only `urls` is required.

| Parameter | Required | Type | Description | Example value |
| --- | --- | --- | --- | --- |
| `urls` | Yes | array | One or more Y Combinator directory search URLs (bulk supported). Apply filters on the YC directory (batch, industry, region, stage, tags, hiring status, ...), copy the full URL, and paste it here — one per line, or upload a file. Every result across all pasted URLs is merged and de-duplicated. | `["https://www.ycombinator.com/companies?batch=Summer%202026"]` |
| `scrapeFounders` | No | boolean | When enabled, each company record includes its founders — name, title, bio, LinkedIn, X (Twitter), and email availability. Default `true`. | `true` |
| `scrapeOpenJobs` | No | boolean | When enabled, each company record includes its full open-job listings — title, description, location, salary, equity, skills, and more. Leave off for faster runs if you only need the job count. Default `false`. | `false` |
| `maxCompanies` | No | integer | Stop after this many companies (across all search URLs combined). Leave empty for no limit. Default `10`, minimum `1`. | `25` |
| `scrapeAllCompanies` | No | boolean | Set to true to scrape every company in the YC directory (5,500+, all batches). When enabled, `urls` and `maxCompanies` are ignored entirely. Default `false`. | `false` |
| `proxyConfiguration` | No | object | By default the Actor connects to Y Combinator with no proxy for maximum speed, and auto-escalates through datacenter and residential tiers if blocked. Force a specific tier here if needed. | `{ "useApifyProxy": false }` |
| `maxConcurrency` | No | integer | How many companies to enrich in parallel. Higher is faster but more likely to trigger rate limiting. Default `5`, minimum `1`, maximum `20`. | `5` |
| `requestDelay` | No | number | Optional polite delay before each request, in seconds. Float values are supported. Default `0`, minimum `0`, maximum `10`. | `0.5` |
| `maxRetries` | No | integer | How many times to retry a single request on a network error or server hiccup (5xx) before giving up on that attempt. Default `3`, minimum `1`, maximum `5`. | `3` |

Direct API callers may also pass `startUrls` as an alternate key name for `urls`.

#### Example input

```json
{
  "urls": [
    "https://www.ycombinator.com/companies?batch=Summer%202026&industry=B2B"
  ],
  "scrapeFounders": true,
  "scrapeOpenJobs": true,
  "maxCompanies": 25,
  "scrapeAllCompanies": false,
  "maxConcurrency": 5,
  "requestDelay": 0.5,
  "maxRetries": 3
}
```

### ⬆️ Output

Y Combinator Scraper writes one typed, normalized JSON record per company to the dataset, with a stable field order and consistent schema across runs. Download results as JSON, CSV, Excel, or HTML from the Output tab, or via the Apify API.

#### Example output

```json
{
  "url": "https://www.ycombinator.com/companies/akkari",
  "company_id": 31576,
  "company_name": "Akkari",
  "company_image": "https://bookface-images.s3.amazonaws.com/small_logos/akkari.png",
  "short_description": "Autonomous Customer Operations",
  "long_description": "Akkari runs the operational work from the first sales call through expansion, replacing manual customer ops with an AI-driven workflow.",
  "batch": "Spring 2026",
  "industry": "B2B",
  "subindustry": "B2B",
  "stage": "Early",
  "status": "Active",
  "tags": ["Artificial Intelligence", "SaaS"],
  "website": "https://akkari.io/",
  "year_founded": "2026",
  "team_size": "5",
  "company_location": "San Francisco",
  "company_linkedin": null,
  "company_x": null,
  "company_facebook": null,
  "company_crunchbase": null,
  "company_github": null,
  "primary_partner": "Aaron Epstein",
  "top_company": false,
  "nonprofit": false,
  "is_hiring": true,
  "number_of_open_jobs": 1,
  "open_jobs": [
    {
      "id": 48213,
      "title": "Founding Engineer",
      "description_url": "https://www.ycombinator.com/companies/akkari/jobs/founding-engineer",
      "description": "Build the core workflow engine that powers Akkari's customer operations platform...",
      "location": "San Francisco, CA",
      "remote": false,
      "type": "Full-time",
      "role": "Engineering, Full stack",
      "salary": "$120K - $180K",
      "equity": "0.50% - 1.50%",
      "skills": ["Python", "TypeScript", "PostgreSQL"],
      "years_experience": "2",
      "visa": null
    }
  ],
  "founders": [
    {
      "id": 33963,
      "name": "Jeffrey Byun",
      "title": "Founder/CEO",
      "bio": "2x YC founder (W11, P26), CEO of Akkari, and former bond trader.",
      "emails": { "available": true, "email": null, "status": null },
      "linkedin": "https://www.linkedin.com/in/jeffbyun/",
      "x": "https://twitter.com/jeffbyun"
    }
  ]
}
```

### ⚙️ How does it work?

Y Combinator Scraper talks to the same two backends the public directory uses in a browser: Algolia's search index for the company list, and the directory's own Inertia.js-powered detail pages for founders, socials, and job postings. Every request goes through `impit`, an HTTP client that impersonates a real Chrome browser at the network level — no headless browser is launched. Requests start with no proxy for speed; if Y Combinator rejects one, the Actor automatically escalates through Apify Proxy's datacenter and residential tiers, retrying on residential before giving up on that request. Only data visible on YC's own public pages is ever returned, and the output schema — the same fields, in the same order — stays fixed regardless of how YC's frontend markup changes, because the parsing logic that maps YC's page structure to this schema lives in one isolated module.

### 🔌 Integrations

Y Combinator Scraper works with the tools you already use for automation and AI — call it directly over HTTP, wire it into a no-code workflow, or reach it as an agent tool.

#### Calling Y Combinator Scraper programmatically

```python
import requests

response = requests.post(
    "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items",
    headers={"Authorization": "Bearer YOUR_APIFY_TOKEN"},
    json={
        "urls": ["https://www.ycombinator.com/companies?batch=Summer%202026"],
        "scrapeFounders": True,
    },
)
companies = response.json()
```

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

#### No-code tools (n8n, Make, LangChain)

In **n8n**, use the HTTP Request node pointed at the `run-sync-get-dataset-items` endpoint above, with your Apify token as a Bearer header. In **Make**, use the Apify app's built-in "Run Actor and get dataset items" module and map `urls` from an earlier step. In **LangChain**, the community `ApifyWrapper` / `langchain-apify` integration can call any Apify Actor as a tool and load the returned dataset items as `Document` objects for a retrieval chain.

Any Apify Actor, this one included, can also be reached through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) as a callable tool from Claude, Cursor, and other MCP-compatible clients.

### ⚖️ Is it legal to scrape Y Combinator companies?

Yes — scraping publicly available business data, such as a startup directory, is generally lawful in most jurisdictions, and Y Combinator Scraper only returns data already visible to any visitor on YC's public company pages. The company records (name, description, batch, industry, socials) are business data, not personal data, so they fall under Y Combinator's terms of service and database-rights framing rather than a personal-data privacy regime. The `founders` array is different: names, bios, and social profile links are personal data about identifiable individuals, so GDPR/CCPA considerations — a lawful basis for storing and using that data — apply if you enable `scrapeFounders`. Consult legal counsel if your use case involves bulk storage of personal data.

### ❓ Frequently asked questions

#### What Y Combinator company fields does Y Combinator Scraper return?

The top fields are `company_name`, `short_description`, `batch`, `industry`, and `is_hiring`, plus nested `founders` and `open_jobs` objects when enabled. See [What data can I extract](#-what-data-can-i-extract-with-y-combinator-scraper) above for the full field list.

#### Does Y Combinator Scraper require a YC account or login?

No. Every field comes from Y Combinator's public directory pages, and the Actor makes plain HTTP requests with no authentication — no YC account, cookie, or login is used or required.

#### How many companies can I extract in one run?

`maxCompanies` defaults to 10 but can be raised or left empty for no cap, and `scrapeAllCompanies` pulls the entire directory (5,500+ companies) in one run. Internally, when a single search matches more than 1,000 companies — the search backend's per-query cap — the Actor automatically splits the query by batch and merges the results, so the 1,000-hit cap never limits what you can extract.

#### What happens if a search URL returns zero companies?

The run logs a warning — "No companies matched your search — nothing to scrape" — and finishes without pushing any dataset items or charging any events. Double-check the filters on the search URL if this happens unexpectedly.

#### Can I scrape multiple Y Combinator search URLs at once?

Yes. `urls` accepts an array, so pasting several directory search URLs (different batches, industries, or stages) into one run merges and de-duplicates every match into a single dataset, instead of running the Actor once per filter.

#### Does Y Combinator Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes. It's callable as an HTTP endpoint by any agent framework, and reachable through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) for Claude, Cursor, and other MCP-compatible clients.

#### Does Y Combinator Scraper include YC's separate "Work at a Startup" job board?

No. `open_jobs` comes from each company's own detail-page job postings on the main directory, not from the separate workatastartup.com site — so job data is scoped to the companies your search matches, not the wider YC job board.

#### Does Y Combinator Scraper return data in a format LLMs can use directly?

Yes. Every record is typed, normalized JSON with consistent field names across runs — no HTML parsing or CSS selectors required. Pass it directly to an LLM's context window, index it into a vector store, or feed it to an agent tool.

#### What happens when Y Combinator changes its layout or anti-bot system?

The Actor's parsing logic is isolated in one module that's maintained to track YC's directory, and the output schema stays stable across those updates so downstream integrations don't break. No specific update turnaround is promised.

#### Can I use Y Combinator Scraper without managing proxies or browser infrastructure?

Yes. The Actor starts every run with no proxy and automatically escalates through Apify Proxy's datacenter and residential tiers only if Y Combinator rejects a request — you never have to configure or pay for proxies yourself unless you choose to force a specific tier.

#### Which Y Combinator fields work best for AI training data and RAG indexing?

For RAG, index `long_description`, `short_description`, and `founders[].bio` — the high-information free text fields. For training data, `industry`, `subindustry`, `batch`, and `stage` are the most consistently structured fields across every record, and every field is returned as a typed primitive (string, integer, boolean, or array) rather than raw HTML.

### 🔗 Related scrapers

| Scraper | What it extracts |
| --- | --- |
| LinkedIn People Profile Scraper | Full LinkedIn profile data for any person, including YC founders |
| Twitter X Profile Viewer | Public X (Twitter) profile data for founders and companies |
| Website Content Crawler | Full text content crawled from a startup's own website |
| Greenhouse Job Scraper | Job listings from any company using the Greenhouse ATS |
| Ats Jobs API | Job listings aggregated across multiple applicant-tracking systems |
| Shopify Store Leads Scraper - Emails, Phones & Ratings | Business contact leads (emails, phones, ratings) from Shopify stores |

### 🛟 Your feedback

Found a bug or missing a field? Open an issue on this Actor's **Issues** tab in Apify Console, or email **dev.scraperengine@gmail.com** — we read every report and it helps us keep the scraper in sync with Y Combinator's site.

# Actor input Schema

## `urls` (type: `array`):

🌐 One or more Y Combinator directory search URLs (bulk supported). Go to the <a href="https://www.ycombinator.com/companies" target="_blank">YC directory</a>, apply the filters you want (batch, industry, region, stage, tags, hiring status, ...), copy the full URL from the address bar, and paste it here — one per line, or upload a file. Every result across all pasted URLs is merged and de-duplicated.

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

✨ When enabled, each company record includes its founders — name, title, bio, LinkedIn, X (Twitter), and email availability.

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

📌 When enabled, each company record includes its full open-job listings — title, description, location, salary, equity, skills, and more. Leave off for faster runs if you only need the job count.

## `maxCompanies` (type: `integer`):

✂️ Stop after this many companies (across all search URLs combined). Leave empty for no limit.

## `scrapeAllCompanies` (type: `boolean`):

🗂️ Set to true to scrape every company in the YC directory (5,500+, all batches). When enabled, the 🔍 Search URL(s) and 🎯 Maximum Companies fields above are ignored entirely.

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

🌐 By default the Actor connects to Y Combinator with <b>NO proxy</b> for maximum speed. If a request is rejected or blocked, it automatically escalates: ⚡ No proxy → 🏢 Datacenter proxy → 🏠 Residential proxy (retried up to 3×) — then <b>sticks with Residential for every remaining request</b> in the run. Every escalation is logged clearly. You can also force a specific tier yourself here.

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

🚦 How many companies to enrich in parallel. Higher is faster but more likely to trigger rate limiting (which the proxy ladder above will then handle automatically).

## `requestDelay` (type: `number`):

🐢 Optional polite delay before each request, in seconds. Float values are supported (e.g. 0.5). Helps avoid rate limiting on very large runs.

## `maxRetries` (type: `integer`):

🔄 How many times to retry a single request on a network error or server hiccup (5xx) before giving up on that attempt. Separate from the proxy escalation ladder above.

## Actor input object example

```json
{
  "urls": [
    "https://www.ycombinator.com/companies?batch=Summer%202026"
  ],
  "scrapeFounders": true,
  "scrapeOpenJobs": false,
  "maxCompanies": 10,
  "scrapeAllCompanies": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxConcurrency": 5,
  "requestDelay": 0,
  "maxRetries": 3
}
```

# Actor output Schema

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

Core identity, category, stage, and status for every scraped company.

## `founders` (type: `string`):

Founder name, title, bio, LinkedIn and X for every scraped company.

## `openJobs` (type: `string`):

Open job postings for every scraped company.

## `links` (type: `string`):

Website, social profiles, and YC partner for every scraped company.

## `fullRecord` (type: `string`):

Every field, unfiltered, exactly as pushed to the dataset.

## `csv` (type: `string`):

The full result set as a CSV file.

# 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 = {
    "urls": [
        "https://www.ycombinator.com/companies?batch=Summer%202026"
    ],
    "scrapeFounders": true,
    "scrapeOpenJobs": false,
    "maxCompanies": 10,
    "scrapeAllCompanies": false,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraper-engine/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 = {
    "urls": ["https://www.ycombinator.com/companies?batch=Summer%202026"],
    "scrapeFounders": True,
    "scrapeOpenJobs": False,
    "maxCompanies": 10,
    "scrapeAllCompanies": False,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scraper-engine/y-combinator-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 '{
  "urls": [
    "https://www.ycombinator.com/companies?batch=Summer%202026"
  ],
  "scrapeFounders": true,
  "scrapeOpenJobs": false,
  "maxCompanies": 10,
  "scrapeAllCompanies": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scraper-engine/y-combinator-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraper-engine/y-combinator-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/RYzxUt4Ig5lTdyO68/builds/mrpttvgnEVwQSc80y/openapi.json
