Y Combinator · YC · Only $1💰 · Jobs & Companies scraper avatar

Y Combinator · YC · Only $1💰 · Jobs & Companies scraper

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Y Combinator · YC · Only $1💰 · Jobs & Companies scraper

Y Combinator · YC · Only $1💰 · Jobs & Companies scraper

Y Combinator Jobs & Companies Scraper covers both YC companies and open roles - batch, industry, regions, team size, stage, top-company and hiring flags, launch date, website and tags. 🚀 Dual-mode startup intelligence in one run.

Pricing

from $1.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Hub

Scrapers Hub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

🚀 Y Combinator Jobs & Companies Scraper – YC Startup Directory, Hiring & Salary Data

The Y Combinator Jobs & Companies Scraper extracts structured data from both halves of the YC ecosystem: the Work at a Startup job board and the YC startup directory. Switch mode to jobs and you get job listings with salary ranges, equity ranges, required experience, visa policy, skills and the hiring company. Switch it to companies and you get the startup directory — batch, industry, team size, stage, region, launch date, website and long description — with optional founder details, open roles and best-effort contact emails layered on top.

Y Combinator's portfolio is one of the most-watched datasets in technology. Investors track which sectors each batch is weighted towards, recruiters mine Work at a Startup for openings that never reach the big job boards, sales teams build lists of newly funded companies before anyone else is calling them, and job seekers want salary and equity bands they can compare. This YC scraper gives all of them the same underlying data in a form that can be filtered, joined and monitored over time.


📊 What Data Can You Extract with This Y Combinator Scraper?

The actor emits two record shapes depending on mode. Grouped by theme, the available fields cover:

CategoryFieldsWhat you get
🏢 Company identityid, slug, name, url, website, logo, formerNamesThe YC company record, its directory URL, its own website and branding assets
🏷️ Company classificationbatch, industry, subindustry, industries, tags, stage, status, nonprofit, topCompanyHow YC categorises the startup, including batch, sector taxonomy and top-company flag
📍 Company profileoneLiner, longDescription, teamSize, regions, allLocations, launchedAt, isHiringThe pitch, the narrative description, headcount, geography and hiring status
💼 Job listing coretitle, role, roleSpecificType, prettyRole, type, location, skillsThe role as posted, its category, employment type, location and listed skills
💰 Compensation & requirementssalaryRange, equityRange, minExperience, minSchoolYear, visaPay band, equity band, experience floor and visa eligibility as published
🔗 Job application routingapplyUrl, ctaUrl, hiringManager, createdAt, lastActive, isIncompleteWhere to apply, who is hiring, and how fresh the posting is
🏭 Job's employer contextcompanyName, companyBatchName, companyOneLiner, companyUrl, companyLogoUrlThe hiring startup attached to each job record
🧭 Run metadatascrapedAt, isNew, sourceRole, sourceLocation, demoDayVideoPublic, appVideoPublicWhen the record was captured, whether it is new since the last run, and which query produced it

The standout field for most users is salaryRange, paired with equityRange and minExperience. YC job postings publish compensation openly far more often than the wider market does, which makes this one of the few places you can benchmark startup pay by role and seniority using primary data rather than survey estimates.


🌟 Key Features of the Y Combinator Scraper

FeatureDescription
🔀 Dual modeOne actor covers both Work at a Startup job listings and the YC company directory via the mode input
🎛️ Rich directory filteringFilter companies by batch, industries, regions, team size range, isHiring, nonprofit and topCompany
🔗 Direct URL targetingstartUrls accepts company search pages, individual company pages or job-role pages and overrides mode defaults
👥 Founder enrichmentscrapeFounderDetails pulls founder names, titles, bios and social links from each company page
📋 Per-company open rolesscrapeOpenJobs fetches the live job postings listed on each company's YC page
📧 Best-effort email enrichmentenrichEmails visits each company's own website looking for a public contact or mailto address
🔔 Change monitoringmonitoringMode compares against the previous run via the key-value store and tags each item with isNew
⚙️ Concurrency controlmaxConcurrency, minConcurrency and maxRequestRetries let you tune throughput against reliability
💰 Open compensation dataJob records carry salaryRange, equityRange, minExperience and visa exactly as published

🚀 Why Choose This Y Combinator Scraper?

Two datasets, one consistent interface. Jobs and companies are usually scraped by separate tools with incompatible outputs. Here they share an input schema and a dataset, so joining a job's companyName back to a company record from a second run is trivial.

Filtering happens at the source, not after export. Batch, industry, region, team size and hiring status are all applied as part of the directory query. You are not downloading five thousand companies to keep forty — you request the slice you want.

