Wellfound Startup Jobs Scraper - Salary & Equity avatar

Wellfound Startup Jobs Scraper - Salary & Equity

Pricing

from $3.25 / 1,000 results

Go to Apify Store
Wellfound Startup Jobs Scraper - Salary & Equity

Wellfound Startup Jobs Scraper - Salary & Equity

Collects startup jobs from Wellfound (formerly AngelList Talent) by role and location, with the salary range and the equity range as numbers rather than strings. Each row carries the company, its headcount bucket, the Wellfound handle, the location, a remote flag and a link to the posting.

Pricing

from $3.25 / 1,000 results

Rating

0.0

(0)

Developer

String

String

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

What does Wellfound Startup Jobs Scraper do?

It searches Wellfound (formerly AngelList Talent) by role and location and returns startup job listings with the salary range and the equity range as numbers. Equity is the reason this Actor exists. Almost no other job board publishes an equity grant at all, and on Wellfound it sits in the same display string as the pay, which means it has to be parsed out rather than read from a field.

Give it one or more role keywords in queries and a location that is either a city or Remote. Each pair addresses one Wellfound role landing page, and every startup listed there is written out with its compensation, headcount bucket, location, remote flag and a link to the posting.

  • salaryMin, salaryMax, equityMin and equityMax come back as numbers, not as "$135k – $175k • 0.05% – 0.25%".
  • No equity is recorded as a 00 range, which is a different fact from a listing that never mentions equity and comes back null.
  • The run verifies that Wellfound actually served the role you asked for. It quietly substitutes its generic board for an unknown role rather than returning a 404, and that would otherwise look like a successful run full of off-topic jobs.
  • No Wellfound or AngelList account, cookie or API key. Only public role landing pages are read.

A measured run averaged around 37 listings per role, at a median of 0.7 seconds per request.

What data does it extract?

FieldTypeDescription
jobIdstringWellfound's listing id. Stable, so use it to de-duplicate and to diff between runs
titlestringThe role title as the startup wrote it
companystringThe startup's name
companySlugstringIts Wellfound handle, for example stepsecurity. The key to join listings from the same company
salaryMinnumberLower bound of the advertised pay, for example 135000
salaryMaxnumberUpper bound. null when the listing quotes a single figure or says Up to $215k
currencystringISO code read from the listing's own figure: USD, GBP, EUR, INR, JPY
equityMinnumberLower bound of the equity percentage, for example 0.05
equityMaxnumberUpper bound, for example 0.25. Both are 0 when the listing says No equity
locationstringThe listing's stated locations, or its accepted remote locations when it names no office
isRemotebooleanWellfound's own remote flag on the listing
companySizestringHeadcount bucket, for example 11-50, 1001-5000
jobUrlstringDirect link to the Wellfound posting
querystringThe role keyword this row came from, so a multi-role run stays attributable
sourceUrlstringThe role landing page the row was read from
collectedAtstringISO 8601 timestamp of the run

How compensation is parsed

Wellfound publishes pay as one display string with the two halves separated by a bullet. Both halves are read, and the awkward cases are handled explicitly rather than flattened:

Up to $215k sets salaryMax and leaves salaryMin empty, because those are opposite bounds and repeating one figure as both would be wrong. A single figure with no up to sets the minimum instead. Indian listings written in lakh and crore are converted to plain numbers, so ₹18L – ₹25L becomes 1800000 and 2500000. An explicit three-letter code beats the symbol, which matters because Wellfound uses $ for several different dollars.

Why scrape Wellfound?

Wellfound is the startup end of the job market, and it is the only sizeable board where equity is part of the public listing. That makes it a compensation dataset as much as a jobs dataset.

  • Benchmark startup offers on salary and equity together, which you cannot do from any board that publishes only cash.
  • See how equity ranges move with companySize, from seed-stage grants down to late-stage slivers.
  • Source candidates or competitors by role across the early-stage market, filtered on isRemote.
  • Track which startups in a headcount bucket are hiring, joined on companySlug.
  • Watch a role market over time by running on a schedule and diffing jobId sets.
  • Build a startup lead list from company, companySize and location for anyone selling to early-stage teams.

How to use it

  1. Put role names in Search terms. These address landing pages, so they should read as roles (software engineer, product designer, data scientist) rather than as boolean searches.
  2. Set Location to a city, or leave it as Remote. One location per run, applied to every query.
  3. Set Maximum results if you want a ceiling. The default is 1000.
  4. Start the run, then export as JSON, CSV, Excel or XML, or read the dataset over the API.
  5. To widen coverage, add more role keywords rather than raising maxItems. Each landing page holds what it holds.

