Wellfound Scraper — Startup Jobs, Salaries & Companies avatar

Wellfound Scraper — Startup Jobs, Salaries & Companies

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Wellfound Scraper — Startup Jobs, Salaries & Companies

Wellfound Scraper — Startup Jobs, Salaries & Companies

Export Wellfound (AngelList Talent) startup jobs by role and location: parsed salary and equity, remote policy, experience and full description, plus company size, stage, funding, founders, website and LinkedIn. Thousands of jobs per run, no login. Not affiliated with Wellfound.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Wellfound Scraper

Wellfound Scraper exports startup jobs and hiring startups from Wellfound (formerly AngelList Talent) — the largest startup job board — into clean JSON, CSV, Excel or Google Sheets. Search by role and location ("software engineer" in "new york", "product manager" remote, "data scientist" in "london"), and get every job with its parsed salary range, equity range, remote policy, experience, posting date and full description, plus the startup behind it: company size, stage, badges, funding, founders, website and LinkedIn. It is the practical Wellfound API alternative and AngelList scraper for anyone who needs startup jobs data at scale.

No Wellfound account, no login, no cookies and no browser extension: this AngelList Talent jobs scraper reads Wellfound's public job pages and turns them into structured rows. Scrape startup jobs without login, collect 10,000+ jobs in one run (measured: 10,000 jobs in about 100 seconds), and export to CSV, Excel, JSON, XML or HTML, push to Google Sheets, or call it from the API, Make, Zapier, n8n or an AI agent through MCP.

Measured on the live site on 2026-10-13: 100 jobs in 5 s (first rows after 2 s) · 1,000 jobs in 21 s · 5,000 jobs in 67 s · 10,000 jobs in ~100 s · 0 duplicate rows · runs that find nothing finish with a plain-English reason instead of crashing.


✨ What you get

GroupFields
Jobjob ID, title, URL, Wellfound role category, job type (full-time / contract / internship / co-founder), workplace type (Remote / On-site / Hybrid / On-site or remote), remote flag, office locations, countries a remote hire may live in, posting date, full description (plain text), applicant tracking system (Greenhouse, Ashby, Lever, Workable …)
Paycompensation exactly as shown, salary min / max, currency (USD, EUR, GBP, INR, CAD …), period (year / month / hour), equity min / max in %, equity offered yes/no, minimum years of experience
Company (always)company ID, name, slug, Wellfound URL, logo, tagline, employee range, stage (Seed / Early / Growth / Scale), all badges, B2B / B2C, actively hiring, response speed ("Top 10% of responders", "Responds within a week"), YC funded, top investors, valuation $500M+ / $1B+, growing fast, Glassdoor rating
Job details (option)visa sponsorship, relocation, skills, remote work policy, where remote hires may live, hiring contact (name, title, location), city/region/country of every location, industry, direct apply, recruiter activity
Company profile (option)website, headquarters, company type, industries, total raised (USD), number of funding rounds, latest round type, date and amount, founders with profile links, companies and schools the team came from
Company links (option)LinkedIn, X / Twitter, Facebook, blog, Product Hunt, company description, markets, office locations, number of open jobs
Companies modeone row per hiring startup with its matching jobs (count, titles, URLs), salary range across them, equity offered, remote hiring, job locations

Every row also carries the role and location you searched (searchRole, searchLocation), the Wellfound page it came from (sourceUrl) and a timestamp (scrapedAt).


🎯 Who uses Wellfound data and why

Recruiting and talent sourcing

Agencies and in-house recruiters track which startups are hiring for which roles, at what salary, with how much equity, and whether they sponsor visas. Filter by stage, YC backing or "actively hiring", then go straight to the hiring contact. A daily scheduled run with Posted within = 1 day gives you a fresh feed of new startup roles every morning.

Sales prospecting to hiring startups (B2B lead generation)

