YC company scraping agent

Every new YC startup becomes a founder you can reach out to.

Reaching out to newly launched YC companies means first finding them and their founders’ contact details, over and over, as new batches launch. Done by hand it means re-browsing the same directory, and someone has to remember which companies were already looked at so the same one is not read twice.

Running on our own company since Oct 13, 2026 · YC website · Risk: Medium. This page is public; the full list it collects is visible to signed-in team accounts via the button above.

Goes inThe YC companies directory, sorted by launch date — up to 10 companies not already recorded
Comes outOne row per founder in the tracked leads file, each with whichever of LinkedIn, Twitter and email the company’s own page exposed
Human stepNobody, unless a run errors on a specific company — that company is skipped and reported, nothing is retried on its own
Runs onA machine you control, through a Chrome profile with remote debugging on — no account needed, the YC directory is public
Latest batch9 companies processed, 22 founders found, 22/22 with a LinkedIn URL

Tasks and outputs

What it takes on

List and dedupe

Sorts the YC directory by launch date and drops every company already in the tracked leads file, keyed by YC slug.

Up to 10 new companies

Read each company page

Opens each new company’s own page and reads founder name, LinkedIn, Twitter and email straight out of its HTML.

Founder details

Record and publish

Appends one row per founder, regenerates the website’s JSON copy, commits and pushes both files, and triggers the deploy.

Leads file + public log

Who it is for: Teams doing outbound into the YC population who want a standing, de-duplicated list of newly launched companies and their founders’ public contact details, fed to whoever follows up.

How we use it: Live since October 2026, in batches of up to 10 new companies per run — the run log below shows every batch so far. Its output feeds the LinkedIn connect agent directly: every founder it records with a LinkedIn URL is a candidate for a connection request.

This is the same build-it-or-we-run-it model behind our AEO work. See your own AI visibility baseline

tools/yc-leads/collect-leads.mjsCollection and dedup rules of the script

What gets collected, and what does not

01Up to 10 companies not already in the tracked leads file, sorted by YC launch date, newest first.

02Dedup is a plain read of the tracked leads file, keyed on YC slug — no external query, no network call beyond the YC pages themselves.

03Founder name, LinkedIn URL, Twitter/X URL and email are read only from hrefs already present in the company’s own YC page — never navigated to, never guessed, never looked up elsewhere.

04A company whose page has no identifiable founder is skipped and reported, not recorded with blank rows.

05A company whose page errors is skipped and reported; the rest of the batch continues.

Read from the scriptBatch of 10 per run

The rules the agent’s output is written to, from the file named above. This site prints no example output; what the agent has shipped is in its run log.

Workflow

How a run goes, step by step

Pick a step to see what goes in, what comes out, and where a person is involved.

Step 1 of 5

List by launch date

Opens the YC companies directory, sorts it by launch date, and scrolls until enough candidates are loaded to cover the batch size after already-recorded companies are filtered out.

Goes in

ycombinator.com/companies

Comes out

A list of company slugs and detail-page URLs

Where a person steps in

Nobody. If the page layout has changed enough that no companies load, the run stops and reports it.

Step 2 of 5

Dedupe against the tracked leads file

Reads every row already in the tracked leads file and keeps only companies whose YC slug is not already present, up to 10.

Goes in

The company list, and the tracked leads file

Comes out

Up to 10 new companies

Where a person steps in

Nobody. If every candidate is already recorded, the run reports zero new companies and stops.

Step 3 of 5

Read each founder

Visits each new company’s own page and, for each name matching a founder title, looks for a LinkedIn, Twitter or mailto link in the same part of the page and records whichever are present.

Goes in

Each company’s detail page

Comes out

Zero or more founders per company, each with whatever contact links its own page exposed

Where a person steps in

Nobody. A company with no identifiable founder is recorded as skipped, not as empty rows.

Step 4 of 5

Record and export

Appends one row per founder to the tracked leads file, then regenerates the JSON copy the website reads so the two never drift apart.

Goes in

The founders found this run

Comes out

New rows in tools/yc-leads/yc-leads.md and web/content/yc-leads.json

Where a person steps in

Nobody in this step.

Step 5 of 5

Commit, push, deploy

Commits only the tracked leads file and its JSON export, pushes, and triggers the deploy that puts the batch on the public run log.

Goes in

The two changed files

Comes out

A live deploy reflecting the new batch

Where a person steps in

When the push conflicts with a concurrent edit (most likely the LinkedIn connect agent editing the same file): a person resolves it by hand.

Before you start

What you’ll need to bring

Company material

Nothing company-specific — this agent reads YC’s public directory, not anything about your own company.

Source material

None beyond the YC companies directory itself, which is public.

