Ycombinator icon

Ycombinator

Pull every ycombinator.com company across every batch, with founders, social URLs, application Q&A, demo-day video, photos, and partner. Filter by 14…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Ycombinator at a glance

Ycombinator is a ready-to-run Apify actor from abotapi for collecting developer tools data. Its documented output includes id, slug, company, url and pitch, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $0.80 per 1,000 results on the Apify Free plan, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Developer Tools, Lead Generation, Automation
Pricing
$0.80 per 1,000 results (Free plan)
Output
Documented below · JSON, CSV, Excel
Inputs
30 options
Run success
100.0% of completed public runs in the last 30 days

Pull every ycombinator.com company across every batch, with founders, social URLs, application Q&A, demo-day video, photos, and partner. Filter by 14 dimensions or paste any /companies search URL straight from your browser.

What Ycombinator $0.8💰 Companies Scraper can do

  • Deep company profiles. 50+ fields per company when detail fetching is on: founders with bio, title and social links, LinkedIn, Twitter, Crunchbase, GitHub and Facebook URLs, demo-day and application videos, application answers, photos, and the primary YC partner.
  • Open roles and coverage. Job postings with title, location, salary range, equity range, visa notes and an apply URL, plus news mentions and Launch YC product launches.
  • 14 filter dimensions. Free-text query, batch, industry, subindustry, region, tag, status, funding stage, hiring-only, top-ranked, nonprofit, and public-media flags, all combinable in one search.
  • Two ways in. Build filters in the input form, or paste any /companies search or company URL copied from a browser (multiple URLs supported in one run).
  • Streaming output. Each company is written to the dataset as soon as it's collected, so a stopped run still keeps everything found so far.
  • Resumable at two levels. A killed or migrated run picks itself back up automatically without re-charging for companies already saved, and a brand-new run can continue a previous one by ID.

Choose what to collect

These inputs let you configure Ycombinator $0.8💰 Companies Scraper. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch mode = configure filters below. URL mode = paste any /companies search URL already refined in a browser (recommended for complex filters).

Choices: search, url

querystringOptional keyword search across company name, one-liner, and description. Leave blank to match all companies.
batchesarrayFilter by YC batch. Accepts full names (Winter 2024, Summer 2023) or short codes (W24, S23, F25, X26 for Spring). Multiple values are OR'd. Leave empty for all batches.
industriesarrayTop-level industry. Multiple values are OR'd.
subindustriesarrayRefined industry tag (e.g. 'Fintech -> Payments', 'Healthcare -> Therapeutics'). Multiple values OR'd. See ycombinator.com/companies for the full list.
regionsarrayHQ region or country. Examples: 'United States of America', 'Europe', 'Remote', 'India', 'Latin America'. Multiple values OR'd.
tagsarrayTopic tags. Examples: 'SaaS', 'Artificial Intelligence', 'Developer Tools', 'Marketplace', 'Crypto / Web3'. Multiple values OR'd.
Show 23 more inputs
More input fields
InputWhat it controls
statusesarrayCompany status filter. Multiple values OR'd.
stagesarrayFunding / maturity stage. Multiple values OR'd.
isHiringbooleanOnly return companies with active job postings.
topCompanybooleanOnly YC top-ranked companies (~91 of ~5,800).
nonprofitbooleanOnly nonprofit companies (~42 of ~5,800).
hasDemoDayVideobooleanOnly companies with a public demo-day video.
hasAppVideobooleanOnly companies whose YC application video is public.
hasAppAnswersbooleanOnly companies whose YC application answers are public.
sortBystringResults are ordered by 'relevance' by default; 'launch-date-desc' surfaces the newest companies first.

Choices: relevance, launch-date-desc

