$0.99π°Wellfound Β· Startup Jobs + Funding Stage Signals
Pricing
from $0.99 / 1,000 results
$0.99π°Wellfound Β· Startup Jobs + Funding Stage Signals
[$0.99π°] Wellfound startup jobs scraper β paste any /jobs listing URL (with optional ?market/?industry/?location filter) and get flat rows with title, comp band, locations, remote flag, company size, market tags, and Wellfound's funding-stage signals. Listings-only, JSON/CSV out
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
21
Total users
18
Monthly active users
3 days ago
Last modified
Categories
Share
Wellfound Startup Jobs Scraper
Scrape startup job listings from Wellfound.com (formerly AngelList Talent) β title, compensation band, locations, remote flag, posted date, plus the startup's name, logo, slug, company-size band, market tags, headcount, and Wellfound's funding-stage / top-investor / recently-funded / growing-fast signals β denormalized into every row. Paste any /jobs listing URL (with optional ?location, ?industry, or ?market filter) and get back self-contained flat rows ready for CSV.

Why this actor
Wellfound is the largest English-language startup job board β ~50 jobs per listing page across many filters and ~500 pages of pagination. It also runs DataDome anti-bot protection on company-profile, role-search, and individual-job-detail pages, so most scrapers either break or charge premium prices for thin data.
This actor takes a different angle: everything you need is already on the listing page. Wellfound server-renders its /jobs Apollo state with the full JobListing + Startup graph embedded β one fetch unlocks ~50 jobs with denormalized company data, no detail-page enrichment required.
- Three-stack race fetch β impit (Rust + rustls Firefox), gotScraping (Node + headerGenerator), and impers (libcurl-impersonate Chrome 142). The fastest legit response wins per page, so a single fingerprint hiccup doesn't burn the retry budget
- Apollo-state extraction β one
JSON.parseof__NEXT_DATA__resolvesJobListingβStartupβBadge/NewTag/JobListingRemoteConfigrefs in-memory. No DOM walking - Per-URL
maxItemsβ paste 3 listing filters withmaxItems: 200β up to 600 rows (200 per filter). Free-tier users have a hidden global ceiling of 100 rows - Apify Residential US by default β Wellfound is US-centric and serves canonical English pages with full Apollo state on US exits
- One flat row per job β company-level fields are denormalized on every row so CSV consumers don't need to join
- No actor-start fee β pricing is a flat
$0.0015per row ($1.50 / 1,000 jobs). Your cost = rows Γ rate, with nothing extra on top. Most Wellfound scrapers add a per-run charge ($0.005-$0.20) on top of their per-row rate; we don't
v1.1 β opt-in /company/{slug} enrichment π
When you set enrichCompanyProfile: true, after the listings phase completes the actor runs a second pass: for each unique startup in the dataset, it fires 30 parallel undici fetches at /company/{slug}, parses the Apollo state, and merges these fields into every job row for that company:
| Field | What it carries | Example (Airbnb) |
|---|---|---|
companyTotalRaised | Total funding amount in USD (integer) | 11333560000 ($11.3 B) |
companyFundingRoundsCount | Number of recorded rounds | 20 |
companyLatestRoundType | Most recent round name | "IPO" |
companyLatestRoundClosedAt | ISO timestamp of latest round | "2020-11-27T..." |
companyFundingRounds[] | Full round history (roundType, closedAt, valuation) | 20 rounds back to Series B 2011 |
companyProductDescription | Long-form product/company bio | Full Airbnb marketing copy |
companyWebsiteUrl | Official company URL (not Wellfound) | "http://airbnb.com" |
companyTwitterUrl / companyLinkedinUrl / companyFacebookUrl / companyBlogUrl / companyProductHuntUrl | All social URLs | Populated when present |
companyIsOperating | Whether Wellfound flags it as operational | true |
companyIsIncubator | Whether the profile is an incubator | false |
companyIsShell | Wellfound's shell-company flag | false |
companyIsYcFunded | Y Combinator funding (new on /company/, not exposed on listings!) | true |
companyProfileCompletenessScore | Wellfound's internal 0-100 completeness | 78 |
companyFounders[] | Founder identities resolved from User refs | [{name: "Joe Gebbia", slug: "joegebbia", ...}, {name: "Brian Chesky", ...}] |
enrichmentStatus | 'enriched' / 'failed' / null | β |
enrichmentAttempts | How many fetch attempts the burst used | 7 |
Bonus β per-job "side-band" data (free side-effect of company enrichment)
The /company/{slug} Apollo state embeds the company's recent JobListings with richer fields than the listing-page versions. When company enrichment succeeds, the embedded data is harvested for free and populated on the matching job rows β no extra fetches, no extra charges, no DataDome wall to cross:
| Field | Description | Coverage example (Airbnb) |
|---|---|---|
jobDescriptionSnippet | First ~500 chars of the job description as HTML (the "snippet" Wellfound shows in cards). Partial answer to "full job description" without /jobs/{id}. | 10/10 jobs populated |
jobType | "full_time" / "contract" / "part_time" / "internship" | 10/10 |
equity | Equity component separately from compensation (e.g. "0.1% β 0.5%") | 0/10 (Airbnb's public, no equity offered) |
yearsExperienceMin / yearsExperienceMax | Required experience range | 10/10 |
autoPosted | true if the job is auto-syndicated from an ATS | 10/10 (Airbnb is auto-posted) |
atsSource | Original ATS source ("greenhouse" / "lever" / etc.) when syndicated | 0/10 (Airbnb returns null) |
recruitingContact | Hiring-manager identity when Wellfound exposes it β { name, slug, avatarUrl, pathName }. Typically populated for manually-posted jobs at smaller startups, null for auto-posted ATS jobs. | 0/10 (Airbnb is ATS-auto-posted) |
Pricing
| Event | When charged | Rate |
|---|---|---|
additional-data | Every job row written | $0.0015 ($1.50 / 1k rows) |
company-enrichment | Per successful company (de-duped β a company with 56 jobs = 1 charge) | $0.0015 per company |
So a 1,000-row run with enrichment ON across ~150 unique companies costs roughly $1.50 (rows) + $0.225 (companies) = $1.725. Failed enrichments cost nothing extra.
Honest caveats
- Best-effort fetching. Wellfound's DataDome wall on
/company/lets a fluctuating 5-15% of attempts through per IP-session. With 30 parallel attempts per company we typically hit 70-90% URL success rate β but in observed pool-degraded windows we've seen 0%. Every row carriesenrichmentStatusso you always know which got through. enrichJobDetailis the harder surface. Wellfound's job-detail pages are protected more aggressively than company pages β expect ~30-60% per-job success on a good day, lower during anti-bot surges. Failed enrichments are NOT charged.
Honest field-coverage note
Wellfound only attaches the full structured graph to featured listings (~4 of ~50 jobs per page). The remaining ~92% of rows carry the basic job + company-identity fields (title, comp band, locations, remote, posted, company name + slug + logo) but leave the funding-stage / market-tags / badges / company-size fields as null / empty arrays.
What this means for you:
| Always populated (every row) | Sparse β only on featured rows (~8%) |
|---|---|
jobId, jobTitle, jobUrl, jobSlug | companySize, companySizeBand |
compensation + parsed min/max/currency/equity | companyHighConcept |
locations[], remote, remoteKind, wfhFlexible | liveJobListingsCount |
primaryRoleSlug, postedAt, postedAtUnix | marketTags[], locationTags[] |
companyId, companyName, companySlug, companyUrl, companyLogoUrl | companyStage, companyStageLabel |
recentlyFunded, hasTopInvestors, growingFast, activelyHiring, topResponder, quickResponder (default false for non-featured) | businessType (B2B / B2C) |
allBadgeLabels[] |
To get only the rich-featured rows, filter your output for companyStage != null post-run. Across multiple pages the featured set rotates, so paginating to ?page=N reveals progressively more featured startups.
Use cases
- Startup hiring tracker β paginate
/jobs?market=aidaily to track which AI startups are hiring fastest, what salary bands they advertise, and which companies hit Wellfound'sGROWING_FASTorRECENTLY_FUNDEDflags - Sourcer / recruiter tooling β feed
companySlug+companyNameinto outbound CRMs to build a "currently hiring in {market}" lead list; the compensation band on every row lets you pre-filter by salary tier - Compensation benchmarking β
compensationMin/compensationMax/compensationCurrency/hasEquityare parsed from Wellfound's raw band strings, so you can run quantile analysis without re-parsing - VC / analyst feeds β featured-row signals (
companyStage,recentlyFunded,hasTopInvestors,growingFast) are useful for tracking which startups Wellfound itself flags as venture-backed and growing. Honest caveat: investor names + raise amounts aren't published on the listing surface, only the boolean flags - Remote-job aggregation β
remote: true+acceptedRemoteLocations[]lets you filter for region-eligible remote roles
Input
| Field | Type | Required | Notes |
|---|---|---|---|
startUrls | string[] | yes | Wellfound /jobs listing URLs (optionally with ?location, ?industry, ?market, ?page params). Detail URLs (/jobs/{id}, /company/{slug}, /role/...) are rejected β DataDome blocks them for HTTP-only clients. |
maxItems | integer | no | Maximum job rows emitted per startUrl. 3 listings Γ maxItems: 200 β up to 600 total rows (200 each). Each row = one paid additional-data. Default 1000. Free-tier users have a hidden global ceiling of 100 rows. |
maxConcurrency | integer | no | Parallel HTTP requests across listing URLs. Sweet spot 3β5 via Apify Residential US. Default 4. |
maxRequestRetries | integer | no | Per-URL retry budget. Each retry rotates the proxy session with mild exponential backoff and re-races the three HTTP stacks. Default 10. |
proxy | object | no | Apify Residential US is the default. Direct connections from non-US IPs sometimes get rerouted to localized variants; US residential always returns canonical English pages. |
Example input
{"startUrls": ["https://wellfound.com/jobs","https://wellfound.com/jobs?market=ai","https://wellfound.com/jobs?location=san-francisco"],"maxItems": 200,"maxConcurrency": 4,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }}
That yields up to 600 job rows β 200 per listing URL, ~4 pages each (Wellfound serves ~50 jobs per page).
Output schema
One flat row per JobListing. All identity + compensation + remote + posted fields are populated on every row; the structured "featured" fields are sparse (see honest note above).
{// ββ Job identity ββ"jobId": "4246042","jobUrl": "https://wellfound.com/jobs/4246042-sales-development-representative","jobSlug": "sales-development-representative","jobTitle": "Sales Development Representative",// ββ Compensation (parsed best-effort from Wellfound's free-text band) ββ"compensation": "$40k β $80k β’ No equity","compensationMin": 40000,"compensationMax": 80000,"compensationCurrency": "USD","hasEquity": false,// ββ Location + remote ββ"locations": ["Dubai", "New York City", "San Francisco", "London", "Paris", "Bengaluru"],"acceptedRemoteLocations": [],"remote": true,"remoteKind": "REMOTE", // REMOTE / ONSITE / HYBRID"wfhFlexible": false,// ββ Role + time ββ"primaryRoleSlug": "sales-development-3","postedAt": "2026-05-22T06:49:02.000Z","postedAtUnix": 1779432542,// ββ Company identity (denormalized β always populated) ββ"companyId": "10559109","companyName": "CredShields Technologies","companySlug": "credshields-blockchain-security","companyUrl": "https://wellfound.com/company/credshields-blockchain-security","companyLogoUrl": "https://photos.wellfound.com/startups/i/10559109-β¦.jpg",// ββ Company structured data (FEATURED ROWS ONLY β ~8% of rows have these) ββ"companySize": "SIZE_201_500", // null on non-featured rows"companySizeBand": "201-500 employees", // null on non-featured rows"companyHighConcept": "Unlock the potential of every investment partnership", // null on non-featured rows"liveJobListingsCount": 56, // null on non-featured rows β total open jobs at this company"marketTags": ["Real Estate Tech", "B2B Software"], // [] on non-featured rows"locationTags": ["San Francisco"], // [] on non-featured rows// ββ Wellfound badge signals (FEATURED ROWS ONLY) ββ"companyStage": "scale_stage", // "early_stage" / "scale_stage" / null"companyStageLabel": "Scale Stage", // human label / null"recentlyFunded": false, // raised in last 6 months (boolean)"hasTopInvestors": true, // Wellfound flagged top investors (boolean)"growingFast": true, // strong hiring growth in last month (boolean)"activelyHiring": true, // actively processing applications (boolean)"topResponder": false, // top 1% of responders (boolean)"quickResponder": false, // responds within a day (boolean)"businessType": "B2B", // "B2B" / "B2C" / null"allBadgeLabels": ["Actively Hiring", "B2B", "Scale Stage", "Top Investors", "Growing fast"],// ββ Meta ββ"sourcePageUrl": "https://wellfound.com/jobs","sourcePageIndex": 1,"scrapedAt": "2026-05-22T09:13:58.526Z"}
Key output fields
jobId+jobUrlβ stable Wellfound identifiers.jobUrlis the canonical permalink; useful as a join key even though Wellfound itself blocks HTTP fetches of the URLcompensationparsed band βcompensationMin/compensationMaxcome from Wellfound's free-text strings via a best-effort regex.nullwhen Wellfound shows "Competitive" or omits a band entirelyremote+remoteKind+wfhFlexibleβ three flags so you can distinguish "fully remote", "on-site with WFH flexibility", and "hybrid"postedAtISO +postedAtUnixβ the moment Wellfound first published the listing (liveStartAtin their schema)- Company "rich" fields β only populated on featured rows. The honest note above explains why β Wellfound only attaches the structured graph to paid-promoted listings, and we report what Wellfound actually serves rather than padding non-featured rows with fake data
How it works
- Resolve & dedupe the
startUrlsβ accept/jobs[?β¦]listing URLs; reject detail URLs up-front with a clear reason - Race three HTTP stacks (impit Firefox / gotScraping / impers Chrome 142) against the first page; first 200 OK with a real body (~250 KB) wins
- Parse
__NEXT_DATA__β oneJSON.parseresolves the full Apollo normalized graph (JobListing,Startup,Badge,NewTag,JobListingRemoteConfig) - Walk JobListing entries in document order, resolve refs in-memory, emit one flat row per job with denormalized company data
- Paginate to
?page=N+1until either the parser returns 0 rows or per-URLmaxItemsis hit - Push each row through
Dataset.pushData+Actor.chargeOutputRecord('additional-data')
FAQ
Why are the company-size / market-tag / badge fields empty on most rows?
Wellfound only attaches the full Apollo Startup payload to featured (paid-promoted) listings β roughly 4 of every 50 jobs per page. Non-featured rows get the lean shape (id, name, slug, logoUrl). We surface the truth of what Wellfound serves; we don't fabricate data. To get only the rich rows, filter your dataset post-run for companyStage != null.
Can you scrape the full job description / company profile / investor list?
No β those live behind DataDome-protected detail pages (/jobs/{id}, /company/{slug}) that don't serve to non-browser clients. Adding a JS-runtime stack would bypass this but would also dramatically raise per-row cost and break the listings-only price point. We chose to ship narrow + honest.
Is the actor US-only? The default proxy is US Residential because Wellfound is US-centric and US exits return canonical English pages. EU residential also works; the proxy is configurable.
Does pagination really go to page 500?
Yes β we verified /jobs?page=500 returns 200 OK with full Apollo state. The realistic ceiling is wherever Wellfound stops serving fresh listings; the scraper's natural stop condition is "0 rows on a page β end".
What happens if Wellfound changes the Apollo schema?
The parser emits a structured warning (apolloState.data missing or malformed) and the page is treated as the end of pagination β noisy degradation rather than silent breakage. You'll see the warning in the log immediately on the first run.
How do I get only fully-remote jobs?
Filter the output for remote === true. We can't push the ?remote=true query filter to Wellfound directly β DataDome blocks that specific param β so we filter client-side after the scrape.
Support
Issues / feature requests / pricing questions β open a ticket on the Apify console issues tab for this actor.
Additional services
Apify hosts a portfolio of complementary actors covering related surfaces. If you need scrapers for LinkedIn jobs, Indeed, Glassdoor reviews, or AmbitionBox employee feedback, check the same author's other listings.
Explore more scrapers
If Wellfound covers your startup-job needs, you may also be interested in:
- AmbitionBox Reviews Scraper β employee reviews from India's leading review platform
- TotalJobs Scraper β UK-wide job listings from the Stepstone Group brands
- Expedia Hotel Reviews Scraper β Expedia + Hotels.com reviews with sort/filter URN support
β οΈ Disclaimer
This actor scrapes only publicly accessible Wellfound listing pages (https://wellfound.com/jobs). It does not bypass authentication, solve CAPTCHAs, or access private data. Detail URLs (/jobs/{id}, /company/{slug}, /role/...) are explicitly rejected β we don't try to fetch DataDome-protected surfaces. You are responsible for compliance with Wellfound's Terms of Service in your jurisdiction. The scraper is provided "as is" without warranty; use is at your own risk.
SEO Keywords
wellfound scraper, wellfound jobs scraper, angellist talent scraper, angellist jobs scraper, startup job scraper, startup hiring scraper, wellfound api, wellfound listings scraper, vc-backed startup jobs, ai startup jobs scraper, fintech startup jobs scraper, san francisco startup jobs scraper, remote startup jobs scraper, wellfound salary scraper, wellfound compensation scraper, startup sourcing tool, recruiter sourcing scraper, hiring intelligence scraper, wellfound data export, apify wellfound, wellfound csv export, recently funded startup jobs, growing startups jobs scraper, top investor startups, scale stage startups, early stage startups jobs, wellfound market filter, wellfound industry filter, wellfound location filter, datadome bypass wellfound, headless wellfound scraper