Wellfound Jobs Scraper: Startup Jobs, Salary, Equity
Pricing
from $2.70 / 1,000 jobs
Wellfound Jobs Scraper: Startup Jobs, Salary, Equity
Wellfound (AngelList Talent) startup jobs by role, location or URL with salary, equity, description and company stage; $2.70 per 1,000 jobs. Role, location and remote searches, company website and ATS on request. No founder or recruiter names, free error rows.
Pricing
from $2.70 / 1,000 jobs
Rating
0.0
(0)
Developer
Arcadium Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Wellfound Jobs Scraper: Startup Jobs, Salary, Equity
Give it roles and locations (or Wellfound URLs) and it returns one JSON row per startup job on Wellfound (formerly AngelList Talent): title, pay range, equity, full description, locations, remote policy, and the startup's stage, size, pitch and badges such as Top Investors or YC Funded. $2.70 per 1,000 jobs, job page details included; you pay only for rows you get.
Why this actor
- Salary and equity on the row, plus funding badges for startup targeting.
- Company domain and ATS on request (
jobsDbExport) to merge with other job sources. - Alias field names are accepted:
keyword,role,location,remote,searchUrls,urls,maxJobs,limit. - No founders, recruiters or team members are collected; unknown roles or places are free error rows.
Built by Arcadium Data: public data, dated and agent-ready, never personal data.
Use with AI agents
The actor takes plain JSON and returns one flat row per job, so an AI agent or MCP client (for example through mcp.apify.com) can call arcadium/wellfound-jobs directly. Input example for "software engineer jobs at startups in New York and San Francisco":
{ "roles": ["software engineer"], "locations": ["New York", "San Francisco"], "maxJobsPerSearch": 100 }
"Remote data scientist jobs, with each startup's website":
{ "roles": ["data scientist"], "remoteOnly": true, "includeJobDetails": true, "maxJobsPerSearch": 50 }
Read title, companyName, compensation, salary, equityMinPercent, locations, remote, companyStage, companySize and url. 100 jobs cost $0.27 plus the start fee. A role or location Wellfound does not know, or a URL that is not a Wellfound role or location page, comes back as a free row with rowType: "error", a code (not_found, unavailable, blocked, invalid_input) and a message, never as a failed run. Retry on blocked and unavailable later.
What you get
| Field | What it holds |
|---|---|
jobId, url, title, role, jobType | The job: Wellfound's id (stable between runs), its page, the title, Wellfound's role category and full-time / contract / internship / cofounder. |
compensation, salary, equityMinPercent, equityMaxPercent | Pay and equity as shown ("$75k – $150k CAD • 0.0% – 0.1%"), and parsed: salary is {min, max, currency, period, source}. |
locations, remote, remoteKind, wfhFlexible, acceptedRemoteLocations | Where the job is, and the remote policy. |
yearsExperienceMin, yearsExperienceMax, postedAt | Experience asked for; when the job went live. |
description | The full job description in Markdown (emails, phone numbers and greeting names removed). |
atsSource, autoPosted | The applicant tracking system the job came from (greenhouse, ashby, lever, workable, ...). |
companyName, companySlug, companyUrl, companyTagline, companyLogoUrl | The startup. |
companySize, companyStage, companyBadges, valuation, ycFunded, topInvestors, recentlyFunded | Startup signals Wellfound shows: size range, stage (Early / Growth / Scale / Public), funding and hiring badges. |
companyWebsite, industries, jobLocations, directApply, validThrough | From the job page, with includeJobDetails (null otherwise). |
source, sourceType, searchRole, searchLocation, position | Which search the job came from and its rank in it. |
jobsDb | With jobsDbExport: {ats, companyDomain, fingerprint} to merge with other job sources. |
Output example:
{"rowType": "job","platform": "wellfound","jobId": "4844846","url": "https://wellfound.com/jobs/4844846-software-engineer","title": "Software Engineer","role": "Software Engineer","jobType": "full-time","remote": false,"remoteKind": null,"wfhFlexible": null,"locations": ["New York"],"acceptedRemoteLocations": [],"compensation": "$142k – $187k","salary": { "min": 142000, "max": 187000, "currency": "USD", "period": "year", "source": "structured" },"equityMinPercent": null,"equityMaxPercent": null,"yearsExperienceMin": null,"yearsExperienceMax": null,"postedAt": "2026-10-15T00:02:06Z","description": "## About Check\n\nPayroll is broken. It's still running on decades-old infrastructure. **We're rebuilding it.** ...","atsSource": "ashby","autoPosted": false,"companyId": "8170097","companyName": "Check","companySlug": "checkhq","companyUrl": "https://wellfound.com/company/checkhq","companyTagline": "Check’s mission is to make paying people simple","companySize": "51-200","companyStage": "Growth Stage","companyBadges": ["Actively Hiring", "B2B", "Growth Stage", "Top Investors", "Valuation $500M+"],"ycFunded": false,"topInvestors": true,"recentlyFunded": false,"valuation": "Valuation $500M+","companyLogoUrl": "https://photos.wellfound.com/startups/i/8170097-670b14dbd6d668e33d45382818a7008d-medium_jpg.jpg","companyWebsite": "https://checkhq.com/","industries": ["SaaS", "Enterprise Software", "B2B", "Payments", "Hr Tech", "Fin Tech"],"jobLocations": [{ "locality": null, "region": "New York", "country": "United States" }],"directApply": true,"validThrough": null,"detailsIncluded": true,"source": "software engineer in new york","sourceType": "roleLocation","searchRole": "software-engineer","searchLocation": "new-york","position": 1,"scrapedAt": "2026-10-22T12:00:00.000Z"}
Input
| Field | What it does |
|---|---|
roles | Wellfound roles by name or slug ("software engineer", "product-manager"); each is searched in every location. |
locations | Cities or countries ("San Francisco", "London", "united-states"); "remote" searches remote jobs. Without roles, a location returns all startup jobs there. |
remoteOnly | Search each role on its remote page; locations are ignored. |
startUrls | Wellfound role or location pages (/role/..., /role/l/<role>/<place>, /role/r/<role>, /location/<place>). |
maxJobsPerSearch | Jobs per search, 1 to 10,000 (default 100). |
maxItems | Stop after this many jobs in total. A cost cap. |
jobTypes, postedWithinDays | Keep only these job types; only jobs that went live in the last 1, 3, 7, 14 or 30 days. |
includeJobDetails | Also read each job page: company website, industries, structured address and salary. Same price, slower. |
descriptionFormat, maxDescriptionChars | markdown (default) or none; cut long descriptions. |
jobsDbExport | Add the jobsDb merge fields. |
includeErrorRows | A free row for every input without jobs (on by default). |
These input field names are also accepted as they are (keyword, role, location, remote, searchUrls, urls, maxJobs, limit).
Use it from code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("arcadium/wellfound-jobs").call(run_input={"roles": ["machine learning engineer"],"locations": ["Berlin", "London"],"maxJobsPerSearch": 200,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item["rowType"] == "job":print(item["title"], item["companyName"], item["companyStage"], item["compensation"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('arcadium/wellfound-jobs').call({roles: ['product manager'],remoteOnly: true,maxJobsPerSearch: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((i) => i.rowType === 'job').length, 'jobs');
Pricing
You pay per job delivered, the same on every Apify plan. Error rows and jobs that two of your searches both found are free.
| Apify plan | Per 1,000 jobs |
|---|---|
| Free | $2.70 |
| Starter (Bronze) | $2.70 |
| Scale (Silver) | $2.70 |
| Business (Gold) | $2.70 |
| Platinum | $2.70 |
| Diamond | $2.70 |
Plus a one-off $0.001 per GB of memory when a run starts (the run uses 512 MB).
Set a maximum cost per run in the Apify run options and the actor stops before it goes over.
Related actors
Use cases
- Startup recruiting: who is hiring for a role in a city, with pay and equity, and how fast they answer.
- Job boards and aggregators: fresh startup jobs per role, with the ATS they come from.
- VC and market research: hiring by stage, size and funding badges; which YC or top-investor startups grow a team.
- Sales prospecting: growing startups with their website (
includeJobDetails), ready to enrich. - Salary and equity benchmarks for startup roles.
Limitations
- Wellfound's role and location pages list up to three jobs per startup per page; a startup with more open roles shows the rest on its own page, which this actor does not read.
- The search covers the roles and places Wellfound has landing pages for. An unknown location is reported as
not_found, not silently widened. - Company websites, industries and structured salaries need
includeJobDetails(one extra request per job). postedWithinDaysandjobTypesare applied to the jobs a page lists, so a strict filter still reads the pages it skips.- No people: founders, recruiters and team members are not collected.
Privacy
Public job listings only, read the way an anonymous visitor's browser reads Wellfound's public role pages. No login, no account. No founder, recruiter or contact names are collected; emails and phone numbers in descriptions are replaced with [email] and [phone], and greeting names are removed. Startup names are companies.
FAQ
Why are there fewer jobs than Wellfound's headline count? The role pages show each startup with up to three of its jobs. The headline counts every open job of every startup.
What is atsSource good for?
It names the applicant tracking system behind the job (Greenhouse, Ashby, ...). Pair it with our Career Site Jobs actor to read the startup's full job board.
Something looks wrong in the output. Who do I tell? Open an issue on the actor page with the run link. We read them all.