A startup that is hiring has budget. Switch to Companies mode and you get a lead list of startups hiring for a role — with website, LinkedIn, founders, headcount, total raised, latest round and the ATS they use. Sell HR tech, recruiting services, payroll, benefits, developer tools, cloud credits or office space to companies that just raised and are growing their team. The applicantTrackingSystem column alone tells ATS vendors and integrators who uses Greenhouse, Ashby, Lever or Workable.

Salary and equity benchmarking

Wellfound is one of the few job boards where most listings show both salary and equity. The scraper parses "$170k – $250k • 0.5% – 1.0%" into numbers — salaryMin, salaryMax, salaryCurrency, salaryPeriod, equityMin, equityMax — so you can compare pay by role, city, remote policy, company stage and size in a spreadsheet or BI tool without any cleaning. In a 10,000-job sample, 71% of jobs had a salary range.

VC deal flow and market mapping

Hiring is a leading indicator of growth. Investors and analysts use the stage, funding, valuation, YC and "growing fast" signals, plus job counts per startup, to spot companies scaling a team before the next round is announced, map a market by role demand, and watch competitors' hiring plans.

Job boards, newsletters and market research

Niche job boards and newsletters ("remote ML jobs", "Berlin startup jobs", "jobs with visa sponsorship") feed their listings from Wellfound exports — full descriptions, clean locations, stable job IDs. Analysts count open roles by category and city, track the remote share and watch pay move with scheduled runs.


🚀 How to scrape Wellfound jobs in 3 steps

  1. Enter roles and locations — plain words like software engineer, product manager, sales, and new york, london, remote. Or type all in Roles to collect every role Wellfound has.
  2. Set Max results and, if you want them, the enrichment options (job details, company profile, company links, all company jobs).
  3. Click Start and download the results as CSV, Excel, JSON, XML or HTML from the Output tab — or let the API, a webhook or an integration pick them up.

⚙️ How it works

Wellfound publishes its job search on public pages: one page per role (/role/software-engineer), per role and location (/role/l/software-engineer/new-york), per remote role (/role/r/designer), per location (/location/london) and for remote jobs (/remote). Each page lists 20 startups with up to 3 of their matching jobs, and the page itself already contains every job's full description, pay, equity, locations and remote policy. The scraper reads those pages directly — no browser, no login — which is why it is fast.

What the Actor does for you on top:

  • Understands plain words. "Full stack developer", "SWE", "ML engineer", "UX designer", "PM" and "NYC", "SF", "Bay Area", "DC", "UK", "USA" are mapped to Wellfound's own pages. If Wellfound has no page for a role in a city, it reads the smaller of the role's pages and the city's pages and keeps only the matching jobs — you still get the right jobs.
  • Reads the whole search, not just one walk through it. Wellfound shuffles its result pages on every request (measured: 10 pages fetched together held 154 distinct startups out of 200 slots). One pass would miss part of the search, so the scraper keeps walking while new jobs keep appearing — for "software engineer" it saw 1,757 of the 1,768 startups Wellfound reports.
  • Shares the limit fairly. With 3 roles × 4 cities and Max results = 1,200, each search gets its fair share; searches that run dry hand their share to the others.
  • De-duplicates by job ID (or company ID in Companies mode) across all searches, and stops at exactly Max results.
  • Stays fast. Up to 32 pages load in parallel, refused IPs are replaced at once, slow pages get a duplicate request and the first answer wins, and rows are saved as soon as they are parsed.
  • Fails honestly. An unknown role or city ends as a successful empty run that tells you what Wellfound does have; a site outage ends as a failed run with the reason. You never get a silent "succeeded with 0 rows".

📥 Input reference