Monitoring is built in. With monitoringMode enabled, the actor diffs each run against the previous one and stamps every record with isNew. That turns a scraper into a change feed: new batch members, newly opened roles, companies that just started hiring.

Enrichment goes beyond the listing page. scrapeFounderDetails, scrapeOpenJobs and enrichEmails each fetch additional pages to attach founder profiles, live openings and public contact addresses — the fields that turn a directory dump into a workable prospect or candidate list.


📥 Input

{
"mode": "jobs",
"startUrls": [],
"role": "software-engineer",
"location": "san-francisco",
"batch": ["All Batches"],
"industries": ["All industries"],
"regions": ["Anywhere"],
"minEmployeeSize": "1+",
"maxEmployeeSize": "1000+",
"isHiring": false,
"scrapeOpenJobs": false,
"scrapeFounderDetails": false,
"enrichEmails": false,
"monitoringMode": false,
"maxItems": 100,
"maxConcurrency": 10,
"proxy": { "useApifyProxy": true }
}

🔧 Y Combinator Scraper Input Fields

FieldTypeRequiredDefaultDescription
modestring (jobs, companies)Yesjobsjobs scrapes Work at a Startup job listings; companies scrapes the YC startup directory.
startUrlsarrayNo[]Direct ycombinator.com URLs: a company search page, a single company page, or a job-role page. Overrides mode-based defaults when present.
rolestringNo""Role slug used to build a jobs URL when no startUrls are given, e.g. software-engineer.
locationstringNo""Location slug used to build a jobs URL when no startUrls are given, e.g. san-francisco.
queriesarrayNo[]Free-text search terms applied against the companies index (company name / description).
batcharrayNo["All Batches"]Filter companies by YC batch, e.g. Spring 2026. Use All Batches for no filter.
industriesarrayNo["All industries"]Filter companies by industry, e.g. B2B. Use All industries for no filter.
regionsarrayNo["Anywhere"]Filter companies by region. Use Anywhere for no filter.
minEmployeeSizestringNo1+Minimum team size, e.g. 1+.
maxEmployeeSizestringNo1000+Maximum team size. A + suffix means no upper bound.
isHiringbooleanNofalseOnly include companies currently marked as hiring.
nonprofitbooleanNofalseOnly include nonprofit companies.
topCompanybooleanNofalseOnly include companies YC has flagged as a top company.
scrapeOpenJobsbooleanNofalseFor each company result, also fetch its open job postings from its company page.
scrapeFounderDetailsbooleanNofalseFor each company result, also fetch founder names, titles, bios and social links.
enrichEmailsbooleanNofalseBest-effort: visit each company's own website and look for a public contact/mailto email address. Not always available.
monitoringModebooleanNofalseCompare this run's results against the previous run and tag each item with isNew.
maxItemsintegerNo100Maximum number of items to output across all sources.
maxConcurrencyintegerNo10Maximum number of concurrent requests.
minConcurrencyintegerNo1Starting/minimum number of concurrent requests.
maxRequestRetriesintegerNo3Maximum retry attempts per failed request.
proxyobjectNo{ "useApifyProxy": true }Apify proxy configuration. Residential proxies are strongly recommended.

💡 Input Examples

Scrape software engineering jobs in San Francisco:

{
"mode": "jobs",
"role": "software-engineer",
"location": "san-francisco",
"maxItems": 200
}

Pull a filtered slice of the company directory with founder details:

{
"mode": "companies",
"batch": ["Spring 2026"],
"industries": ["B2B"],
"isHiring": true,
"scrapeFounderDetails": true,
"maxItems": 150
}

Monitor new listings from direct URLs:

{
"mode": "companies",
"startUrls": [
"https://www.ycombinator.com/companies?batch=Spring%202026&industry=B2B"
],
"monitoringMode": true,
"scrapeOpenJobs": true,
"maxItems": 300
}

📤 Output

{
"id": 101592,
"title": "Principal Data Engineer",
"url": "https://www.ycombinator.com/companies/tilt-fka-delphia/jobs/J4WV5Bg-principal-data-engineer",
"type": "Full-time",
"role": "eng",
"roleSpecificType": "Data science",
"prettyRole": "Engineering",
"location": "Remote (US)",
"salaryRange": "$210K - $270K",
"equityRange": "",
"minExperience": "6+ years",
"visa": "US citizen/visa only",
"skills": ["ETL"],
"createdAt": "15 days",
"lastActive": "12 days",
"isIncomplete": false,
"companyName": "Tilt (f.k.a. Delphia)",
"companyBatchName": "W18"
}

