Piotr VassevPiotr Vassev

How to Scrape Y Combinator Companies and Startup Jobs

The Y Combinator directory is useful when you know the list you want: recent B2B companies, active European startups, or teams currently hiring engineers. The difficult part is turning that filtered directory into rows you can compare and refresh later.

Our Y Combinator Scraper has two modes. Companies returns one row per matching YC company. Jobs returns one row per open role at matching hiring companies. You can optionally enrich company rows with founders and social links, enrich job rows with full descriptions, or track what changed between runs.

No YC account or session is required. The output reflects the public directory at collection time; it does not independently verify company status, headcount, salary, or hiring claims.

Y Combinator companies, founders, and startup jobs

Pick companies or jobs first

Use Companies when the outcome is an account list, market map, or startup research table. Available filters include batch, industry, region, status, hiring flag, Top Company flag, and free-text search.

Use Jobs when the outcome is a role shortlist. The same company filters apply, followed by a job-role category and optional location text such as Remote, London, or New York.

Turn on Scrape details only when the extra fields matter:

ModeStandard rowDetail row
CompaniesName, website, batch, status, industry, tags, location, team size, hiring flagAdds founders, founder profiles, company social links, year founded, launches, and press
JobsRole, company, location, remote flag, salary, equity, experience, visa, skills, apply linkAdds the full description and interview process

Export one YC batch

  1. Open the Actor on Apify and click Try for free.
  2. Set What to collect to Companies.
  3. Enter Summer 2026 under Batches.
  4. Leave Scrape details and Track changes between runs off for the first export.
  5. Keep Max items at 50, then click Start.
  6. Open Results to inspect the rows. Export JSON when you need arrays such as tags, regions, and former names intact.

We used this input for the launch example:

{
  "mode": "companies",
  "batches": ["Summer 2026"],
  "status": "any",
  "isHiring": false,
  "topCompany": false,
  "scrapeDetails": false,
  "trackChanges": false,
  "maxItems": 50
}

One company row in that export was:

{
  "type": "company",
  "id": 33969,
  "name": "OpenTag",
  "url": "https://www.ycombinator.com/companies/opentag",
  "oneLiner": "Model Agnostic AI coworker in Slack",
  "website": "https://www.tryopentag.com/",
  "batch": "Summer 2026",
  "status": "Active",
  "stage": "Early",
  "industry": "B2B",
  "location": "San Francisco, CA, USA",
  "teamSize": 3,
  "isHiring": false,
  "scrapedAt": "2026-09-19T11:12:21.164Z"
}

Y Combinator company records in the Apify Console

The Y Combinator Node.js example runs the same batch export with apify-client and retrieves the resulting dataset.

Build a list you can actually review

For a sales or market-research list, keep the first run narrow. A useful sequence is:

  1. Filter by one batch, industry, or region.
  2. Remove companies whose status, stage, or location does not fit the task.
  3. Review oneLiner, tags, website, and team size before paying for detail rows.
  4. Rerun the smaller filter with scrapeDetails: true when founder and company-profile links are needed.

Founder emails are not present in the public directory and are not collected. If you need to identify current people by role after choosing the right accounts, use the LinkedIn decision-maker guide as a separate verification step.

Switch to startup jobs

Jobs mode always starts from hiring companies that match your company filters. This documented input looks for remote engineering roles at active B2B companies:

{
  "mode": "jobs",
  "industries": ["B2B"],
  "status": "Active",
  "role": "eng",
  "location": "Remote",
  "scrapeDetails": false,
  "maxItems": 50
}

Keep scrapeDetails off while testing the filter. Standard rows already include the company, location, remote flag, salary and equity ranges when published, experience, visa text, skills, and apply URL. Turn details on only when the full description or interview process belongs in your workflow.

Salary and equity values are source text. Compare them only after checking location, employment type, experience, and currency context. Before applying, reopen the job page because a collected role can change or close.

Track only what changed

Set trackChanges to true and give the filter a stable memoryName. The first run saves a baseline and returns the matching rows normally. Later runs with the same name and filters return:

  • Full rows for new companies or jobs.
  • Company field changes with field, from, and to values.
  • Companies or jobs that disappeared after a complete scan.

Use a different memory name for every distinct watch. Do not reuse one tracker across unrelated batches or filters. A removal is reported only after a complete scan; the Actor skips removal claims when source pages could not be collected reliably.

Pricing

As of September 20, 2026, pricing uses alternative row types, not stacked standard and detail fees:

Returned rowPrice
Company$0.002
Company with details$0.005
Job$0.002
Job with details$0.004
Change$0.001
Actor start$0.00005

For example, 50 standard company rows cost $0.10005 including one start event. Fifty company detail rows cost $0.25005. A later tracking check that returns no rows incurs only the start event. Check the live pricing page before scheduling a broad watch.

Common mistakes

  • Mixing company and job fields. Choose the mode first; a company row and a job row have different purposes.
  • Enriching everything immediately. Test the filters with standard rows, then enable details for the smaller set you will use.
  • Changing a tracking filter silently. Keep the same memory name and filters for one watch. Create another name for a different scope.
  • Treating directory data as verified company reporting. Use the source URL and scrapedAt value, then verify important decisions independently.
  • Comparing salary strings without context. Keep role type, location, remote status, experience, and visa fields with the salary.

Frequently asked questions

Do I need a Y Combinator account to use the scraper?

No. The Actor collects public YC company-directory and Work at a Startup data without a login. Applying for a job still follows the destination site's own process.

What is the difference between companies mode and jobs mode?

Companies mode returns one row per matching YC company. Jobs mode returns one row per open role at hiring companies that match the same company filters.

What happens on the first change-tracking run?

The first run saves a baseline and returns the matching rows normally. Later runs with the same tracker name and filters return new records, field-level changes, and confirmed removals.

Piotr Vassev

Piotr Vassev

Founder of FalconScrape. Building production-grade web scraping systems and data automation pipelines for businesses worldwide.

Connect on LinkedIn