FieldTypeDefaultWhat it does
rolesarray of strings[]Roles in plain words. Every role is searched in every location. all searches every Wellfound role page (10,000+ jobs).
locationsarray of strings[]Cities, states, countries, or remote. Empty = everywhere.
startUrlsarray[]Wellfound search, job or company URLs.
modejobs / companiesjobsOne row per job, or one row per hiring startup.
maxItemsinteger1000Stop after this many unique jobs (or companies). 0 = no limit.
postedWithinDaysinteger0Only jobs that went live in the last N days.
jobTypeany / full-time / contract / internship / cofounderanyKeep one kind of job.
withSalaryOnlybooleanfalseSkip jobs without a salary range.
includeJobDetailsbooleanfalseOpen each job page: visa, relocation, skills, hiring contact, exact salary, company funding and founders.
includeCompanyDetailsbooleanfalseCompany website, HQ, industries, funding, latest round, founders, team background (one page per company).
includeCompanyLinksbooleanfalseLinkedIn, X/Twitter, Facebook, blog, Product Hunt, description, open-job count (slower).
allCompanyJobsbooleanfalseAlso export every other open job of each startup found (slower).
maxPagesPerSearchinteger0Cap on page requests per search. 0 = as many as the search needs.
concurrencyinteger32Pages loaded in parallel (1–64).
proxyConfigurationobjectResidentialKeep Apify Residential. Company pages use Apify's unblocking proxy automatically.

Example: remote software engineering jobs

{
"roles": ["software engineer"],
"locations": ["remote"],
"maxItems": 500
}

Example: a role × city grid for salary benchmarking

{
"roles": ["software engineer", "product manager", "data scientist"],
"locations": ["new york", "san francisco", "london", "berlin"],
"withSalaryOnly": true,
"maxItems": 3000
}

Example: lead list of startups hiring sales people, with funding and LinkedIn

{
"mode": "companies",
"roles": ["sales", "account executive", "sales manager"],
"locations": ["united states"],
"includeCompanyDetails": true,
"includeCompanyLinks": true,
"maxItems": 300
}

Example: jobs with visa sponsorship details, skills and hiring contact

{
"roles": ["machine learning engineer", "backend engineer"],
"locations": ["remote", "london"],
"includeJobDetails": true,
"maxItems": 400
}

Example: the whole board — every role, 10,000+ jobs

{
"roles": ["all"],
"maxItems": 20000
}

Example: daily feed of new jobs (use with a schedule)

{
"roles": ["all"],
"postedWithinDays": 1,
"maxItems": 0
}

Example: specific Wellfound pages, jobs and companies

{
"startUrls": [
{ "url": "https://wellfound.com/role/l/product-designer/san-francisco" },
{ "url": "https://wellfound.com/jobs/4787364-software-engineer" },
{ "url": "https://wellfound.com/company/scale-ai" }
]
}

A company URL exports all of that company's open jobs (up to 400). A job URL exports that job with all job-page details.

Which words work for roles and locations?

Roles — anything Wellfound has a role page for: software engineer, frontend engineer, backend engineer, full stack engineer, machine learning engineer, AI engineer, data scientist, data analyst, devops engineer, mobile engineer, engineering manager, QA engineer, security engineer, product manager, product designer, designer, UI/UX designer, sales, sales manager, account manager, account executive, growth marketer, content manager, copywriter, operations manager, HR manager, recruiter, financial analyst, CFO, react developer, java developer, go developer, solidity, smart contract and about a hundred more. Seniority words ("senior", "lead", "staff", "founding") are understood and mapped to the base role.

Locations — cities, states, countries and regions as Wellfound writes them: new york, san francisco, san francisco bay area, los angeles, boston, seattle, austin, chicago, denver, washington dc, london, berlin, paris, amsterdam, toronto, bangalore, singapore, dubai, united states, united kingdom, india, germany, europe, and remote. Shortcuts like NYC, SF, LA, DC, UK and USA work. "City, ST" is accepted ("Austin, TX").


📤 Output

Real output example

A job collected on 2026-10-13 with Open every job page switched on (description shortened):