Platform account

None. The YC directory needs no login.

Run environment

A machine that can keep that Chrome open during runs, Node.js for the publishing script, and an agent runner that follows a written workflow. We use Claude Code.

Run log

Recent runs, as they happened

The full log is public and read-only. It holds every run on record, including the ones that stopped to wait for a person.

View the full run log

Guides and files

Set it up yourself

The setup guide, and the files the agent is built from. You run it in your own environment, with your own accounts.

Open · no account neededFour Node scripts: the page scraper, the founder-detail extractor, the shared read/write module for the tracked leads file, and the JSON export step, plus the wrapper that runs them in order. All four attach to an already-open Chrome over the DevTools protocol — the YC directory needs no login, so any signed-in profile works. Not packaged for public download yet — the setup guide below describes what they do; the managed tier runs it for you today.
Setup guide
  1. 01

    Runtime

    • Node.js, with the dependencies installed in the scripts’ folder (a browser driver; no markdown or API client needed since the system of record is a plain file).
    • An agent runner that follows a written workflow, the same shape as the LinkedIn and Reddit posting agents — ours is Claude Code, run on demand today rather than on a fixed schedule.
  2. 02

    Browser setup

    • A Chrome started with remote debugging on a fixed port, any profile. The YC companies directory is public, so unlike the social-posting agents this one needs no account signed in to that specific Chrome window.
  3. 03

    Account setup

    • None. Reading the YC directory and company pages needs no account; nothing here signs in anywhere.
  4. 04

    Configuration

    • The tracked leads file’s location and column order — fixed today, not meant to be reconfigured per run.
    • The batch size (10 new companies per run) and the over-fetch cap used when sorting past already-recorded companies.
  5. 05

    First run

    • Run the batch script once and read the tracked leads file afterward: confirm the new rows have the right company, founder, and whichever of LinkedIn/Twitter/email the company’s page actually exposed.
    • Run the JSON export step and confirm the generated file matches the tracked leads file row for row.
    • Run the batch a second time with no new YC launches in between, and confirm it records zero new rows — the dedup check working as intended.
Files · 5

collect-leads.mjs

Script · Node. Lists companies by launch date, dedupes, reads each founder, appends new rows.

Script

extract-founders.mjs

Script · Node. Reads founder name, LinkedIn, Twitter and email off one company’s own page.

Script

leads-md.mjs

Module · Node. Shared read/write access to the tracked leads file — the one place that parses it.

Module

export-to-web-json.mjs

Script · Node. Regenerates the website’s JSON copy of the tracked leads file.

Script

yc-leads.md

Leads file · Markdown. The system of record: one row per founder, with Owner and Status columns the LinkedIn connect agent and manual edits update.

Leads file

Not packaged for public download yet. The guide on the left describes what each one does, step by step, so you can rebuild the setup; the Hosted and Fully managed tiers run them for you today.

Rather have us run it?

Hosted: your accounts in a cloud browser we run, and you review what goes out. Fully managed: we set the strategy and run the agents.

Good to know

Where it stops and asks for you

  • A company’s page has no identifiable founder. That company is recorded as skipped, not as blank rows, and the batch continues with the next company.
  • A company’s page errors while loading. That company is recorded as an error with a screenshot saved, and the batch continues.
  • Every candidate company is already recorded. The run reports zero new companies and stops before writing anything.
  • Two agents try to update the leads file at the same time. The run stops rather than guess which edit should win — a person merges it by hand, so nothing is silently overwritten.

Risk notice

What to watch for

  • Only what a company chooses to put on its own public YC page is collected — no lookup, no guessing, no third-party data source. Coverage is therefore uneven by design: some founders show no LinkedIn, Twitter or email at all.
  • A YC page redesign can silently reduce what gets found on future runs without erroring; this is the same maintenance burden every browser-driven agent in this list carries.
  • The tracked leads file is edited by both this agent and the LinkedIn connect agent. Running them back to back rather than at the same time avoids a write race; there is no file locking.

FAQ

Questions about this agent

Most founders show no email at all.

Expected. Email is read only from a mailto: link a company happens to put on its own YC page — most do not. LinkedIn and Twitter are far more commonly present.

A company’s founder cards are not being found.

The extractor looks for a founder title near a LinkedIn, Twitter or mailto link in the page’s own markup. A YC page redesign can change that structure enough to need an update; the company is skipped for that run rather than recorded with missing data.

The same company shows up twice.

Should not happen — dedup is a plain check against every row already in the tracked file, keyed on YC slug. If it does, check whether two runs wrote to the file at the same time without one finishing first.

Would you rather we ran this agent for you? There is a managed service for that.

Talk to us