Wellfound Jobs Scraper: Startup Jobs, Salary, Equity avatar

Wellfound Jobs Scraper: Startup Jobs, Salary, Equity

Pricing

from $2.70 / 1,000 jobs

Go to Apify Store
Wellfound Jobs Scraper: Startup Jobs, Salary, Equity

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

Arcadium Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

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

FieldWhat it holds
jobId, url, title, role, jobTypeThe job: Wellfound's id (stable between runs), its page, the title, Wellfound's role category and full-time / contract / internship / cofounder.
compensation, salary, equityMinPercent, equityMaxPercentPay and equity as shown ("$75k – $150k CAD • 0.0% – 0.1%"), and parsed: salary is {min, max, currency, period, source}.
locations, remote, remoteKind, wfhFlexible, acceptedRemoteLocationsWhere the job is, and the remote policy.
yearsExperienceMin, yearsExperienceMax, postedAtExperience asked for; when the job went live.
descriptionThe full job description in Markdown (emails, phone numbers and greeting names removed).
atsSource, autoPostedThe applicant tracking system the job came from (greenhouse, ashby, lever, workable, ...).
companyName, companySlug, companyUrl, companyTagline, companyLogoUrlThe startup.
companySize, companyStage, companyBadges, valuation, ycFunded, topInvestors, recentlyFundedStartup signals Wellfound shows: size range, stage (Early / Growth / Scale / Public), funding and hiring badges.
companyWebsite, industries, jobLocations, directApply, validThroughFrom the job page, with includeJobDetails (null otherwise).
source, sourceType, searchRole, searchLocation, positionWhich search the job came from and its rank in it.
jobsDbWith 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

FieldWhat it does
rolesWellfound roles by name or slug ("software engineer", "product-manager"); each is searched in every location.
locationsCities or countries ("San Francisco", "London", "united-states"); "remote" searches remote jobs. Without roles, a location returns all startup jobs there.
remoteOnlySearch each role on its remote page; locations are ignored.
startUrlsWellfound role or location pages (/role/..., /role/l/<role>/<place>, /role/r/<role>, /location/<place>).
maxJobsPerSearchJobs per search, 1 to 10,000 (default 100).
maxItemsStop after this many jobs in total. A cost cap.
jobTypes, postedWithinDaysKeep only these job types; only jobs that went live in the last 1, 3, 7, 14 or 30 days.
includeJobDetailsAlso read each job page: company website, industries, structured address and salary. Same price, slower.
descriptionFormat, maxDescriptionCharsmarkdown (default) or none; cut long descriptions.
jobsDbExportAdd the jobsDb merge fields.
includeErrorRowsA 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 ApifyClient
client = 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 planPer 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.

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).
  • postedWithinDays and jobTypes are 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.