{
"jobId": "3310675",
"title": "Product Manager",
"url": "https://wellfound.com/jobs/3310675-product-manager",
"role": "Product Manager",
"jobType": "full-time",
"workplaceType": "Remote",
"remote": true,
"locations": "New York City",
"remoteLocations": "United States",
"compensation": "$120k – $130k • 0.0% – 0.15%",
"salaryMin": 120000,
"salaryMax": 130000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"equityMin": 0,
"equityMax": 0.15,
"hasEquity": true,
"yearsExperienceMin": 3,
"postedAt": "2026-04-09T21:39:11.000Z",
"description": "Who we are\nFlexPoint is a rapidly growing venture backed Software as a Service (SaaS) provider of payments and financial solutions for the Managed IT Services (MSP) industry…",
"applicantTrackingSystem": null,
"remoteWorkPolicy": "Remote only",
"hiresRemotelyIn": "United States",
"visaSponsorship": "Not Available",
"relocation": "Not Allowed",
"skills": "Payments | FinTech",
"hiringContact": "Sam Kushner — Founder (United States)",
"jobLocationsDetailed": "New York, New York, United States",
"jobCountries": "United States",
"industry": "SaaS and Finance Technology",
"directApply": true,
"recruiterActivity": null,
"companyId": "9774290",
"companyName": "FlexPoint",
"companySlug": "flexpoint-1",
"companyUrl": "https://wellfound.com/company/flexpoint-1",
"companyLogoUrl": "https://photos.wellfound.com/startups/i/9774290-2e7c9834933eb6f73f13a18af8093208-medium_jpg.jpg?buster=1783967932",
"companyTagline": "AR Automation + AI platform purpose-built for Managed Service Providers",
"companySize": "11-50",
"companyStage": "Growth Stage",
"companyBadges": "Actively Hiring | B2B | Growth Stage",
"companyBusinessModel": "B2B",
"companyActivelyHiring": true,
"companyResponseSignal": null,
"companyYcFunded": false,
"companyTopInvestors": false,
"companyValuation": null,
"companyGrowingFast": false,
"companyGlassdoorRating": null,
"companyWebsite": "https://www.getflexpoint.com",
"companyHeadquarters": "Denver",
"companyType": "Startup | Early Stage",
"companyIndustries": "SaaS | Finance Technology",
"companyTotalRaised": 19500000,
"companyFundingRounds": 2,
"companyLastRoundType": "Series A",
"companyLastRoundDate": "2025-05",
"companyLastRoundAmount": 12000000,
"companyFounders": null,
"companyFounderProfiles": null,
"companyTeamBackground": "CompTIA | Nexus Solutions | Afloat | Alliant International University | NetSearch Direct",
"searchRole": "product manager",
"searchLocation": "new york",
"sourceUrl": "https://wellfound.com/role/l/product-manager/new-york",
"scrapedAt": "2026-10-13T10:53:50.473Z"
}

Lists are pipe-separated strings ("Python | Rust | C++") so they stay readable in CSV and Excel. Missing values are null, never 0 or "" — an empty salary means "not shown", not "zero".

Data dictionary

Job fields (always)

FieldTypeMeaning
jobIdstringWellfound job ID, stable across searches
titlestringJob title
urlstringJob page on Wellfound
rolestringWellfound role category
jobTypestringfull-time, contract, internship, cofounder
workplaceTypestringRemote, On-site, Hybrid, On-site or remote
remotebooleanWellfound's remote flag
locationsstringOffice locations
remoteLocationsstringWhere a remote hire may live
compensationstringPay and equity exactly as shown
salaryMin, salaryMaxnumberSalary range
salaryCurrencystringISO code
salaryPeriodstringyear, month, hour
equityMin, equityMaxnumberEquity range in percent
hasEquitybooleantrue = equity range shown, false = "No equity", null = not stated
yearsExperienceMinnumberMinimum years of experience
postedAtstringWhen the job went live (ISO 8601)
descriptionstringFull description, plain text
applicantTrackingSystemstringGreenhouse, Ashby, Lever, Workable …; null = posted on Wellfound directly

