Wellfound Jobs Scraper - $1 / 1000 Jobs
Pricing
from $1.00 / 1,000 jobs
Wellfound Jobs Scraper - $1 / 1000 Jobs
Scrape Wellfound (AngelList Talent) startup jobs by role, location or remote: full description, salary and equity ranges, remote policy, experience, posted date and the hiring startup. Optional job page details (skills, visa, funding, founders). $1 / 1000 jobs.
Pricing
from $1.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Scrapeunblocker
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Wellfound Jobs Scraper
Scrape Wellfound (formerly AngelList Talent) startup jobs as clean structured JSON - by role, by location, remote only, or from any Wellfound search URL. Every job comes with its full description, the salary range and equity range parsed into numbers, job type, locations, remote policy, accepted remote locations, years of experience, posting date and the hiring startup (name, tagline, size, stage, badges such as "Actively Hiring", "YC Funded" or "Top Investors").
Turn on job page details to also get skills, visa sponsorship, relocation, hiring contact, preferred timezones, salary period and the company's funding and founders - at the same price per job.
Features
- Search by role and location -
software engineer,product-manager,data-scientistxnew york,san-francisco,london... Plain text or Wellfound slugs both work. Every role is searched in every location. - Remote only - each role's remote listing, with the locations remote applicants are accepted from.
- Location only - every startup job in a city.
- Wellfound search URLs - paste
/role/l/<role>/<location>,/role/r/<role>,/role/<role>or/location/<location>pages. - Job URLs - scrape specific job pages in full.
- Deep paging - up to 2000 jobs per search; the
SEARCHESrecord tells the total on Wellfound and the page to continue from. - Deduplicated - a job found by several searches, or also given as a job URL, is returned and billed once (it still counts toward each search's limit).
Use cases
- Job boards and aggregators - fresh startup jobs with salary and equity ranges already parsed.
- Compensation research - salary and equity bands by role, city, company stage and size.
- Recruiting and sales intelligence - which startups are hiring for which roles right now, with their stage and badges.
- Job alerts - schedule the actor and compare
postedAtwith your last run.
Input
| Field | Type | Default | Description |
|---|---|---|---|
roles | array | - | Roles as text or slug (software engineer, product-manager). |
locations | array | - | Locations as text or slug (new york, london). |
remoteOnly | boolean | false | Search each role's remote listing (locations are not used then). |
searchUrls | array | - | Wellfound job search URLs. |
jobUrls | array | - | Wellfound job URLs (https://wellfound.com/jobs/4787364-software-engineer). |
maxResultsPerSearch | integer | 50 | Jobs per role / location / search URL (1-2000). |
includeJobDetails | boolean | false | Add each job's full job page under details. |
proxyCountry | string | - | ISO-2 country to send requests from. |
A run with no roles, locations, search URLs or job URLs searches software-engineer.
Example input
{"roles": ["data scientist", "product-manager"],"locations": ["new york", "london"],"maxResultsPerSearch": 100,"includeJobDetails": true}
Output
One dataset item per job. A search listing row (source: "search", description shortened):
{"id": "4787364","title": "Software Engineer","url": "https://wellfound.com/jobs/4787364-software-engineer","primaryRole": "Software Engineer","jobType": "full-time","compensation": "$170k - $250k","salary": {"min": 170000, "max": 250000, "currency": "USD"},"equity": null,"locations": ["New York City", "San Francisco"],"remote": false,"remotePolicy": "ONSITE","acceptedRemoteLocations": [],"yearsExperienceMin": 4,"yearsExperienceMax": null,"postedAt": "2026-09-30T23:42:54Z","description": "**About Chalk**\n\nChalk is building the data platform that powers the future of machine learning applications...","company": {"name": "Chalk","slug": "chalk-ai","url": "https://wellfound.com/company/chalk-ai","tagline": "Building machine learning infrastructure to answer the world's hardest questions","companySize": "51-200","stage": "Early Stage","badges": ["Actively Hiring", "B2B", "Early Stage", "Top Investors"]},"source": "search","search": {"role": "software-engineer", "location": null, "remote": false},"position": 1}
With includeJobDetails, the row also has details - the job page (shortened):
{"employmentType": "FULL_TIME","datePosted": "2026-09-30T23:42:54Z","industry": "Machine Learning and Computer Science","salary": {"min": 170000, "max": 250000, "currency": "USD", "period": "YEAR"},"jobLocations": [{"city": "New York", "region": "New York", "country": "United States"}],"remotePolicy": "In office","visaSponsorship": false,"relocation": true,"skills": ["Python", "C++", "Rust"],"hiringContact": null,"descriptionHtml": "<p><strong>About Chalk</strong></p>...","company": {"name": "Chalk", "website": "https://chalk.ai/about", "founders": [{"name": "..."}]}}
A job given in jobUrls is the job page itself with source: "job" and input.
The key-value store also holds:
SEARCHES- per search: total jobs and companies on Wellfound, page count, jobs listed and delivered, pages fetched andnextPageto continue from.ERRORS- searches or job URLs that returned nothing (unknown role or location, removed job, blocked) with the reason. These are not billed.
Pricing
$1 per 1000 jobs - a listing row, a row with job page details and a job URL cost the same. You pay only for jobs delivered; failed inputs are not charged.
Notes
- A Wellfound listing page shows 20 startups with up to 3 matching jobs each, so
totalJobson Wellfound can be higher than the number of jobs a search can list. - An unknown role or location (or a location Wellfound has no listing for with that role) ends in
ERRORSwith Wellfound's reason - use the role and city names Wellfound itself uses. - If a job page cannot be opened (for example a job Wellfound took down after listing it), the listing row is still delivered with
details: nulland the reason indetailsError.