urlsarrayOne or more YC URLs: search pages (/companies?batch=...?query=...&sortBy=created_at_desc?isHiring=true&top_company=true?page=N?industry=Healthcare?regions=Europe?tags=SaaS), industry pages (/companies/industry/fintech), location pages (/companies/location/san-francisco or /india), and company pages (/companies/airbnb, /companies/dropbox/jobs, numeric /companies/531, apex-host ycombinator.com). The founders directory is not supported and is skipped with a warning. Filter-mode fields above are ignored.
fetchDetailsbooleanWhen ON (default), the scraper fetches each company's profile page and adds founders, social URLs (LinkedIn, Twitter, Crunchbase, GitHub, Facebook), application Q&A, demo-day video, photos, partner, jobs, news, launches, year founded, city. Adds ~1 HTTP call per company. Turn OFF only if you want a fast SERP-only run.
fetchJobDetailsbooleanWhen ON, each open job posting also gets its full description text and a remote flag (one extra page fetch per posting; needs 'Fetch full detail page' ON). Skills, salary, equity, experience and visa are always included in jobPostings. Default OFF.
maxListingsintegerMaximum number of companies to collect. 0 = unlimited (all ~5,800 across the public index).
maxPagesintegerOptional bound on search pages walked per query (each page returns up to 100 hits). Leave empty to walk every result page until maxListings is hit or the result set ends.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a full-catalogue walk across separate runs. Companies already collected there (matched by objectID) are skipped, so this run only saves the new ones. Leave empty for a normal fresh run. Do not combine with Incremental mode below unless this is the very first incremental run for a new state key, the two solve different problems (one interrupted run vs. recurring monitoring of the same search).
incrementalModebooleanFor a search/URL set you run on a schedule (e.g. daily). The actor remembers the companies it saw last time and labels every row's changeType: NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED (only when 'Emit expired' is on). Distinct from 'Resume from a previous run' above, which continues one interrupted run instead of tracking a recurring search. Off by default so a normal run's output shape is unchanged.
stateKeystringNames the saved baseline this run compares against. Leave empty to auto-derive one from your filters/URLs (so two different searches never share a baseline). Set your own value if you want multiple scheduled runs of the SAME search to intentionally share one baseline, or to give a search a stable name across small filter tweaks.
emitUnchangedbooleanWhen ON, incremental mode also pushes companies with no detected change (changeType=UNCHANGED). Off by default: a quiet run returns only what's new or changed. Turning this on returns, and bills, a row for every tracked company, every run.
emitExpiredbooleanWhen ON, incremental mode pushes a changeType=EXPIRED row for any previously-tracked company no longer found, but ONLY after a run that scanned the full tracked search with no cap/page limit cutting it short and no resumeFromRunId (a partial scan can never prove a company is really gone). Off by default: this also bills one extra row per expired company.
ignoreFieldsForChangesarrayField names to leave out when deciding whether a company changed, so a change in them alone never produces an UPDATED row (they are still returned in every row). Use a top-level name such as photos, or a dotted path such as founders.linkedinUrl to ignore a key inside every element of a list. scrapedAt is always ignored. Changing this list never causes a one-time wave of UPDATED rows.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

idID
slugSlug
nameCompany
urlURL (link)
oneLinerPitch
changeTypeChange type (incremental mode)
batchBatch
batchNameBatch Name
statusStatus
stageStage
industryIndustry
subindustrySubindustry
Show 28 more fields
tagsTags
regionsRegions
allLocationsLocations
cityCity
teamSizeTeam
yearFoundedFounded
isHiringHiring
topCompanyTop
nonprofitNonprofit
hasAppVideoAppVid
hasDemoDayVideoDDayVid
hasQuestionAnswersQ&A
websiteWebsite (link)
logoUrlLogo (image)
linkedinUrlLinkedIn (link)
twitterUrlTwitter (link)
crunchbaseUrlCrunchbase (link)
githubUrlGitHub (link)
founderCountFounders
jobPostingCountJobs
newsCountNews
launchCountLaunches
scrapedAtScraped
changedFieldsChanged fields (incremental mode)
firstSeenAtFirst seen (incremental mode)
lastSeenAtLast seen (incremental mode)
foundersFounders
jobPostingsjobPostings

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": 12345,
  "slug": "example-co",
  "objectID": "12345",
  "name": "Example Co",
  "url": "https://www.ycombinator.com/companies/example-co",
  "oneLiner": "One sentence company pitch.",
  "longDescription": "Longer multi-paragraph description from the application.",
  "website": "https://example.com",
  "batch": "W24",
  "batchName": "Winter 2024",
  "status": "Active",
  "stage": "Seed",
  "industry": "B2B",
  "subindustry": "B2B -> Productivity",
  "industries": [
    "B2B",
    "Productivity"
  ],
  "tags": [
    "SaaS",
    "AI"
  ],
  "regions": [
    "United States of America",
    "Remote"
  ],
  "allLocations": "San Francisco, CA, USA; Remote",
  "teamSize": 8,
  "yearFounded": 2024,
  "launchedAt": 1700000000,
  "isHiring": true,
  "topCompany": false,
  "nonprofit": false,
  "logoUrl": "https://bookface-images.s3.us-west-2.amazonaws.com/logos/0000000000000000000000000000000000000000.png",
  "location": "San Francisco, CA, USA",
  "city": "San Francisco",
  "country": "United States",
  "linkedinUrl": "https://www.linkedin.com/company/example-co",
  "twitterUrl": "https://twitter.com/example_co",
  "crunchbaseUrl": "https://www.crunchbase.com/organization/example-co",
  "githubUrl": "https://github.com/example-co",
  "primaryGroupPartner": {
    "id": 1,
    "fullName": "Partner Name",
    "url": "https://www.ycombinator.com/people/partner-name",
    "avatarUrl": "https://example-cdn.ycombinator.com/avatars/partner.jpg"
  },
  "founders": [
    {
      "fullName": "Founder Name",
      "title": "CEO",
      "bio": "Founder bio text.",
      "linkedinUrl": "https://www.linkedin.com/in/founder-name",
      "twitterUrl": "https://twitter.com/founder_name",
      "isActive": true
    }
  ],
  "founderCount": 1,
  "jobPostings": [
    {
      "title": "Senior Engineer",
      "location": "Remote",
      "type": "Full-time",
      "role": "eng",
      "salaryRange": "$140K - $180K",
      "equityRange": "0.10% - 0.50%",
      "visa": "Open to all",
      "applyUrl": "https://www.workatastartup.com/jobs/0000"
    }
  ],
  "jobPostingCount": 1,
  "newsItems": [
    {
      "title": "Article title",
      "url": "https://example.com/article",
      "date": "Jan 01, 2026"
    }
  ],
  "newsCount": 1,
  "launches": [
    {
      "title": "Launch announcement title",
      "body": "Body of the Launch YC post."
    }
  ],
  "launchCount": 1,
  "scrapedAt": "2026-01-01T00:00:00.000Z"
}