Company fields (always)

FieldTypeMeaning
companyId, companyName, companySlugstringStartup identity
companyUrl, companyLogoUrlstringWellfound page, logo
companyTaglinestringOne-line pitch
companySizestringEmployee range, e.g. 51-200
companyStagestringSeed / Early / Growth / Scale Stage
companyBadgesstringAll badges
companyBusinessModelstringB2B, B2C
companyActivelyHiringbooleanActively hiring badge
companyResponseSignalstringResponse-time badges
companyYcFunded, companyTopInvestors, companyGrowingFastbooleanBadges
companyValuationstring$500M+ or $1B+
companyGlassdoorRatingnumberGlassdoor rating shown by Wellfound

Job details (includeJobDetails)

FieldTypeMeaning
remoteWorkPolicystringIn office, Remote only, Onsite or remote …
hiresRemotelyInstringWhere remote hires may be
visaSponsorshipstringAvailable / Not Available
relocationstringAllowed / Not Allowed
skillsstringSkills listed on the job
hiringContactstringName — title (location)
jobLocationsDetailedstringCity, region, country of every location
jobCountriesstringCountries
industrystringIndustry of the posting
directApplybooleanApply on Wellfound itself
recruiterActivitystringe.g. Recruiter recently active

Company profile (includeCompanyDetails, also filled by job details)

FieldTypeMeaning
companyWebsitestringWebsite
companyHeadquartersstringLocation shown by Wellfound
companyTypestringe.g. Enterprise Software Company
companyIndustriesstringIndustry tags
companyTotalRaisednumberTotal funding, USD
companyFundingRoundsnumberNumber of rounds
companyLastRoundTypestringPre-Seed … Series D, Acquired, IPO
companyLastRoundDatestringYYYY-MM
companyLastRoundAmountnumberUSD, when disclosed
companyFoundersstringFounders with title
companyFounderProfilesstringFounder profile links
companyTeamBackgroundstringWhere the team came from

Company links (includeCompanyLinks or allCompanyJobs)

FieldTypeMeaning
companyLinkedInUrl, companyTwitterUrl, companyFacebookUrl, companyBlogUrl, companyProductHuntUrlstringSocial and web links
companyDescriptionstringCompany description
companyLiveJobCountnumberOpen jobs on Wellfound
companyMarkets, companyLocationsstringMarket and office tags

Companies mode

FieldTypeMeaning
matchingJobCountnumberJobs that matched your search
matchingJobTitles, matchingJobUrlsstringThose jobs
matchingSalaryMin, matchingSalaryMax, matchingSalaryCurrencynumber / stringYearly salary range across them
offersEquity, hiresRemotelybooleanAny matching job offers equity / is remote
jobLocationsstringLocations of the matching jobs
openJobTitles, openJobUrlsstringAll open jobs (with allCompanyJobs)

Source fields: searchRole, searchLocation, sourceUrl, scrapedAt.

How complete are the fields?

Measured over 10,000 jobs (roles = all, 2026-10-13): title, URL, role, job type, workplace type, description, posting date, company name, size and badges flags 100%; locations 94%; company badges 90%; compensation 76%; salary range 71%; stage 60%; applicant tracking system 51%; experience 45%; equity range 11% (shown when the startup offers equity). With job details on (300 jobs): website, industries, headquarters, visa sponsorship, relocation and countries 99%; hiring contact 79%; latest funding round 59%; total raised 56%. Companies mode with links (40 startups): website 100%, open-job count 90%, LinkedIn 65%, X/Twitter 58%.


📊 How much data can I get?

What you ask forWellfound showsMeasured result
roles: ["all"], Max 10,000115 role pages + the remote board10,000 jobs in 103 s, 519 pages, 0 duplicates
roles: ["software engineer"], no limit4,927 jobs at 1,768 startups, 89 pages2,926 unique jobs in 59 s (1,757 startups seen)
5 roles (software engineer, sales, product manager, designer, data scientist), Max 5,000~19,600 jobs5,000 jobs in 67 s
2 roles × 3 locations, Max 1,000~6,500 jobs1,000 jobs in 21 s, 167 per search
"data scientist", no limit406 jobs at 253 startups353 jobs in 24 s