🧾 Y Combinator Job Output Fields

FieldTypeDescription
idinteger | nullUnique identifier of the job posting.
titlestring | nullJob title as posted.
urlstring | nullCanonical URL of the job listing.
applyUrlstring | nullURL to apply for this job.
ctaUrlstring | nullURL of the listing's call-to-action.
typestring | nullEmployment type, e.g. Full-time.
rolestring | nullRole category slug.
roleSpecificTypestring | nullMore granular role specialisation.
prettyRolestring | nullHuman-readable role category.
locationstring | nullLocation of the role.
salaryRangestring | nullPublished salary band.
equityRangestring | nullPublished equity band.
minExperiencestring | nullMinimum experience required.
minSchoolYearMinimum school year, where specified.
visastring | nullVisa eligibility statement.
skillsarray | nullSkills required or listed.
hiringManagerHiring manager attached to the posting.
createdAtstring | nullWhen the posting was created.
lastActivestring | nullWhen the posting was last active.
isIncompleteboolean | nullWhether the posting is incomplete.
companyNamestring | nullHiring company name.
companyBatchNamestring | nullYC batch of the hiring company.
companyOneLinerstring | nullOne-line company pitch.
companyUrlstring | nullCompany URL.
companyLogoUrlstring | nullCompany logo URL.
sourceRolestring | nullRole slug that produced this item.
sourceLocationstring | nullLocation slug that produced this item.

🧾 Y Combinator Company Output Fields

FieldTypeDescription
idinteger | nullUnique identifier of the company.
slugstring | nullURL-friendly identifier.
namestring | nullCompany name.
urlstring | nullCanonical YC directory URL.
websitestring | nullCompany's own website address.
batchYC batch the company belongs to.
industryPrimary industry.
subindustrySub-industry classification.
industriesAll industry tags.
regionsRegions associated with the company.
allLocationsAll listed locations.
oneLinerShort company pitch.
longDescriptionstring | nullLong-form company description.
teamSizeHeadcount.
statusstring | nullCompany status.
stageCompany stage.
topCompanyWhether YC flags it as a top company.
isHiringboolean | nullWhether the company is currently hiring.
nonprofitWhether the company is a nonprofit.
launchedAtstring | nullWhen the company launched.
logoLogo image URL.
tagsarray | nullTags attached to the company.
formerNamesPrevious company names.
appVideoPublicWhether the application video is public.
demoDayVideoPublicWhether the demo day video is public.
scrapedAtstring | nullWhen this record was scraped.
isNewboolean | nullWhether the record is new since the previous run, when monitoring mode is on.

💻 How to Use the Y Combinator Scraper (Step by Step)

Step 1: Choose jobs or companies mode

mode is the first decision and it shapes everything else. Set it to jobs to scrape Work at a Startup listings, which produces records centred on title, salaryRange, location and the hiring company. Set it to companies to scrape the YC startup directory, which produces records centred on name, batch, industry, teamSize and longDescription. The filter inputs for batch, industry, region and team size apply to companies mode.

Step 2: Target by role and location, or by direct URL

For jobs mode without any URLs, set role and location to slugs — software-engineer and san-francisco, for instance — and the actor constructs the jobs URL for you. If you already know the exact page you want, put it into startUrls. That accepts a company search page with query parameters, a single company page, or a job-role page, and it overrides the mode-based defaults entirely.

Step 3: Narrow the company directory with filters

In companies mode the filters do the heavy lifting. batch selects cohorts such as "Spring 2026", industries restricts to sectors such as "B2B", regions limits geography, and minEmployeeSize with maxEmployeeSize bracket headcount. The boolean filters isHiring, nonprofit and topCompany narrow further. Leave the defaults — "All Batches", "All industries", "Anywhere" — in place for an unfiltered sweep.

Step 4: Turn on the enrichment you actually need

scrapeOpenJobs, scrapeFounderDetails and enrichEmails each fetch additional pages per company, so each one lengthens the run. Enable scrapeFounderDetails when you need names and bios of the people behind a startup, scrapeOpenJobs when you want live roles attached to each company record, and enrichEmails when you need a public contact address — bearing in mind that it is best-effort and not always available.

Step 5: Enable monitoring mode for recurring runs

If you plan to run the scraper on a schedule, set monitoringMode to true. The actor stores the previous run's results in its key-value store and compares against them, tagging every item with isNew. Filtering on isNew afterwards gives you a clean change feed of newly listed companies or newly posted roles instead of a full re-export each time.

