Y Combinator Companies Scraper - $0.90 per 1,000
Pricing
from $0.90 / 1,000 company scrapeds
Y Combinator Companies Scraper - $0.90 per 1,000
Filter the YC startup directory by batch (W24, S23), industry, region, tag or status and get one row per company: pitch, batch, status, team size, founded year, location, website, tags, and founder names with LinkedIn links. $0.90 per 1,000. No key, no login, no browser.
Pricing
from $0.90 / 1,000 company scrapeds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Y Combinator Companies Scraper
Ask for a batch (W24, S23, F24), an industry, a region, a tag or a status, and you get back
the YC companies that match, one row each. If you already know which companies you want, paste their
profile URLs instead and skip the searching.
A row carries the one-line pitch and the long description, the batch, whether the company is active, acquired, public or inactive, its team size, founding year, location, website, industries and tags. Founders come with it: name, title, and a LinkedIn link where the founder published one.
It reads the public search index the directory itself uses. No account, no API key, no browser.
Price
$0.90 per 1,000 companies, plus a $0.0005 start fee per run.
| Companies | Total |
|---|---|
| 100 | $0.0905 |
| 1,000 | $0.9005 |
| 10,000 | $9.0005 |
One company-scraped event per company row. That's the only per-row charge. Free: the sample row
an empty run writes, and every diagnostic row — a filter that matched nothing, a profile URL that
doesn't exist, a network problem. Those all carry "charged": false. Companies that already
appeared earlier in the same run are dropped before they're charged, so a company matching two of
your filters costs you once.
Filter the dataset on charged == true and the count equals the number of events you were billed
for.
Input
{"batches": ["W24", "S23"],"industries": ["B2B"],"statuses": ["Active"],"maxItems": 50}
| Field | What it does |
|---|---|
batches | Short (W24, S23, F24, P25) or long (Winter 2024). Up to 60 per run. Each batch is a separate query and the row budget is split between them. |
industries | The directory's own labels: B2B, Consumer, Healthcare, Fintech, Industrials, Education, Climate. Several values are OR'd. |
regions | United States of America, Europe, India, Latin America, Africa, Remote. Also OR'd. |
tags | Profile tags: Artificial Intelligence, SaaS, Developer Tools, Marketplace, Open Source. |
statuses | Any of Active, Acquired, Public, Inactive. Empty means all four. |
searchTerms | Free text over names, pitches and descriptions. Each term is searched on its own and can be combined with the filters. |
companyUrls | Profile URLs or bare slugs, up to 500 per run, if you'd rather look companies up than search for them. |
allCompanies | Sweep the whole directory instead of filtering. Pair it with a high maxItems. |
isHiring | Only companies flagged as hiring on their card. |
topCompaniesOnly | Only the ones the directory marks as top companies. |
nonprofitOnly | Only the non-profits. |
includeFounders | On by default. This is what reads each company's own profile page, and it's the only source of yearFounded, founders, city, country and the social links. Turn it off for a faster run. Price per company is the same either way. |
maxItems | Total rows across everything you asked for, split evenly. Default 20, ceiling 7,000. |
proxyUrls | Leave empty. It's here for people who already pay for proxy servers and want traffic to leave through them. |
Run it with empty input and you get one labelled sample row, free, so you can see the shape before spending anything.
Output
{"ok": true,"charged": true,"recordType": "company","query": "Winter 2014","name": "Cruise","slug": "cruise","oneLiner": "Self-driving cars.","longDescription": "Cruise is building the world's most advanced, all-electric, self-driving car technology...","batch": "Winter 2014","batchCode": "W14","status": "Acquired","teamSize": 3000,"yearFounded": 2013,"location": "San Francisco, CA, USA","city": "San Francisco","country": "US","regions": ["United States of America", "America / Canada", "Remote"],"website": "http://getcruise.com","ycProfileUrl": "https://www.ycombinator.com/companies/cruise","industry": "Industrials","industries": ["Industrials", "Automotive"],"subindustry": "Industrials -> Automotive","tags": ["Autonomous Delivery", "Machine Learning", "Climate", "AI"],"founders": [{"name": "Kyle Vogt","title": "Founder/CEO","linkedinUrl": "https://www.linkedin.com/in/kylevogt/","twitterUrl": null,"bio": "Kyle started Cruise in 2013, eventually selling it to GM for $1 billion."}],"founderNames": "Kyle Vogt, Daniel Kan","founderCount": 2,"linkedinUrl": "https://www.linkedin.com/company/getcruise/","twitterUrl": "https://twitter.com/Cruise","facebookUrl": "https://www.facebook.com/cruiseautomation/","crunchbaseUrl": "https://www.crunchbase.com/organization/cruise","githubUrl": null,"logoUrl": "https://bookface-images.s3.amazonaws.com/small_logos/b9aae9....png","formerNames": [],"isHiring": false,"nonprofit": false,"topCompany": true,"stage": "Growth","launchedAt": "2013-11-20T20:18:37.000Z","companyId": "590","scrapedAt": "2026-08-16T19:48:58.631Z"}
A few fields worth explaining:
batchandbatchCodeare the same thing twice:Winter 2024andW24. Companies with no batch on record readUnspecified.teamSizeis whatever the company last reported, not a live headcount.locationis the free-text string on the directory card.cityandcountrycome from the profile page, so they'renullwhenincludeFoundersis off.foundersis an array of{name, title, linkedinUrl, twitterUrl, bio}.founderNamesis the same names joined with commas, for spreadsheets that choke on nested arrays.launchedAtis when the company first appeared on the directory, not when it was founded. That'syearFounded.companyIdis the directory's own numeric id as a string. It's stable across runs, so use it as your key when you re-run.
How the row budget is split
The search index answers at most 1,000 hits for any one query. That only matters if you ask for more than that, and it's handled two ways:
Several batches in one run get a query each, so ten batches and 200 rows gives you twenty companies per batch rather than two hundred from the first one. A batch smaller than its share just returns fewer; the leftover isn't handed to the others.
Set allCompanies with maxItems above 1,000 and the run walks the batch list itself, newest
first. The biggest batch holds under 400 companies, so no single query ever hits the ceiling and the
whole directory (roughly 6,200 companies) is reachable in one run.
Free-text terms work the same way — equal share each, and a company already delivered by an earlier term is skipped instead of charged twice.
Limits
- Companies only. Job postings, launches, news and demo-day videos aren't in scope.
yearFoundedis only as complete as the directory. About four companies in five publish one; the rest readnull.- A company that lists no founders publicly comes back with an empty
foundersarray. In a sample of 50 companies spanning 2005–2025 that was about one in twenty-five, mostly the oldest and newest entries. - Founder emails aren't published anywhere on the directory, so they aren't in the output and no attempt is made to guess them.
- Some long-dormant entries from the earliest batches have no pitch and no tags, so
oneLinerandtagscan be empty on those. - Team size, hiring flag and status are a snapshot at read time. If the company edits its profile a minute later, your row is already stale.
Unspecifiedshows up in batch, region and industry on older entries. That's what the directory holds, not a scraping failure.- A single filter combination that genuinely matches more than 1,000 companies and isn't split by batch will stop at 1,000.
- Turn
includeFoundersoff andyearFounded,founders,city,countryand the social links all come backnull. Those live on the profile page, not the directory card. - Hard ceilings: 7,000 rows per run, 60 values per filter list, 500 company URLs per run.
- The directory is the only source. Funding amounts, valuations, revenue and investor lists aren't published there, so they aren't here either.
Rows you'll see
Three kinds, easy to tell apart:
- Real rows:
"charged": true,"recordType": "company". - The sample row:
"_sample": true,"charged": false. Exactly one, only on an empty run. - Diagnostics:
"_diagnostic": true,"charged": false, plus anerrorCode—NO_RESULTS,NOT_FOUND,NETWORK,RATE_LIMITED,TIME_BUDGET. Each carries a plain-Englisherrorand thequeryorinputUrlit belongs to.
A blocked or broken target produces a diagnostic row and the run still finishes as succeeded. A failed run would still bill the start fee, which would mean paying to be told something went wrong.
Questions
How do I get a whole batch? Put it in batches and set maxItems above its size. The biggest
batch to date holds just under 400 companies.
How do I get every company? Tick allCompanies and set maxItems to 7000. The run walks the
batch list newest first and stops when it runs out of companies or budget.
Can I get founder emails? No. The directory doesn't publish them. You get names, titles, and LinkedIn and X profiles where the founder linked one.
Do I need a proxy? No. The run brings its own egress and that cost is already in the price.
Can I schedule it? Yes. Nothing is held between runs. Diff on companyId to see what's new.