Why a search returns fewer jobs than Wellfound's headline number: Wellfound's result pages show up to 3 matching jobs per startup. A search reaches nearly every startup, but a startup with 10 matching jobs shows 3 of them. Two ways to get more:

  • More searches — add roles and locations, or use all. Different role pages surface different jobs of the same startup; that is how all passes 10,000 jobs.
  • All company jobs — allCompanyJobs: true opens each startup's own job list and exports every open job (up to 400 per startup).

For the whole board, set roles: ["all"] and maxItems: 0 (no limit).

Big runs and "Maximum cost per run"

Apify gives every pay-per-result run a spending cap — the Maximum cost per run field in the run options. If you leave it empty, Apify applies its own default cap, which can be lower than a very large run needs. The scraper reads the cap when it starts and collects exactly as many results as the cap covers, then stops cleanly: the run ends as SUCCEEDED with a status message such as "Saved 15 results — this run's maximum cost ($0.05) covers 15 result(s) at the current price" (a real test run with a $0.05 cap and Max results = 5,000). It never fails, never ends as aborted, and never loads pages for results that could not be saved.

For 10,000+ results, set Maximum cost per run to at least the number of results × the price per result (see the Pricing tab). Example: at $3.50 per 1,000 results, 10,000 results need a cap of at least $35, and 20,000 results need $70. You only pay for the results actually saved — the cap is a ceiling, not a charge.


⚡ Speed and cost

All numbers measured on the Apify platform on 2026-10-13 with 32 parallel requests and 1 GB memory (the default is now 2 GB, which roughly halves long runs — the scraper is CPU-bound, and the compute cost per run stays the same):

RunResultTime
Prefilled input (100 remote software engineering jobs)100 jobs5 s (first rows after 2 s)
2 roles × 3 locations1,000 jobs21 s
5 roles5,000 jobs67 s
all roles10,000 jobs103 s (first rows after 1 s)
Job details on300 jobs47 s with 2 GB (101 s with 1 GB)
Companies mode + profile + links40 startups184 s
All company jobs300 jobs161 s
Unknown role or cityexplained empty result6 s

Pricing is per result — see the Pricing tab. Residential proxy, unblocking proxy and compute are included; there is no separate proxy bill and no subscription.

Tips for speed:

  • The plain search (no options) is the fastest: ~100 jobs per second.
  • Job details open one extra page per job: about 6 jobs per second with the default 2 GB memory.
  • Company links and All company jobs use Apify's unblocking proxy, which needs 10–40 s per company page; keep Max results moderate or run them on a schedule.

🔌 Integrations

Apify API (curl)

Run the Actor and get the results in one call:

curl -X POST "https://api.apify.com/v2/acts/logiover~wellfound-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN&format=json" \
-H "Content-Type: application/json" \
-d '{"roles":["software engineer"],"locations":["remote"],"maxItems":200}'

Use format=csv or format=xlsx to get a file instead of JSON.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('logiover/wellfound-scraper').call({
roles: ['product manager'],
locations: ['new york', 'remote'],
withSalaryOnly: true,
maxItems: 1000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].title, items[0].salaryMin, items[0].companyName);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("logiover/wellfound-scraper").call(run_input={
"mode": "companies",
"roles": ["sales"],
"locations": ["united states"],
"includeCompanyDetails": True,
"maxItems": 300,
})
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
print(company["companyName"], company["companyWebsite"], company["companyTotalRaised"])

Make, Zapier, n8n

Use the Apify app in Make or Zapier, or the Apify node in n8n: "Run Actor" with logiover/wellfound-scraper, then "Get dataset items". Typical flows: new jobs → Slack channel, new hiring startups → CRM (HubSpot, Pipedrive, Salesforce), salary rows → Airtable.