Step 6: Tune limits, concurrency and proxying

maxItems caps total output across all sources — keep it low for a first run. maxConcurrency and minConcurrency control how aggressively the scraper fetches, and maxRequestRetries decides how many attempts a failed request gets. The proxy input takes a standard Apify proxy configuration and defaults to using Apify Proxy; residential proxies are strongly recommended for this target.

Step 7: Run, review and export the YC data

Start the run and follow the log as it works through pages and enrichment steps. When it finishes, open the Dataset tab. For jobs, sorting on salaryRange and filtering on prettyRole gives an immediate view of the compensation landscape; for companies, grouping on batch and industry shows how a cohort is distributed. Export to CSV, JSON or Excel, or pull the items via the API.


🔌 API Access & Integrations

Run the Y Combinator scraper and get dataset items back in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers-hub~y-jobs-companies-scrapers/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "jobs",
"role": "software-engineer",
"location": "san-francisco",
"maxItems": 100
}'

The same run in Python, filtering the results as they stream in:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("scrapers-hub/y-jobs-companies-scrapers").call(
run_input={
"mode": "companies",
"batch": ["Spring 2026"],
"industries": ["B2B"],
"isHiring": True,
"scrapeFounderDetails": True,
"maxItems": 150,
}
)
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
print(company["name"], "|", company.get("teamSize"), "|", company.get("website"))

Because results sit in a standard Apify dataset, they connect straight to Zapier, Make, Google Sheets or Slack, and a webhook on run completion can push new YC jobs or companies into your ATS, CRM or data warehouse.


💡 Best Use Cases for Y Combinator Jobs & Companies Data

💼 Startup job search and role tracking

Job seekers can filter listings by prettyRole, location and minExperience, then compare salaryRange and equityRange across companies. Because createdAt and lastActive show posting freshness, it is easy to prioritise roles that are actively being worked rather than stale listings.

💰 Startup compensation benchmarking

YC roles publish pay bands unusually openly. Aggregating salaryRange by prettyRole, location and minExperience produces a primary-source benchmark of startup compensation — far more grounded than survey data, and refreshable whenever you rerun the scraper.

🎯 Sales prospecting into funded startups

Companies mode with batch set to a recent cohort and isHiring set to true gives you a list of startups that are both newly funded and actively growing. Adding enrichEmails and scrapeFounderDetails turns that into a contactable prospect list with named decision makers.

📈 Venture and market research

Filtering the directory by batch, industry and regions and counting the results shows how YC's sector weighting shifts cohort to cohort. Combining teamSize, stage and launchedAt gives a rough view of company maturity across a portfolio without any manual data entry.

🧑‍💻 Technical recruiting and talent market analysis

Recruiters can track which skills appear across postings, how visa policies differ between companies, and where roles are concentrated by location. Running the scraper weekly with monitoringMode on gives an isNew flag that surfaces fresh openings the moment they appear.

🔍 Competitive intelligence on hiring signals

A company's open roles are a public statement of strategy. Using scrapeOpenJobs against a target set of companies and watching how title and roleSpecificType change over time reveals where a competitor is investing before any announcement is made.

📊 Building a YC portfolio dataset

For anyone maintaining a longitudinal dataset of YC companies, id, slug and scrapedAt make records stable and versionable, while longDescription, tags and industries supply enough text and taxonomy for classification and search.


⚙️ Tips for Better Y Combinator Scraping Results

  • Start with a low maxItems. Confirm the record shape and filter behaviour on 20 items before committing to a full directory sweep with enrichment enabled.
  • Enable enrichment selectively. scrapeOpenJobs, scrapeFounderDetails and enrichEmails each add page fetches per company; turning all three on for a large run multiplies the work considerably.
  • Use startUrls when you have already built the filter in the browser. Constructing the search on ycombinator.com and pasting the resulting URL is often faster and more precise than reproducing the same filters through individual inputs.
  • Pair monitoringMode with a schedule. The isNew flag is only meaningful across consecutive runs, so it earns its value on a recurring schedule rather than a one-off run.
  • Use residential proxies. The proxy input defaults to Apify Proxy, and residential proxies are strongly recommended for this target — lower-quality egress leads to more retries and slower runs.
  • Lower maxConcurrency if requests start failing. High concurrency is efficient until it is not; dropping it and raising maxRequestRetries usually stabilises a run that is producing errors.

🛠️ Troubleshooting

The run returned no items. Check your filters first. Combining a narrow batch with a specific industry, a restrictive team size range and topCompany can legitimately match nothing. Widen the filters back to their defaults and reintroduce them one at a time to find the one that is over-constraining.