Ways to use this data

  • Recruiting and talent sourcing: filter hiring companies by industry, region or stage and pull their open roles in one pass.
  • Investor and market research: scan a batch or stage for company counts, industries and funding stage mix.
  • Sales and partnership prospecting: build lead lists by industry, region or tag, with founder names and company sites.
  • Founder benchmarking and competitive tracking: compare peer companies in the same subindustry or batch.
  • Journalism and content: track Launch YC announcements and news mentions as they appear.
  • Recurring monitoring: schedule a saved search and get only the companies that are new, changed, or newly listed since the last run.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Ycombinator return?

The documented output for Ycombinator includes id, slug, company, url, pitch, change type (incremental mode), batch and batch name. Availability of each field depends on the source page and the selected mode.

How much does Ycombinator cost?

It costs $0.80 per 1,000 results on the Apify Free plan, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed companies on a schedule?

Yes. Schedule the actor from the Schedules tab with the same filters or URLs each time, and turn on Incremental mode. Each run then labels every company NEW, UPDATED, UNCHANGED (not returned unless you turn that on), and, only after a run that scans the whole tracked search with nothing cutting it short (a search over 1000 matches is split into per-batch slices, newest batch first, only when the item limit is unlimited or above 1000; a capped run or one that cannot be split never writes EXPIRED), EXPIRED. A company only comes back as REAPPEARED if an earlier complete scan had already marked it EXPIRED and it shows up again later.

What's the difference between "Resume from a previous run" and "Incremental mode"?

Resume from a previous run continues one specific interrupted or capped run: paste its run or dataset ID and this run appends only the companies it hasn't already saved. Incremental mode is for monitoring the same search or URL set over time on a schedule; it remembers state itself and classifies every row. Don't combine the two for a search that already has saved incremental state, the run stops with an error rather than guessing which baseline to use.

Why did my run fail instead of returning an empty dataset?

An empty dataset usually means your filters or URLs matched nothing, or requests were quietly refused for part of the run; this actor does not fail the whole run for that, it saves whatever it managed to collect, which can be nothing. Try loosening your filters or running again. If not a single results page could be loaded, the run ends FAILED (not empty) with "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search." An actual failed run happens only for a handful of clear input problems: a Resume from a previous run ID that doesn't match any run or dataset this account can read, combining that field with an incremental search that already has saved state, or URL mode with no usable URL. A malformed entry, a non-Y Combinator address, an unknown industry page or the founders directory is skipped with a warning that names it, and the run fails only when no usable URL is left (an explicitly empty list included), so check the log if rows are missing.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Ycombinator?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.