Google Sheets

Add the Google Sheets integration on the Integrations tab, or import the CSV link of the dataset into a sheet with =IMPORTDATA("https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN").

Webhooks and schedules

Create a schedule (for example every morning with postedWithinDays: 1) and a webhook on "Run succeeded" that posts the dataset ID to your server — your system receives each day's new startup jobs automatically.

AI agents and MCP

The Actor works as a tool for AI agents through Apify's MCP server (https://mcp.apify.com/?actors=logiover/wellfound-scraper) in Claude, Cursor, VS Code and other MCP clients — an agent can ask for "remote senior backend jobs at Series A startups with equity" and get structured rows back. It also works from LangChain, LlamaIndex and CrewAI through the Apify integrations.


🆚 Wellfound Scraper vs other options

Manual browsingWellfound job alertsGeneric web scraperWellfound Scraper
Account or loginneeded for some viewsneededoftennot needed
Jobs per hour~100a few per daydepends on setup10,000 in under 2 minutes
Salary and equity as numbersnonoyou write the parseryes
Company funding, founders, LinkedInclick every pagenoyou write the parserone switch
Shuffled result pages handlednon/ano — silently misses startupsyes, multi-pass
De-duplication across searchesby handn/ayou build itbuilt in
Exportcopy-pasteemailvariesCSV, Excel, JSON, API, Sheets
Maintenance when the site changes——yoursours