Input

FieldTypeDefaultDescription
queriesarray of stringsrequiredRole keywords. Between 1 and 50. Duplicates collapse to one fetch
locationstringRemoteA city, or Remote. One per run
maxItemsinteger1000Cap on dataset rows, up to 50,000
concurrencyinteger2Roles fetched in parallel, up to 5
{
"queries": ["software engineer", "product designer", "growth marketer"],
"location": "Remote",
"maxItems": 1000,
"concurrency": 2
}

The role and location are slugged into the landing-page URL: wellfound.com/role/r/software-engineer for remote, wellfound.com/role/l/software-engineer/san-francisco for a city. Remote, Anywhere and Work from home all mean the remote form.

Output

One row per listing. Illustrative shape:

{
"jobId": "3129476",
"title": "Senior Backend Engineer",
"company": "StepSecurity",
"companySlug": "stepsecurity",
"salaryMin": 135000,
"salaryMax": 175000,
"currency": "USD",
"equityMin": 0.05,
"equityMax": 0.25,
"location": "San Francisco",
"isRemote": true,
"companySize": "11-50",
"jobUrl": "https://wellfound.com/jobs/3129476-senior-backend-engineer",
"query": "backend engineer",
"sourceUrl": "https://wellfound.com/role/r/backend-engineer",
"collectedAt": "2026-08-20T09:14:02.118Z"
}

A listing with no equity mentioned returns equityMin: null and equityMax: null. One that states No equity returns 0 and 0. Keeping those apart is deliberate, because collapsing them would make any equity average you compute quietly wrong.

Each run also writes a SUMMARY record with the item count, the failure count and every role that could not be read, with its reason.

How much does it cost?

Pay per event, charged once per result row written to the dataset. The current rate is on this Actor's pricing tab. A role that has no landing page produces no rows and therefore costs nothing.

One role is one page fetch, so the cost of a run is roughly the number of role keywords you supply.

Runs started from an Apify free plan stop at 250 requests and 250 results, and the run status says so. Any paid plan runs the full input and your maxItems. The cap covers requests as well as rows because these fetches go through our own infrastructure rather than Apify's.

Using it with the Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("usestring/wellfound-jobs").call(run_input={
"queries": ["software engineer", "product designer"],
"location": "Remote",
})
with_equity = [
job for job in client.dataset(run["defaultDatasetId"]).iterate_items()
if job["equityMax"]
]
print(len(with_equity), "listings publish an equity range")

The JavaScript client and the REST API take the same input shape.

Wellfound role landing pages are public. They exist so candidates and search engines can find startup roles, and this Actor reads exactly what an anonymous visitor is served, with no login, no cookie and no API key. Nothing behind Wellfound's authentication wall is touched.

The rows describe job listings and the companies that posted them. There are no candidate profiles, no applicant data and no recruiter contact details in the output.

What you may do with the data depends on your jurisdiction and on the terms you have accepted. Treat this as background, not legal advice.

FAQ

Do I need a Wellfound or AngelList account? No. No account, login, cookie or API key. Only public role landing pages are read.

Does it really return equity? Yes, as numbers. equityMin and equityMax are the percentages the listing publishes, so 0.05 and 0.25 mean 0.05% to 0.25%. A listing that says No equity returns zeroes; one that says nothing at all returns nulls.

Why did a search come back with nothing? Wellfound serves results only for roles and locations it has a landing page for. software engineer and product designer work. An invented or very narrow role has no page, and the run records it under failures rather than returning Wellfound's generic board and passing it off as your search.

Can I search several locations in one run? No. One run searches one location across all of its queries. Start one run per city, or use Remote.

Does it return the posted date or the description? Neither. Wellfound's role landing pages publish no posting date and no description text, so there is nothing to emit. Follow jobUrl for the full posting.

How many listings does one role return? Around 37 in a measured run, which is what a landing page carries. Ten role keywords come to roughly 370 listings. Adding keywords is how you widen coverage.

How fresh is the data? It is fetched live at run time. There is no cached index in front of it, so the rows match the landing page at the moment the run executed.

Feedback

If a role you expect to work comes back as a failure, or a compensation string parses oddly, open an issue from this Actor's Store page and paste the role keyword and the listing text. Wellfound's pay strings have long tails, and a real example is what it takes to cover one.