π Wellfound Jobs Scraper
Pricing
from $3.99 / 1,000 results
π Wellfound Jobs Scraper
Scrape job listings from Wellfound (formerly AngelList Talent) at scale. Search by location, company, keyword, or paste raw URLs.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperX
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
π Wellfound Jobs Scraper β Startup Jobs, Salaries & Companies from Wellfound (AngelList Talent)
Scrape job listings from Wellfound β formerly AngelList Talent, the largest startup job marketplace. Search by location, keyword or company, or paste Wellfound URLs directly, and get every listing with its title, company, location, salary range, employment type, posting date, direct URL and full job description.
Wellfound is where startups hire, and unusually for a job board, most listings publish a salary range. That makes it one of the best public sources for startup compensation data.
What you get
| πΌ Job | π’ Company | π Detail |
|---|---|---|
| Job title | Company name | Full job description |
| Location (normalised) | Employment type (full-time, part-time, contract, internship) | |
| Salary / compensation range | Posting date | |
| Direct job URL | Source label |
Key features
- Four ways to search. By location, by keyword, by company name, or by pasting Wellfound URLs (search/listing pages or individual job-detail pages). URLs take priority when supplied.
- Salary data as standard. Wellfound listings usually include a compensation range, and the Actor normalises it into a consistent field β a genuinely rare thing in job scraping.
- Residential-first networking. Wellfound uses DataDome anti-bot protection that reliably blocks direct and datacenter traffic from cloud IPs. This Actor defaults to residential sticky sessions, rotating the exit IP on each retry, rather than wasting attempts on tiers that never work. Your own proxy configuration still takes precedence.
- Geo-targeted proxy exits. The country field selects where residential exit nodes should appear β useful when a market shows different listings.
- Descriptions that fail gracefully. DataDome serves listing pages but throttles rapid detail-page hits. Rather than burning ~60 seconds per job on a timeout, detail loads use a short readiness budget and auto-disable after 4 consecutive blocks. Every listing field still comes through, and descriptions populate whenever detail pages are reachable β so a run never stalls.
- Real filters. Employment type and date posted (today, 3 days, week, month), plus a loose company-name match.
- Predictable pagination.
pagesToFetchcontrols how many listing pages to open per start URL, at roughly 25 jobs per page. - Never a failed run. Empty input crawls Wellfound's
/jobslanding page and finishes successfully instead of erroring.
Use cases
- Startup job aggregation β feed a niche board with fresh startup roles.
- Startup salary benchmarking β Wellfound's published compensation ranges make this one of the best free sources for startup pay data.
- Recruitment market research β see which startups are hiring, for what, and at what level.
- Competitor hiring intelligence β filter by company name to track exactly what a competitor is building.
- Talent-market analysis β compare role demand and pay across cities and countries.
- Investor and ecosystem research β hiring volume is a strong growth signal for a startup.
- Job-alert automation β schedule a daily run with
datePosted: "today"and push new matches to Slack. - Lead generation for HR tech and recruiting β companies posting many roles are actively spending on hiring.
How it works
- You supply Wellfound URLs, or search filters (location, keyword, company).
- A Wellfound search is built when no URLs are given, combining your location and keyword.
- Listing pages are walked β around 25 jobs each β up to your page count.
- Every listing is normalised: title, company, location, salary, job type and date come from the listing data itself, so records are complete even if detail pages are blocked.
- Detail pages are opened for full descriptions when
fetchDescriptionsis on, with a short readiness budget and automatic disabling if Wellfound throttles them. - Rows stream into the dataset as they are collected.
Quick start
- Open the Actor and enter a Location β e.g.
New York,San FranciscoorRemote. - (Optional) Add a Keyword such as
python engineer. - Set Pages to Fetch (each page β 25 jobs).
- Click Start, then export the Output tab as CSV, Excel or JSON.
Minimal input
{"locationName": "New York","pagesToFetch": 2,"fetchDescriptions": true}
Input configuration
At least one of locationName, companyName, includeKeyword or startUrls should be provided.
Source & search
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | [] | Wellfound URLs in bulk β search/listing pages (https://wellfound.com/location/new-york) or individual job pages (https://wellfound.com/jobs/123456-role). Takes priority over the search filters. |
locationName | string | New York | City or region to search (New York, San Francisco, Remote). Used to build the search URL when no start URLs are given. |
includeKeyword | string | β | Extra search term β role title, skill or technology (e.g. python engineer). Combined with the location. |
companyName | string | β | Keep only cards whose company name loosely matches this value. |
countryName | string | United States | ISO country name used to geo-target residential proxy exit nodes. Pick the country the traffic should appear from. |
Filters & volume
| Field | Type | Default | Description |
|---|---|---|---|
pagesToFetch | integer | 1 | Listing pages to open per start URL. Each page contains ~25 jobs. |
jobType | string | β | FULLTIME, PARTTIME, CONTRACTOR or INTERN. |
datePosted | string | all | today, 3days, week, month or all. |
fetchDescriptions | boolean | true | Open each job page for the full description. Slower and richer; auto-disables if Wellfound blocks detail pages repeatedly. |
Network
| Field | Type | Default | Description |
|---|---|---|---|
proxyConfiguration | object | off | Optional. Leave off to use the Actor's residential-first strategy; supply your own proxy to override it. |
Output data
One row per job.
| Field | Type | Description |
|---|---|---|
job_title | string | Job title. |
company_name | string | Hiring company. |
location | string | Normalised location (including remote). |
salary | string | Normalised compensation range, where Wellfound publishes one. |
job_type | string | Full-time, Part-time, Contract or Internship. |
date | string | Normalised posting date. |
URL | string | Direct link to the job. |
description | string | Full description, when the detail page was reachable. |
posted_via | string | Source label β Wellfound. |
Example output
{"job_title": "Senior Backend Engineer","company_name": "Example Labs","location": "New York, NY (Remote OK)","salary": "$140k β $180k","job_type": "Full-time","date": "2026-08-06","URL": "https://wellfound.com/jobs/123456-senior-backend-engineer","description": "We're an early-stage team building developer infrastructureβ¦","posted_via": "Wellfound"}
Illustrative values β a live run returns current Wellfound data.
Usage examples
Startup roles in a city
{"locationName": "San Francisco","includeKeyword": "engineer","pagesToFetch": 5,"jobType": "FULLTIME"}
Remote-first search
{"locationName": "Remote","includeKeyword": "product designer","pagesToFetch": 4,"datePosted": "week"}
Track one company's hiring
{"includeKeyword": "engineer","companyName": "Example Labs","pagesToFetch": 3}
Fresh roles for a daily alert
{"locationName": "New York","datePosted": "today","pagesToFetch": 3}
Save as a Task, attach a daily Schedule, and push new rows to Slack.
Fast listing-only pass
{"locationName": "Berlin","pagesToFetch": 10,"fetchDescriptions": false}
Turning descriptions off avoids detail-page loads entirely β much faster when you only need titles, companies and salaries.
Salary benchmarking
Run several pages for a role and city, export to CSV, and analyse the salary column. Wellfound's compensation coverage is unusually good for a public job source.
Run it from your own code
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperx/wellfound-jobs-scraper").call(run_input={"locationName": "New York","includeKeyword": "python engineer","pagesToFetch": 3,"fetchDescriptions": True,})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["job_title"], "|", job["company_name"], "|", job["salary"], "|", job["URL"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperx/wellfound-jobs-scraper').call({locationName: 'New York',includeKeyword: 'python engineer',pagesToFetch: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL
curl -X POST "https://api.apify.com/v2/acts/scraperx~wellfound-jobs-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"locationName":"New York","includeKeyword":"python engineer","pagesToFetch":3}'
Integrations
Push jobs into Google Sheets, Airtable, Slack, Make, Zapier, Google Drive or your ATS via webhooks, and use Schedules with datePosted: "today" for a daily startup-jobs feed.
Pricing
Pay-per-event: a small Actor-start charge plus a charge per job row delivered to your dataset. You pay for listings, not run time.
Cost tip: turn fetchDescriptions off when you only need titles, companies, locations and salaries β it removes one page load per job and makes runs considerably faster.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run. Residential proxy traffic is billed separately by the platform according to your plan.
Limits & good to know
- Wellfound uses DataDome anti-bot protection. Residential proxies are effectively required, which is why they are the default. Direct and datacenter traffic from cloud IPs is blocked.
- Descriptions can be blocked even when listings are not. After 4 consecutive detail-page blocks, description fetching auto-disables for the rest of the run. All other fields still populate β that is deliberate, and better than a stalled run.
pagesToFetchis per start URL (~25 jobs per page). Add more URLs or raise the page count for wider coverage.startUrlsoverrides the search filters. Use one approach or the other per run.companyNameis a loose match applied to result cards, not an exact company filter.countryNamecontrols proxy geography, not the job location β uselocationNamefor that.- Empty input crawls Wellfound's
/jobslanding page and finishes successfully rather than failing. - Default run options are 4 GB memory and a 1-hour timeout β raise the timeout for many pages with descriptions on.
FAQ
What is Wellfound? The startup job marketplace formerly known as AngelList Talent β where startups post roles directly.
Do I need a Wellfound account? No. The Actor reads publicly available listings.
Do I get salary data? Yes, whenever Wellfound publishes it β and it usually does. That is one of the main reasons to scrape Wellfound specifically.
Why are some descriptions empty? Wellfound's anti-bot layer throttles rapid detail-page requests. The Actor detects this and disables detail loading rather than stalling; every other field still comes through.
Do I need a proxy? The Actor already defaults to residential sticky sessions, which is what works against DataDome. Supply your own proxy only if you have a specific reason.
What does the country field do?
It geo-targets residential proxy exit nodes. Use locationName to control where the jobs are.
How do I get more results?
Raise pagesToFetch, or supply several start URLs covering different locations or keywords.
Which export formats are supported? JSON, CSV, Excel (XLSX), XML and RSS. The rows are flat, so CSV works perfectly.
Legal & responsible use
This Actor collects publicly available job listings β content companies publish specifically to be found by candidates. It does not log in, submit applications, or access private data. Job descriptions remain the property of their authors. Use the data in line with Wellfound's terms and applicable law, and treat any personal data (recruiter names, contact details) under GDPR and comparable regulations.
Support
Need extra fields, deeper pagination, or a custom startup-hiring pipeline? Open an issue on the Issues tab of this Actor.