Wellfound has no public jobs API (AngelList's old public API is no longer available), so a scraper like this is the practical way to get the data programmatically.


💡 Limits and tips

  • 3 jobs per startup per search page is Wellfound's own limit. Use more roles, all, or allCompanyJobs for complete company job lists.
  • Exact numbers vary slightly between runs — Wellfound's own totals move by a few jobs from one request to the next, and its result order is shuffled. The scraper keeps reading until new jobs stop appearing.
  • Unusual locations: if Wellfound has no page for a place, the run says so and suggests the spelling to use. Use the city or country name as Wellfound writes it.
  • Remote jobs: use remote as a location. Combine with a role for remote jobs in that role.
  • Big lists of companies with links: the unblocking proxy is slow by nature; for thousands of companies, run the search first, then enrich the companies you care about with their company URLs in startUrls.
  • Daily monitoring: schedule a run with postedWithinDays: 1; job IDs are stable, so you can de-duplicate across days.
  • Proxy: keep the Apify Residential group. Wellfound refuses datacenter IPs.

❓ FAQ

Do I need a Wellfound account, login or cookies?

No. The scraper only reads public Wellfound pages. You do not log in, share cookies or install anything.

Is there an official Wellfound or AngelList API for jobs?

No. Wellfound does not offer a public API for job listings, and AngelList's old public API is no longer available. This Actor is a Wellfound API alternative: you call the Apify API and get Wellfound jobs as JSON.

How many jobs can I scrape in one run?

Measured: 10,000 jobs in about 100 seconds with roles: ["all"], and 2,926 unique jobs from the single "software engineer" search. Set maxItems: 0 for no limit — and raise Maximum cost per run to at least results × price per result, because Apify's default cap can be lower than a very large run needs.

Why did my run stop before reaching Max results?

Either Wellfound has no more matching jobs (the status message says how many it found), or the run reached its Maximum cost per run. In the second case the run still ends as SUCCEEDED and the status message says exactly how many results the cap covered — raise the cap in the run options (results × price per result) and run again. Nothing is lost or charged beyond the results you received.

Why does a startup show only 3 jobs?

Wellfound's search pages list up to 3 matching jobs per startup. Turn on All open jobs of every company found (allCompanyJobs) to export every open job, or add more roles.

How do I get only remote jobs?

Put remote in Locations. "Remote software engineer" = role software engineer + location remote. The workplaceType, remote and remoteLocations columns tell you where a remote hire may live.

Which role and location names can I use?

Plain words work: "software engineer", "full stack developer", "PM", "ML engineer", "ux designer" and city or country names like "nyc", "san francisco", "london", "united states". See the lists above. Wellfound URLs work too.

What happens if I mistype a role or a city?

The run finishes successfully with no rows and a status message that says which word Wellfound did not recognise and which spellings it does have. It does not crash.

Can I get salary and equity as numbers?

Yes. salaryMin, salaryMax, salaryCurrency, salaryPeriod, equityMin and equityMax are parsed from Wellfound's pay line, including "k" amounts, currencies (USD, EUR, GBP, INR, CAD …) and "No equity". With job details on, the salary comes from the job posting's structured data.

Can I find jobs with visa sponsorship?

Yes. Turn on Open every job page — the visaSponsorship column shows "Available" or "Not Available", next to relocation, skills and the hiring contact.

Can I get company funding, founders and LinkedIn?

Yes. Company profile adds website, HQ, total raised, latest round (type, date, amount), founders and team background. Company links adds LinkedIn, X/Twitter, Facebook, blog and Product Hunt.

How do I build a lead list of startups that are hiring?

Use Companies mode with the roles you sell to, switch on Company profile and Company links, and export. Each row is one startup with its matching jobs, funding, size, website and LinkedIn.

How fresh is the data? Can I schedule it?

Every run reads Wellfound live, so data is as fresh as the site. Schedule hourly, daily or weekly runs in Apify; use postedWithinDays to get only new jobs.

Why are some fields empty?

Startups fill in different parts of their profile: some show no salary, no equity or no founders. Empty means "not shown on Wellfound" — the scraper never invents values. Option fields (details, profile, links) only appear when the option is on.

Can I export to Excel or Google Sheets?

Yes — the Output tab downloads CSV, Excel (XLSX), JSON, XML and HTML, and the Google Sheets integration writes rows straight into a sheet.

Does it work with AI agents and MCP?

Yes. Add it to Apify's MCP server and your agent can call it as a tool; results come back as structured JSON.

Wellfound serves company pages only through Apify's unblocking proxy, which needs 10–40 seconds per page. The scraper loads many in parallel and duplicates slow requests, but it is still slower than the plain search.


This Actor collects only publicly available information that Wellfound shows to any visitor without logging in. Scraping public data is generally lawful, but you are responsible for how you use it: respect Wellfound's terms where they apply to you, do not republish content in a way that infringes copyright, and handle personal data (founder and hiring-contact names) in line with GDPR, CCPA and similar laws — for example, use it for legitimate business purposes and honour opt-out requests. If you are unsure, ask a lawyer.


🛡️ Reliability and support

  • Tested end to end on the live site on 2026-10-13: prefill, 1,000, 5,000 and 10,000-job runs, job details, companies mode with links, all company jobs, unknown role, unknown city and over-strict filters — every run finished with the right outcome.
  • Refused IPs are replaced immediately, slow pages are duplicated, and every run writes a SUMMARY record (outcome, pages read, per-search totals, duplicates skipped) to its key-value store.
  • If Wellfound changes its pages, we update the parser — scheduled runs keep working.

Found a problem or need a field? Open an issue on the Issues tab — answered within 24 hours.


📝 Changelog

2026-10-13

First release: role × location search with plain-word aliases, multi-pass reading of Wellfound's shuffled result pages, fair sharing of the result limit, Jobs and Companies modes, parsed salary and equity, job details (visa, relocation, skills, hiring contact), company profile (funding, latest round, founders), company links (LinkedIn, X, Facebook), all company jobs, all roles for 10,000+ jobs per run, explained empty results, and a clean stop at the run's "Maximum cost per run" (SUCCEEDED with a message, never aborted).


This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Wellfound, AngelList or any of their subsidiaries. "Wellfound" and "AngelList" are trademarks of their respective owners and are used here only to describe the data source.