Wellfound (AngelList) Jobs, Companies, Salary & Equity Scraper avatar

Wellfound (AngelList) Jobs, Companies, Salary & Equity Scraper

Pricing

from $0.012 / result record

Go to Apify Store
Wellfound (AngelList) Jobs, Companies, Salary & Equity Scraper

Wellfound (AngelList) Jobs, Companies, Salary & Equity Scraper

Scrape Wellfound (AngelList) startup jobs, companies, salaries and equity — no login. Four modes (search, job-details, company-jobs, company-details) with parsed salary + equity ranges, funding stage, company size, markets, seniority inference, dedup, monitoring and a run analytics summary.

Pricing

from $0.012 / result record

Rating

0.0

(0)

Developer

Yuliia Kulakova

Yuliia Kulakova

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

7 days ago

Last modified

Categories

Share

Wellfound (AngelList) Jobs Scraper — startup jobs, salary & equity, company data (no login)

Scrape startup jobs from Wellfound (formerly AngelList Talent) with parsed salary and equity, plus company funding stage, size, and marketsno login, no API key, no cookies. HTTP-first (no browser), fast, and parallel-friendly.

Wellfound Jobs Scraper

Enjoying this Actor? If it's useful, please leave a ⭐️ rating and a short review — it genuinely helps. Something not working right? Open an issue on the Actor's Issues tab — I actively maintain this Actor and respond fast to fix problems and help you get things working.

Wellfound packs compensation into a single human string like "$80k – $90k • 5.0% – 10.0%". This actor splits that into structured salary {min, max, currency, period} and equity {min, max, hasEquity}, then enriches every posting with the company's funding stage, size, markets, badges, and social links. Built for recruiters, job seekers, and startup / market researchers who need clean, structured startup-hiring data instead of raw HTML.


Key features

  • 4 scraping modes in one actorsearch (jobs by role / location / remote), job-details (one record per job URL), company-jobs (all live jobs of a company), and company-details (a company profile with funding, size, markets, and social — optionally with its jobs).
  • Parsed salary + equity. Structured salary {min, max, currency, period} and equity {min, max %, hasEquity} from Wellfound's combined compensation string. Currency-aware ($ USD, £ GBP, EUR, INR, ¥ JPY) and unit-aware, including Indian lakh/crore notation₹5.5L550000, ₹2cr20000000.
  • Company enrichment — funding stage (Early Stage, Growth Stage…), size (11-50, 501-1000…), markets/industries, badges (Actively Hiring, B2B, Growing fast…), tagline, website, social links (Twitter, LinkedIn, Facebook, blog, Product Hunt), live-jobs count, and per-role / per-location / per-type job counts.
  • Seniority inference — every job title is classified (intern, junior, mid, senior, staff, lead, manager, principal, director, executive).
  • Full job descriptions in markdown, plain text, or HTML.
  • Cross-run dedup + monitoring mode — persist seen jobs in a named key-value store and, on scheduled runs, output only new postings. Ideal for job alerts.
  • RUN_SUMMARY analytics — a per-run roll-up saved to the key-value store: salary/equity coverage, remote share, average salary range, and breakdowns by seniority, job type, company size, and funding stage, plus top markets and companies.
  • Strict superset of the top competitor — all four navigation modes, the full union of parsed fields, plus house extras no competitor ships (seniority inference, cross-run monitoring, and the RUN_SUMMARY analytics roll-up).
  • No login required. Public, server-rendered pages only — no account, cookies, or private API.

Input

Configure the run in the Apify Console UI or via JSON / API. Every field is optional; mode selects what to scrape and which fields are used.

FieldTypeDefaultDescription
modeenumsearchsearch | job-details | company-jobs | company-details.
rolestringsoftware engineer(search) Role / keyword, e.g. product designer. Slugified into Wellfound's /role/ pages.
rolesarray(search) Several roles in one run (merged + deduped). Max 10.
locationstringremote(search) City / region, or remote. remote/role/r/{role}; a city → /role/l/{role}/{city}.
locationsarray(search) Several locations in one run. Max 10.
countryNamestring(search) Country, e.g. India. Treated as an extra location (Wellfound has no country facet) and merged with location / locations.
jobUrlsarray(job-details) Job URLs https://wellfound.com/jobs/{id}-{slug}, or bare {id}-{slug} / numeric id.
companiesarray(company-jobs / company-details) Company slugs (openai) or full URLs https://wellfound.com/company/{slug}.
remoteOnlybooleanfalse(search) Keep only remote roles.
jobTypeenum"" (Any)Keep only fulltime / parttime / contract / internship / cofounder.
datePostedenum"" (Any)Max age by the posting's live/posted date: 24h / 3d / 7d / 14d / 30d. Records with no known date are kept.
maxItemsinteger50Max job/company records total. 0 = no cap.
maxPagesinteger5(search) Max result pages per role × location.
descriptionFormatenummarkdownmarkdown / text / html.
parseSalarybooleantrueParse the compensation string into structured salary + equity.
includeCompanyJobsbooleantrue(company-details) Also embed the company's live job listings.
computeAnalyticsbooleantrueSave the RUN_SUMMARY roll-up to the key-value store.
deduplicatebooleantrueDrop duplicates by a company + title + location hash (dedupKey).
deduplicateKeyStorestringNamed key-value store to persist seen keys across runs.
monitoringModebooleanfalseOnly output records not seen in a prior run (requires deduplicateKeyStore).
maxConcurrencyinteger5Concurrency for page / detail / company fetches.
maxChallengeRetriesinteger4Retries with fresh proxy sessions on 403/429/5xx/timeout.
proxyobject(auto)Proxies are included and configured automatically — leave the default in place.