Jobs mode is not using my role and location. startUrls overrides mode-based defaults. If it contains any URL, the role and location slugs are ignored. Clear startUrls to have the jobs URL built from role and location instead.

Email enrichment produced almost no addresses. enrichEmails is explicitly best-effort — it visits each company's own website looking for a public contact or mailto address, and many startups do not publish one. Sparse results here are expected rather than a fault.

Several fields are null on company records. YC directory entries vary a great deal in completeness. Fields such as stage, subindustry, formerNames and the video flags are only populated where the company has supplied them, so nulls reflect the source data.

Requests are failing or the run is slow. Reduce maxConcurrency, raise maxRequestRetries, and make sure the proxy configuration is using Apify Proxy with residential proxies, which are strongly recommended for this target.


❓ Frequently Asked Questions About Y Combinator Scraping

What does this Y Combinator scraper extract? In jobs mode it extracts Work at a Startup listings with titles, salary and equity ranges, locations, skills, experience requirements, visa policy and the hiring company. In companies mode it extracts the YC startup directory with batch, industry, team size, stage, region, website and descriptions.

Can I scrape both YC jobs and YC companies in one run? Each run uses a single mode. To collect both, run the actor twice and join the results on the company name or slug.

How do I scrape YC jobs for a specific role and city? Set mode to jobs, leave startUrls empty, and set role and location to the appropriate slugs, for example software-engineer and san-francisco.

Does the scraper return salary data for YC jobs? Yes, where the posting publishes it. The salaryRange field carries the band exactly as listed, alongside equityRange for equity.

Can I filter YC companies by batch? Yes. The batch array accepts values such as "Spring 2026", and "All Batches" disables the filter.

How do I find only YC companies that are currently hiring? Set isHiring to true in companies mode. Combine it with scrapeOpenJobs to attach each company's live postings to its record.

What does monitoring mode do? With monitoringMode enabled, the actor compares the current run against the previous one stored in its key-value store and tags every item with isNew, giving you a change feed rather than a full re-export.

Can I get founder names and profiles from YC company pages? Yes. Enable scrapeFounderDetails and the actor fetches founder names, titles, bios and social links from each company page.

Does the YC scraper find company email addresses? enrichEmails makes a best-effort attempt by visiting each company's own website and looking for a public contact or mailto address. It is not always available.

How many YC companies or jobs can I scrape in one run? Up to maxItems, which defaults to 100 and applies across all sources in the run.

Can I scrape a single YC company page? Yes. Put the company page URL, in the form /companies/{slug}, into startUrls. It overrides the mode-based defaults.

Do I need to configure a proxy for this YC scraper? The proxy input takes a standard Apify proxy configuration and defaults to using Apify Proxy. Residential proxies are strongly recommended for this target.

How do I export YC job listings to a spreadsheet? Export the dataset as CSV or Excel from the run's Dataset tab, or connect it to Google Sheets, Zapier or Make.

What is the difference between role, prettyRole and roleSpecificType? role is the underlying role category slug, prettyRole is its human-readable form such as "Engineering", and roleSpecificType is a finer specialisation such as "Data science".

Can I schedule the Y Combinator scraper to track new listings? Yes. Schedule it on Apify and enable monitoringMode so each run flags newly appeared companies and jobs with isNew.


🆘 Support & Feedback

If the Y Combinator scraper returns something unexpected for a particular filter combination or URL, open a report on the actor's Issues tab and include the input JSON you used. That makes the behaviour reproducible and the fix much faster.

For custom work — additional fields, a different output shape, or an integration into your ATS, CRM or warehouse — email scraperhubapi@gmail.com with what you need.

If this YC scraper is useful, a review on the actor page is genuinely appreciated and helps others find it.


⚖️ Disclaimer

This Y Combinator scraper collects only publicly accessible pages from ycombinator.com. It does not log in, access private or gated content, or bypass any authentication.

You are responsible for how the extracted data is used. Founder names, bios, social links and any contact emails collected through enrichment are personal data under GDPR, the UK GDPR, CCPA and comparable laws — process them only with a lawful basis, keep no more than you need, honour erasure requests, and comply with anti-spam rules such as CAN-SPAM, CASL and PECR before contacting anyone. Job and compensation data should be treated as published snapshots, not verified facts.

Use of this actor must also comply with Y Combinator's terms of service and Apify's platform terms. Scrape at a reasonable rate and use the concurrency controls responsibly.

If you believe personal data collected through this actor should be removed, contact scraperhubapi@gmail.com and the request will be handled.