Search YC startup directory
TL;DR
About
Send the filters as JSON and get back plain rows for each matching company, with website, oneLiner, batch, teamSize, isHiring and tags. A free-text query is accepted too. Say you sell an API monitoring product to young developer tool startups. You ask for tag "Developer Tools", batches "Spring 2026" and "Summer 2026" and isHiring true, which should fit on one page at the default 40 rows. Sort by teamSize, keep the rows under 15 people, and open each company's url to find the founders before you write to anyone. The directory's company size filter is not exposed here, so size is something you trim after the fetch. Values inside one filter are OR'd, and separate filters are AND'd. The script reads the search key from the directory page on each run and queries the search index directly, so no YC account is needed.
Input
tag optionalTags, e.g. ["Artificial Intelligence","SaaS","Developer Tools"]. OR within the list.
page optionalZero-based page index. Loop it up to nbPages-1 to fetch everything.
Default: 0batch optionalFilter to these YC batches, e.g. ["Summer 2023","Winter 2024"]. OR within the list.
count optionalAlias for hitsPerPage — results per page. Takes precedence over hitsPerPage when both are set.
query optionalFree-text search (company name, description, tags). Empty = browse the whole directory.
Default: ""region optionalHQ regions, e.g. ["United States of America","Europe","Remote"]. OR within the list.
status optionalCompany status. OR within the list.
industry optionalTop-level industry categories, e.g. ["Fintech","B2B","Healthcare"]. OR within the list.
isHiring optionalOnly companies currently hiring (true filters; false/omitted = no filter).
nonprofit optionalOnly nonprofits (true filters; false/omitted = no filter).
topCompany optionalOnly YC top companies (true filters; false/omitted = no filter).
hitsPerPage optionalResults per page (Algolia caps at 1000). Alias: count.
Default: 40Output
page requiredtotal requiredTotal matches across all pages.
nbPages requiredcompanies requiredhitsPerPage optionalExample output
Shape only: placeholder values generated from the output schema, not a real run.
{
"page": 1,
"total": 3,
"nbPages": 3,
"companies": [
{
"id": "abc123",
"url": "https://example.com/item/123",
"name": "Example",
"slug": "…",
"tags": [
"…"
],
"batch": "…",
"stage": "…",
"status": "…",
"logoUrl": "https://example.com/item/123",
"regions": [
"…"
],
"website": "…",
"industry": "…",
"isHiring": true,
"location": "…",
"oneLiner": "…",
"teamSize": 3,
"nonprofit": true,
"industries": [
"…"
],
"launchedAt": "2026-01-15T09:30:00Z",
"topCompany": true,
"subindustry": "…",
"longDescription": "…"
}
],
"hitsPerPage": 3
}