Example — search (jobs by role + location)

{
"mode": "search",
"role": "software engineer",
"location": "remote",
"datePosted": "7d",
"maxItems": 50,
"descriptionFormat": "markdown"
}

Example — job details (by URL)

{
"mode": "job-details",
"jobUrls": [
"https://wellfound.com/jobs/4322508-software-engineer",
"1234567-product-designer"
]
}

Example — company details (profile + funding + jobs)

{
"mode": "company-details",
"companies": ["futurefit-ai-2", "https://wellfound.com/company/openai"],
"includeCompanyJobs": true
}

Output

Results are pushed to the run's dataset (export as JSON, CSV, Excel, etc.). Each record carries a type of job or company.

Job record (trimmed)

{
"mode": "search",
"type": "job",
"jobId": "4322508",
"url": "https://wellfound.com/jobs/4322508-software-engineer",
"title": "Software Engineer",
"role": "Software Engineer",
"company": "FutureFit AI",
"companyId": "8030547",
"companySlug": "futurefit-ai-2",
"companyUrl": "https://wellfound.com/company/futurefit-ai-2",
"companyWebsite": null,
"companyLogo": "https://photos.wellfound.com/…",
"companyTagline": "AI-powered GPS for your Career",
"companySize": "11-50",
"companyStage": "Early Stage",
"companyMarkets": null,
"companyBadges": ["Actively Hiring", "B2B", "Early Stage", "Growing fast"],
"location": { "text": "New York City", "city": "New York City", "state": null, "country": null },
"locationNames": ["New York City"],
"remote": true,
"remoteLocations": ["United States"],
"jobType": "fulltime",
"seniority": "mid",
"compensation": "$150k – $185k",
"salary": { "min": 150000, "max": 185000, "currency": "USD", "period": "yearly", "source": "wellfound" },
"equity": null,
"atsSource": "Ashby",
"postedAt": "2026-09-02",
"postedTimestamp": 1788307200,
"description": "…",
"dedupKey": "…",
"scrapedAt": "2026-09-06T…Z"
}

Job fields: mode, type, jobId, url, title, role, roleParent, company, companyId, companySlug, companyUrl, companyWebsite, companyLogo, companyTagline, companySize, companyStage, companyMarkets, companyBadges, location {text, city, state, country}, locationNames, remote, remoteLocations, jobType, seniority, yearsExperienceMin, yearsExperienceMax, compensation, salary {min, max, currency, period, source}, equity {min, max, hasEquity}, description, atsSource, autoPosted, postedAt, postedTimestamp, dedupKey, scrapedAt. Job-details records also add industry and directApply.

When the employer discloses equity, equity is populated — e.g. a "$80k – $90k • 5.0% – 10.0%" posting yields "equity": { "min": 5, "max": 10, "hasEquity": true }.

Company record (company-details, trimmed)

{
"mode": "company-details",
"type": "company",
"companyId": "8030547",
"name": "FutureFit AI",
"slug": "futurefit-ai-2",
"url": "https://wellfound.com/company/futurefit-ai-2",
"website": "https://www.futurefit.ai/",
"logo": "https://photos.wellfound.com/…",
"tagline": "AI-powered GPS for your Career",
"size": "11-50",
"stage": "Early Stage",
"hiring": true,
"liveJobsCount": 10,
"totalRaised": null,
"markets": ["SaaS", "Hr Tech"],
"locations": ["Canada"],
"badges": ["Actively Hiring", "B2B", "Early Stage", "Growing fast"],
"social": { "twitter": null, "linkedin": null, "facebook": null, "blog": null, "productHunt": null },
"jobCountsByRole": [{ "name": "Engineering", "count": 3 }],
"jobCountsByLocation": [{ "name": "New York City", "count": 6 }],
"metaDescription": "…",
"jobs": [ "…job records…" ],
"scrapedAt": "2026-09-06T…Z"
}

Company fields: mode, type, companyId, name, slug, url, website, logo, tagline, size, stage, hiring, liveJobsCount, totalRaised, markets, locations, badges, social {twitter, linkedin, facebook, blog, productHunt}, jobCountsByRole, jobCountsByLocation, jobCountsByType, metaDescription, jobs, scrapedAt.

RUN_SUMMARY (key-value store)

Each run also saves a RUN_SUMMARY record. Real values from a software engineer / remote run:

{
"mode": "search",
"roles": ["software engineer"],
"locations": ["remote"],
"totalCollected": 187,
"totalOutput": 26,
"withSalary": 22,
"withEquity": 3,
"salaryCoverage": 0.85,
"equityCoverage": 0.12,
"remoteShare": 1,
"avgSalaryMin": 135909,
"avgSalaryMax": 183682,
"bySeniority": { "mid": 10, "senior": 10, "staff": 4, "manager": 1, "lead": 1 },
"byJobType": { "fulltime": 26 },
"byCompanySize": { "11-50": 11, "201-500": 6, "501-1000": 4, "51-200": 3, "1-10": 2 },
"byStage": { "Growth Stage": 9, "Early Stage": 6 },
"topCompanies": [{ "name": "LawnStarter", "count": 3 }, { "name": "Bask Health", "count": 3 }],
"topMarkets": [],
"duplicatesDropped": 0,
"pagesFetched": 5,
"blocked": []
}

Pricing

This actor uses Apify's pay-per-event model: a small start fee per run plus a per-result charge for every record (job or company) pushed to your dataset — on top of your own Apify platform usage (compute + proxy). There are no monthly minimums, and the per-result charge is the dominant cost. The exact start fee and per-result rate are shown on the actor's Pricing tab in the Apify Store. Use maxItems to cap the number of results (and therefore your spend) on any run.


Use cases

  • Startup hiring intelligence — track which startups are actively hiring, at what stage and size, and in which markets. Watch a competitor set with company-jobs / company-details.
  • Salary & equity benchmarking — build compensation benchmarks by role, seniority, location, and funding stage using the structured salary + equity fields (including Indian lakh/crore postings).
  • Candidate & talent sourcing — pull fresh, structured job feeds by role and location; run on a schedule with monitoringMode to surface only new postings for alerts.
  • Market & ecosystem mapping — map startups by funding stage, size, and market/industry tags; roll up hiring signals across a sector with the RUN_SUMMARY analytics.

Honest limitations

We would rather set expectations correctly than overpromise. Wellfound has strong anti-bot protection, which shapes what is reachable and how fast:

  • Proxies are automatic. No proxy setup is needed — proxies are included and configured for you (leave the proxy input on its default). Company pages (/company/*) are heavier and slower (~30 s per company page) than the search / job-detail pages.
  • Equity is null when undisclosed. Only a minority of employers publish equity. In a sample software engineer remote run, only 12% of postings disclosed equity (salary coverage was 85%). When it isn't disclosed, equity is null.
  • companyMarkets and companyWebsite are null in search mode — by construction. Wellfound's SEO search pages embed a slim company node (name, slug, size, stage, badges, tagline, logo) with no markets and no website, and there is no full company entity on the page to backfill from. To get a company's markets and website, run company-details or company-jobs for that company.
  • job-details mode returns a lighter company profile. A single job page carries the posting + salary + company name/website/markets, but not the full company entity — so companyId, companySize, companyStage, companyBadges and companyTagline are null there. Use company-details / company-jobs for the full company enrichment.
  • totalRaised is populated when Wellfound publishes it, else null. Company pages often expose a total-raised amount (e.g. 23850000); when a company doesn't publish one, we emit null (undisclosed) rather than a misleading 0, and companyStage / stage is always available as the funding signal. In search mode the amount isn't on the page, so run company-details for it.
  • Search returns highlighted jobs. Search pages surface each startup's highlighted listings (Wellfound's own SEO page contents), typically the most relevant/recent per company. To enumerate all of one company's live jobs, use company-jobs mode.
  • A blocked page is recorded in RUN_SUMMARY.blocked[] and skipped — it never fails the whole run.

FAQ

Do I need a Wellfound / AngelList account or login? No. The actor reads only public, server-rendered pages — no account, cookies, or private API.

Do I need to set up proxies? No — proxies are included and configured automatically; just leave the proxy input on its default. Company pages are heavier, so those runs take a bit longer.

Which mode should I use? search for role/location/remote discovery, job-details for specific job URLs, company-jobs for a company's full live listings, and company-details for a company's profile (funding stage, size, markets, social).

Can I get only new jobs on a schedule? Yes. Set a deduplicateKeyStore and enable monitoringMode — scheduled runs then output only postings not seen before, which is ideal for alerts.

How is salary parsed for Indian postings? , lakh, and crore are supported: L / lakh / lac = ×100,000 and cr / crore = ×10,000,000. So ₹5.5L – ₹8L{ min: 550000, max: 800000, currency: "INR" }.

In which formats can I export results? Any Apify dataset format — JSON, CSV, Excel, XML, or via the API. Job descriptions can be markdown, plain text, or HTML.


Public data only — no login, no cookies, no private API. The actor parses the same server-rendered pages a logged-out browser receives. Personal data is limited to what employers publish in their postings. You are responsible for complying with Wellfound's Terms of Service and applicable laws (including GDPR/CCPA) when using the collected data.