Wellfound Scraper — Startup Jobs, Salaries & Companies
Pricing
from $2.50 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
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
| Group | Fields |
|---|---|
| Job | job 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 …) |
| Pay | compensation 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 mode | one 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
- Enter roles and locations — plain words like
software engineer,product manager,sales, andnew york,london,remote. Or typeallin Roles to collect every role Wellfound has. - Set Max results and, if you want them, the enrichment options (job details, company profile, company links, all company jobs).
- 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
| Field | Type | Default | What it does |
|---|---|---|---|
roles | array of strings | [] | Roles in plain words. Every role is searched in every location. all searches every Wellfound role page (10,000+ jobs). |
locations | array of strings | [] | Cities, states, countries, or remote. Empty = everywhere. |
startUrls | array | [] | Wellfound search, job or company URLs. |
mode | jobs / companies | jobs | One row per job, or one row per hiring startup. |
maxItems | integer | 1000 | Stop after this many unique jobs (or companies). 0 = no limit. |
postedWithinDays | integer | 0 | Only jobs that went live in the last N days. |
jobType | any / full-time / contract / internship / cofounder | any | Keep one kind of job. |
withSalaryOnly | boolean | false | Skip jobs without a salary range. |
includeJobDetails | boolean | false | Open each job page: visa, relocation, skills, hiring contact, exact salary, company funding and founders. |
includeCompanyDetails | boolean | false | Company website, HQ, industries, funding, latest round, founders, team background (one page per company). |
includeCompanyLinks | boolean | false | LinkedIn, X/Twitter, Facebook, blog, Product Hunt, description, open-job count (slower). |
allCompanyJobs | boolean | false | Also export every other open job of each startup found (slower). |
maxPagesPerSearch | integer | 0 | Cap on page requests per search. 0 = as many as the search needs. |
concurrency | integer | 32 | Pages loaded in parallel (1–64). |
proxyConfiguration | object | Residential | Keep 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)
| Field | Type | Meaning |
|---|---|---|
jobId | string | Wellfound job ID, stable across searches |
title | string | Job title |
url | string | Job page on Wellfound |
role | string | Wellfound role category |
jobType | string | full-time, contract, internship, cofounder |
workplaceType | string | Remote, On-site, Hybrid, On-site or remote |
remote | boolean | Wellfound's remote flag |
locations | string | Office locations |
remoteLocations | string | Where a remote hire may live |
compensation | string | Pay and equity exactly as shown |
salaryMin, salaryMax | number | Salary range |
salaryCurrency | string | ISO code |
salaryPeriod | string | year, month, hour |
equityMin, equityMax | number | Equity range in percent |
hasEquity | boolean | true = equity range shown, false = "No equity", null = not stated |
yearsExperienceMin | number | Minimum years of experience |
postedAt | string | When the job went live (ISO 8601) |
description | string | Full description, plain text |
applicantTrackingSystem | string | Greenhouse, Ashby, Lever, Workable …; null = posted on Wellfound directly |
Company fields (always)
| Field | Type | Meaning |
|---|---|---|
companyId, companyName, companySlug | string | Startup identity |
companyUrl, companyLogoUrl | string | Wellfound page, logo |
companyTagline | string | One-line pitch |
companySize | string | Employee range, e.g. 51-200 |
companyStage | string | Seed / Early / Growth / Scale Stage |
companyBadges | string | All badges |
companyBusinessModel | string | B2B, B2C |
companyActivelyHiring | boolean | Actively hiring badge |
companyResponseSignal | string | Response-time badges |
companyYcFunded, companyTopInvestors, companyGrowingFast | boolean | Badges |
companyValuation | string | $500M+ or $1B+ |
companyGlassdoorRating | number | Glassdoor rating shown by Wellfound |
Job details (includeJobDetails)
| Field | Type | Meaning |
|---|---|---|
remoteWorkPolicy | string | In office, Remote only, Onsite or remote … |
hiresRemotelyIn | string | Where remote hires may be |
visaSponsorship | string | Available / Not Available |
relocation | string | Allowed / Not Allowed |
skills | string | Skills listed on the job |
hiringContact | string | Name — title (location) |
jobLocationsDetailed | string | City, region, country of every location |
jobCountries | string | Countries |
industry | string | Industry of the posting |
directApply | boolean | Apply on Wellfound itself |
recruiterActivity | string | e.g. Recruiter recently active |
Company profile (includeCompanyDetails, also filled by job details)
| Field | Type | Meaning |
|---|---|---|
companyWebsite | string | Website |
companyHeadquarters | string | Location shown by Wellfound |
companyType | string | e.g. Enterprise Software Company |
companyIndustries | string | Industry tags |
companyTotalRaised | number | Total funding, USD |
companyFundingRounds | number | Number of rounds |
companyLastRoundType | string | Pre-Seed … Series D, Acquired, IPO |
companyLastRoundDate | string | YYYY-MM |
companyLastRoundAmount | number | USD, when disclosed |
companyFounders | string | Founders with title |
companyFounderProfiles | string | Founder profile links |
companyTeamBackground | string | Where the team came from |
Company links (includeCompanyLinks or allCompanyJobs)
| Field | Type | Meaning |
|---|---|---|
companyLinkedInUrl, companyTwitterUrl, companyFacebookUrl, companyBlogUrl, companyProductHuntUrl | string | Social and web links |
companyDescription | string | Company description |
companyLiveJobCount | number | Open jobs on Wellfound |
companyMarkets, companyLocations | string | Market and office tags |
Companies mode
| Field | Type | Meaning |
|---|---|---|
matchingJobCount | number | Jobs that matched your search |
matchingJobTitles, matchingJobUrls | string | Those jobs |
matchingSalaryMin, matchingSalaryMax, matchingSalaryCurrency | number / string | Yearly salary range across them |
offersEquity, hiresRemotely | boolean | Any matching job offers equity / is remote |
jobLocations | string | Locations of the matching jobs |
openJobTitles, openJobUrls | string | All 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 for | Wellfound shows | Measured result |
|---|---|---|
roles: ["all"], Max 10,000 | 115 role pages + the remote board | 10,000 jobs in 103 s, 519 pages, 0 duplicates |
roles: ["software engineer"], no limit | 4,927 jobs at 1,768 startups, 89 pages | 2,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 jobs | 5,000 jobs in 67 s |
| 2 roles × 3 locations, Max 1,000 | ~6,500 jobs | 1,000 jobs in 21 s, 167 per search |
| "data scientist", no limit | 406 jobs at 253 startups | 353 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 howallpasses 10,000 jobs. - All company jobs —
allCompanyJobs: trueopens 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):
| Run | Result | Time |
|---|---|---|
| Prefilled input (100 remote software engineering jobs) | 100 jobs | 5 s (first rows after 2 s) |
| 2 roles × 3 locations | 1,000 jobs | 21 s |
| 5 roles | 5,000 jobs | 67 s |
all roles | 10,000 jobs | 103 s (first rows after 1 s) |
| Job details on | 300 jobs | 47 s with 2 GB (101 s with 1 GB) |
| Companies mode + profile + links | 40 startups | 184 s |
| All company jobs | 300 jobs | 161 s |
| Unknown role or city | explained empty result | 6 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 ApifyClientclient = 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 browsing | Wellfound job alerts | Generic web scraper | Wellfound Scraper | |
|---|---|---|---|---|
| Account or login | needed for some views | needed | often | not needed |
| Jobs per hour | ~100 | a few per day | depends on setup | 10,000 in under 2 minutes |
| Salary and equity as numbers | no | no | you write the parser | yes |
| Company funding, founders, LinkedIn | click every page | no | you write the parser | one switch |
| Shuffled result pages handled | no | n/a | no — silently misses startups | yes, multi-pass |
| De-duplication across searches | by hand | n/a | you build it | built in |
| Export | copy-paste | varies | CSV, Excel, JSON, API, Sheets | |
| Maintenance when the site changes | — | — | yours | ours |
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, orallCompanyJobsfor 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
remoteas 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.
Why is the company-links option slower?
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.
⚖️ Is it legal to scrape Wellfound?
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
SUMMARYrecord (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.