Y Combinator Scraper: YC Companies, Founders & Email Pattern
Every pattern says whether it was observed or guessed.
Companies, founders and open jobs from Y Combinator's public startup directory, one row type per run, with domain, LinkedIn, batch, team size and salaries. Each row can carry the company's email pattern, and the row says whether that pattern rests on an email the company published or is a free guess.
oswaldocarabano/yc-companies-founders-scraper
{
"outputType": "companies",
"regions": ["Mexico"],
"industries": ["Fintech"],
"inferEmailPattern": true,
"maxItems": 100
}- Version
- v0.1.5
- Memory
- 512 MB
- Browser
- none
- Proxy
- None by default; the directory answers directly
Short answer
The Y Combinator Scraper Actor reads YC's public company directory — 6,267 companies on 1 October 2026 — and returns one row type per run: companies, founders or open jobs. Measured on 80 Latin American companies, 80 founders and 60 jobs, website and domain were filled on 100% of companies, company LinkedIn on 93.8% and founder LinkedIn on 99.4% of founders. Each row can carry the company's email pattern, but only 6 of those 80 companies (7.5%) had published an email that supports it; every other pattern is a free guess marked `inferred: true`. Pricing is $0.008 per company with founders and jobs, $0.004 per founder, and $0.01 per evidence-backed email pattern.
Key points
- The YC directory listed 6,267 companies on 1 October 2026, and the Actor reached all 6,267 by splitting searches by batch, because one directory query stops at 1,000 results.
- Founder LinkedIn was filled on 99.4% and founder bio on 93.9%, measured on 80 founders of Latin American YC companies.
- Y Combinator does not publish founder emails, so every founder `emailCandidate` is built from a company pattern rather than read from the page.
- An email pattern was backed by an email the company itself published for 6 of 80 Latin American companies (7.5%) and about 12% of 1,000 companies worldwide.
- A pattern without evidence is marked `inferred: true`, carries a confidence of 0.05 to 0.10 and is never charged; only evidence-backed patterns cost $0.01.
- The Actor checks MX records over DNS and never connects to a mail server, so `catchAll` is always null and no address is verified.
- Founders of companies based in the EU, EEA, UK or Switzerland are withheld by default and released only when the user enables `includeEuPersons`.
What it does
Companies, founders and open jobs from Y Combinator's public startup directory, one row type per run, with domain, LinkedIn, batch, team size and salaries. Each row can carry the company's email pattern, and the row says whether that pattern rests on an email the company published or is a free guess.
{
"rowType": "company",
"companyId": 755,
"name": "Bright",
"url": "https://www.ycombinator.com/companies/bright",
"website": "https://www.thinkbright.mx/",
"domain": "thinkbright.mx",
"oneLiner": "Sunrun for the developing world",
"batch": "Winter 2015",
"batchCode": "W15",
"status": "Active",
"stage": "Growth",
"teamSize": 100,
"industries": ["Industrials", "Energy"],
"location": "New York City, NY",
"country": "US",
"yearFounded": 2014,
"linkedinUrl": "https://www.linkedin.com/company/9506733/",
"foundersCount": 1,
"jobsCount": 0,
"emailPattern": {
"domain": "thinkbright.mx",
"pattern": "first.last",
"confidence": 0.1,
"inferred": true,
"evidenceCount": 0,
"mxValid": true,
"mxHosts": ["aspmx.l.google.com", "alt1.aspmx.l.google.com"],
"emailProvider": "Google Workspace",
"catchAll": null,
"billable": false
},
"detailFetched": true
}Why this one
Observed and guessed are different columns
Every email pattern and every founder email candidate carries `inferred` and a confidence. A pattern backed by an email the company published starts at 0.5 with one matching address and reaches 0.88 with three; a guess sits at 0.05 to 0.10. The row says which kind it is instead of presenting a constructed address as a found one.
Guesses are free
The $0.01 email-pattern event fires only when at least one email the company published supports the pattern. In the default run on 2 October 2026 that was 5 of 50 companies. Charging for the other 45 guesses would have billed a lookup table as if it were evidence.
No SMTP probing
The Y Combinator Scraper resolves MX records to name the mail provider and confirm the domain receives mail, and stops there. Verifying a mailbox means connecting to the mail server and asking about it, which is how sender IPs end up on blocklists, so `catchAll` is always null rather than estimated.
European founders are opt-in
Founder names, bios, links, photos and email candidates for companies based in the EU, EEA, UK or Switzerland are withheld unless `includeEuPersons` is on, and rows say so with `personalDataWithheld: true`. In the development sample that was 66 of 675 founders.
Use cases
- Build a target list of YC startups in one region, batch, industry or tag, with domain, team size and company LinkedIn.
- List the founders of a batch with their LinkedIn and bio, to research decision makers before any outreach.
- Collect open roles at YC companies with structured salary, equity, visa and the hiring manager named on the job page.
- Watch a region or batch on a schedule, sorting by `launchDate` to see the newest companies first.
- Join the directory to other company data on the `domain` column, which is filled on every company row.
Input
Every field has a default, and the defaults are deliberately small so a first run is cheap enough to inspect before you commit to a sweep. This table mirrors the Actor's own input schema field for field.
| Field | Default | What it does |
|---|---|---|
outputTypestring | companies | What one row is`companies`, `founders` or `jobs`. One type of row per run. |
regionsstring[] | ["Latin America"] | Regions or countriesYC's own region tags; any of them matches. Latin America held 221 companies on 1 October 2026. Leave empty for the whole directory. |
querystring | "" | Search textFree text, as in the directory's search box. |
batchesstring[] | [] | YC batchesFull names such as `Winter 2024` or codes such as `W24`, `S25`, `F24`, `X25` for Spring. Checked against the live directory. |
industries / tags / status / stagesstring[] | [] | FiltersOptional. `stages` is applied after the search, because the directory cannot filter by it. |
onlyHiringboolean | false | Only companies that are hiringYC's hiring flag: 1,487 of 6,267 companies, 18 of 221 in Latin America. Always on for the jobs output. |
topCompaniesOnlyboolean | false | Only YC top companiesOnly companies on YC's top companies list (91). |
minTeamSize / maxTeamSizeinteger | null | Team size rangeOptional bounds on the team size YC lists. |
sortBystring | relevance | Order`relevance` or `launchDate`, newest first. |
includeFounders / includeJobsboolean | true | Read the company pageCompanies output: opens each company page for founders, jobs, news and launches. Charged as a company with details at $0.008 instead of $0.003. |
includeJobDetailsboolean | true | Open each job pageJobs output: adds the full description, date posted, structured salary, locations and hiring manager. Charged at $0.006 instead of $0.003. |
inferEmailPatternboolean | true | Find the email patternpersonal dataWorks out the company's email format from emails it published on its YC pages, checks MX over DNS, and builds a candidate per founder. Charged only when backed by an observed email. |
includePersonalEmailsboolean | false | Include personal-domain emailspersonal dataKeeps gmail.com, outlook.com, yahoo.com and similar addresses, which are otherwise removed everywhere. |
includeEuPersonsboolean | false | Include people of EU/EEA/UK/Swiss companiespersonal dataReleases founder and hiring-manager data that is withheld by default. Enabling it makes you responsible for a lawful basis under the GDPR. |
maxItemsinteger | 50 | Maximum rowsRows of the chosen type to deliver and charge, 1 to 10,000. |
maxConcurrencyinteger | 4 | Parallel requestsCompany pages read at once, 1 to 8. |
proxyConfigurationobject | {"useApifyProxy": false} | ProxyNot needed: the directory answers without one. If set, every page goes through it. |
Output and fill rates
A field being in the schema is not the same as it having a value. The percentages below were counted on real runs; the sample sizes are in Measurements. Anything not listed here is not promised.
| Field | Filled | Meaning |
|---|---|---|
domainstring | 100% | With `website`. The join key for every other company dataset. 80 Latin American companies. |
namestring | 100% | With `oneLiner`, `batch`, `batchCode`, `status`, `industries`, `tags` and `regions`, from the directory index. |
teamSizeinteger | 99.7% | As YC lists it. Measured on a wider 310-company sample from the source. |
yearFoundedinteger | 94.5% | 310-company source sample. |
linkedinUrlstring | 93.8% | Company LinkedIn. 80 Latin American companies; 88.1% on the wider 310-company sample. |
crunchbaseUrlstring | 48.8% | With `twitterUrl`, also 48.8%. 80 Latin American companies. |
githubUrlstring | 11.3% | Company GitHub organization. 80 Latin American companies. |
foundersobject[] | 98.8% | Companies with at least one founder listed, 2.3 per company on average. 80 Latin American companies. |
founders[].linkedinUrlstring | 99.4% | Founder LinkedIn. 80 founders. |
founders[].biostring | 93.9% | Founder bio as written on YC. 80 founders. |
founders[].pastCompaniesstring | 48.3% | From Work at a Startup. 80 founders. |
hiringDescriptionstring | 40% | With `techDescription`, filled on 32.5%. 80 Latin American companies. |
contactEmailsstring[] | 25% | Emails the company itself published on its YC pages: Launch posts, descriptions, hiring text. 80 Latin American companies. |
emailPatternobject | not measured | Pattern, confidence, `inferred`, evidence, MX hosts and provider. Backed by evidence for 6 of 80 Latin American companies (7.5%); the rest are guesses marked `inferred: true`. |
emailPattern.mxValidboolean | 92.5% | The domain has MX records. 87.5% of the 80 domains use Google Workspace. |
emailCandidatestring | 91.1% | Per founder, built from the pattern, with `emailCandidateConfidence` and `emailCandidateInferred`. Most are inferred. 80 founders. |
personalDataWithheldboolean | not measured | True on rows where founder data was withheld because the company is based in the EU, EEA, UK or Switzerland. |
jobs[].salaryMinnumber | 95% | With `salaryMax`, `salaryCurrency` and `salaryPeriod`. 95% of Latin American jobs and 70% of Remote jobs, within a 60-job sample. |
descriptionstring | 100% | Jobs output with the job page read, with `hiringManager` also at 100%. 60 jobs. |
Every key is always present. A field that exists but is empty comes back as explicit null, so a parser never has to guess.
Datasets
Different record types go to different datasets, so the main table never carries columns that are blank on most rows.
defaultOne row type per run, chosen by `outputType`: companies with founders and jobs nested, one row per founder, or one row per open job.billedError rowsInputs that matched nothing or pages that could not be read, with the reason.never billed
Pricing
Pay per delivered result. Charges are applied as each row is produced rather than in a lump at the end, so an aborted run bills only for what it actually gave you.
| Event | Price | Notes |
|---|---|---|
apify-actor-startActor start | $0.00001 | Charged per gigabyte of run memory, minimum one event. A run whose filters match nothing costs only this. |
companyCompany (directory data) | $0.003 | One company from the directory index without its page read: name, website, domain, one-liner, batch, status, stage, team size, industries, tags and regions. |
company-detailCompany with founders and jobs | $0.008 | One company with its page read: founders, open jobs, LinkedIn, X, Crunchbase and GitHub links, location, news and launches. The default. |
founderFounder | $0.004 | One founder row: name, title, bio, LinkedIn, X, past companies, an email candidate built from the company pattern, and the company's domain, batch and size. |
jobJob posting | $0.003 | One open role from the company page: title, location, remote, type, salary and equity range, visa, experience and skills. |
job-detailJob posting with full description | $0.006 | A job with its own page read: full description, date posted, structured salary, locations and the hiring manager. |
email-patternCompany email pattern | $0.01 | Once per domain, only when at least one email the company published backs the pattern. A guess without evidence is free and marked inferred. |
Measurements
Each figure is shown with the method that produced it. A benchmark without a method is a marketing claim wearing a number's clothes.
Directory size
6,267 companies; 221 Latin American; 1,487 hiring
Counted from YC's public directory index on 1 October 2026, as reported in the Actor's README. 18 of the 221 Latin American companies were hiring.
Fill-rate sample
80 companies, 80 founders, 60 jobs
Latin American YC companies with their pages read, from the Actor's own output, 1 October 2026. Every per-field rate on this page comes from that sample unless the field says otherwise.
Evidence-backed email pattern
6 of 80 companies (7.5%)
A company counts when at least one email it published on its YC pages matches a founder's or hiring manager's name. The README reports about 12% on 1,000 companies worldwide and 38 of 500 (7.6%) in a whole-directory platform run.
Wider source sample
310 companies
Company LinkedIn 88.1%, team size 99.7%, year founded 94.5%, news coverage 47.4%, Launch posts 23.5%, open jobs 30% of companies, read from the source itself.
Blocks from Apify servers
0 of 2,177 requests
14 runs on 2 October 2026 at 512 MB, without proxy. No request was blocked or rate-limited.
Whole-directory reach
6,267 of 6,267 companies
One directory query stops at 1,000 results, so large searches are split by YC batch automatically.
Default run cost
$0.45 for 50 companies
Run on the Apify platform on 2 October 2026: 50 × $0.008 for companies with details plus 5 evidence-backed patterns × $0.01. Took 10 seconds and peaked at 78 MB.
Founders withheld by default
66 of 675 founders
Founders of companies based in the EU, EEA, UK or Switzerland in the development sample of 1 October 2026, recorded in the Actor's legal notes.
What it will not do
Stated plainly so you can judge fit before spending anything.
- One directory query returns at most 1,000 results. The Actor splits large searches by batch, which reached 6,267 of 6,267 companies, but a single filtered query cannot see past 1,000.
- Email candidates are mostly inferred: 91.1% of founders got one, while only 7.5% of companies (6 of 80) had a pattern backed by evidence. Check `emailCandidateInferred` and `emailCandidateConfidence` before using one.
- No address is verified. The Actor reads MX records and never connects to a mail server, so `catchAll` is always null.
- The `stages` filter is applied after the search, because the directory cannot filter by stage, so a stage-filtered run reads more than it delivers.
- The jobs output always restricts to hiring companies, and only 18 of the 221 Latin American companies were hiring on 1 October 2026.
- Past companies come from Work at a Startup and were filled for 48.3% of founders; company X and Crunchbase links for 48.8% of companies.
- Separate runs are independent: a company delivered by two runs is charged in each.
- Y Combinator's site terms prohibit scraping and ask a blocked visitor not to circumvent the block. The Actor connects directly and measured 0 blocks in 2,177 requests, and its README states that it switches to a fresh session if the site starts blocking.
Privacy
- Founders and hiring managers are natural persons, so founder rows are personal data under the GDPR whatever the professional context.
- Founder and hiring-manager data for companies based in the EU, EEA, UK or Switzerland is withheld by default; enabling `includeEuPersons` makes the user responsible for a lawful basis under the GDPR.
- Emails at personal domains such as gmail.com and outlook.com are removed everywhere, including inside descriptions, unless `includePersonalEmails` is enabled.
- Email candidates are constructions, marked with their confidence and whether they are inferred. The README warns against bulk email.
- Image links are delivered without their temporary signature, and video links are not delivered at all.
- Removal requests: privacy@actorstack.dev
See also the data removal process.
Frequently asked questions
Are the founder email candidates verified?
Why is the founder's actual email not in the row?
Can I get every company in the YC directory?
What does a run cost?
Why are some founders missing from the output?
Do I need a proxy to scrape the YC directory?
Guides for this Actor
- Stated vs inferred company dataCompany data comes in three layers — what a source publishes, what can be derived from it, and what is constructed from a rule. Two Actors, and how each one labels which layer a value came from.
- Scrape the YC companies listExporting YC companies, founders and jobs from the public directory: one row type per run, the 1,000-result ceiling and the batch split that gets past it, measured fill rates, and what a founder email candidate actually is.