$0.99πŸ’°Wellfound Β· Startup Jobs + Funding Stage Signals avatar

$0.99πŸ’°Wellfound Β· Startup Jobs + Funding Stage Signals

Pricing

from $0.99 / 1,000 results

Go to Apify Store
$0.99πŸ’°Wellfound Β· Startup Jobs + Funding Stage Signals

$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

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

21

Total users

18

Monthly active users

3 days ago

Last modified

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.

How Wellfound Startup Jobs Scraper works

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.parse of __NEXT_DATA__ resolves JobListing β†’ Startup β†’ Badge / NewTag / JobListingRemoteConfig refs in-memory. No DOM walking
  • Per-URL maxItems β€” paste 3 listing filters with maxItems: 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.0015 per 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:

FieldWhat it carriesExample (Airbnb)
companyTotalRaisedTotal funding amount in USD (integer)11333560000 ($11.3 B)
companyFundingRoundsCountNumber of recorded rounds20
companyLatestRoundTypeMost recent round name"IPO"
companyLatestRoundClosedAtISO timestamp of latest round"2020-11-27T..."
companyFundingRounds[]Full round history (roundType, closedAt, valuation)20 rounds back to Series B 2011
companyProductDescriptionLong-form product/company bioFull Airbnb marketing copy
companyWebsiteUrlOfficial company URL (not Wellfound)"http://airbnb.com"
companyTwitterUrl / companyLinkedinUrl / companyFacebookUrl / companyBlogUrl / companyProductHuntUrlAll social URLsPopulated when present
companyIsOperatingWhether Wellfound flags it as operationaltrue
companyIsIncubatorWhether the profile is an incubatorfalse
companyIsShellWellfound's shell-company flagfalse
companyIsYcFundedY Combinator funding (new on /company/, not exposed on listings!)true
companyProfileCompletenessScoreWellfound's internal 0-100 completeness78
companyFounders[]Founder identities resolved from User refs[{name: "Joe Gebbia", slug: "joegebbia", ...}, {name: "Brian Chesky", ...}]
enrichmentStatus'enriched' / 'failed' / nullβ€”
enrichmentAttemptsHow many fetch attempts the burst used7

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:

FieldDescriptionCoverage example (Airbnb)
jobDescriptionSnippetFirst ~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
equityEquity component separately from compensation (e.g. "0.1% – 0.5%")0/10 (Airbnb's public, no equity offered)
yearsExperienceMin / yearsExperienceMaxRequired experience range10/10
autoPostedtrue if the job is auto-syndicated from an ATS10/10 (Airbnb is auto-posted)
atsSourceOriginal ATS source ("greenhouse" / "lever" / etc.) when syndicated0/10 (Airbnb returns null)
recruitingContactHiring-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

EventWhen chargedRate
additional-dataEvery job row written$0.0015 ($1.50 / 1k rows)
company-enrichmentPer 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 carries enrichmentStatus so you always know which got through.
  • enrichJobDetail is 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, jobSlugcompanySize, companySizeBand
compensation + parsed min/max/currency/equitycompanyHighConcept
locations[], remote, remoteKind, wfhFlexibleliveJobListingsCount
primaryRoleSlug, postedAt, postedAtUnixmarketTags[], locationTags[]
companyId, companyName, companySlug, companyUrl, companyLogoUrlcompanyStage, 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=ai daily to track which AI startups are hiring fastest, what salary bands they advertise, and which companies hit Wellfound's GROWING_FAST or RECENTLY_FUNDED flags
  • Sourcer / recruiter tooling β€” feed companySlug + companyName into 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 / hasEquity are 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

FieldTypeRequiredNotes
startUrlsstring[]yesWellfound /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.
maxItemsintegernoMaximum 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.
maxConcurrencyintegernoParallel HTTP requests across listing URLs. Sweet spot 3–5 via Apify Residential US. Default 4.
maxRequestRetriesintegernoPer-URL retry budget. Each retry rotates the proxy session with mild exponential backoff and re-races the three HTTP stacks. Default 10.
proxyobjectnoApify 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. jobUrl is the canonical permalink; useful as a join key even though Wellfound itself blocks HTTP fetches of the URL
  • compensation parsed band β€” compensationMin / compensationMax come from Wellfound's free-text strings via a best-effort regex. null when Wellfound shows "Competitive" or omits a band entirely
  • remote + remoteKind + wfhFlexible β€” three flags so you can distinguish "fully remote", "on-site with WFH flexibility", and "hybrid"
  • postedAt ISO + postedAtUnix β€” the moment Wellfound first published the listing (liveStartAt in 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

  1. Resolve & dedupe the startUrls β€” accept /jobs[?…] listing URLs; reject detail URLs up-front with a clear reason
  2. Race three HTTP stacks (impit Firefox / gotScraping / impers Chrome 142) against the first page; first 200 OK with a real body (~250 KB) wins
  3. Parse __NEXT_DATA__ β€” one JSON.parse resolves the full Apollo normalized graph (JobListing, Startup, Badge, NewTag, JobListingRemoteConfig)
  4. Walk JobListing entries in document order, resolve refs in-memory, emit one flat row per job with denormalized company data
  5. Paginate to ?page=N+1 until either the parser returns 0 rows or per-URL maxItems is hit
  6. 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