Wellfound Jobs Scraper (AngelList)
Pricing
from $0.08 / 1,000 jobs
Wellfound Jobs Scraper (AngelList)
Scrape Wellfound (AngelList) startup jobs by role, city or remote. Each row has the full description in Markdown, salary and equity, company size, tagline and badges, locations and the exact posting time. Filter by job type, seniority, salary or company. $0.085 per 1,000 jobs.
Pricing
from $0.08 / 1,000 jobs
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape Wellfound (AngelList) startup jobs by role, city or remote, with the full job description: every listing comes back as a row with the whole description in Markdown, the salary and the equity as separate fields, the company with its size, tagline and Wellfound badges, and the exact minute the job went live.
Each listing page carries roughly 40 to 49 complete jobs, descriptions included, so a run of a few hundred jobs reads only a handful of pages. What it cannot reach is a company's own jobs page on Wellfound, which needs a login.
| Input | Wellfound role slugs, optionally with cities or remote, plus filters |
| Output | One row per job: full description, salary and equity, company size, tagline and badges, locations, remote terms, exact posting time |
| Ceiling | 5,000 jobs per run |
| Account needed | None, no login and no cookie |
| Price | $0.085 per 1,000 jobs on the free plan, down to $0.082 on Business. The free plan's $5 a month covers about 58,000 |
π What Wellfound Jobs Scraper does
It walks Wellfound's role pages. wellfound.com/role/software-engineer on its own, or
wellfound.com/role/l/software-engineer/san-francisco when you add a city, or the remote pages when
you switch Remote only on.
Each page is read in full and turned into one row per job. A listing that appears under two of your roles is written once and billed once.
Filters run on your side after the rows arrive, and anything they drop is not billed: job type, a
substring match on location, a substring match on keywords, senior roles only, a minimum salary in
US dollars, and companies to leave out. One warning about the keyword filter. It looks at the title,
the company and the whole description, so a short needle like go or ai keeps nearly every row.
Use a phrase.
π What data you get from each Wellfound job
| What you get | Field |
|---|---|
| The job and its stable ID | jobId, title, jobUrl, primaryRoleTitle, jobType |
| The whole description, in Markdown | description |
| Pay as Wellfound writes it, and split into salary and equity | compensation, salaryText, equityText |
| Years of experience asked for, when stated | yearsExperienceMin |
| Where the job is, and the remote terms | locations, remote, remoteKind, remoteLocations |
| The company | companyName, companySlug, companyUrl, companyTagline, companySize, companyLogoUrl, companyBadges |
| When it went live, and whether a hiring system posted it | postedAt, autoPosted, atsSource |
| Where it was found | sourceUrl, page, scrapedAt |
βΆοΈ How to scrape Wellfound jobs
- Open Wellfound Jobs Scraper and click Try for free.
- Put one or more role slugs into Role slugs.
- Add Location slugs, or switch on Remote only, if you want to narrow it.
- Set Maximum jobs, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
Run it with no role and you get one sample row, marked _sample: true, which is not charged.
π° How much does it cost to scrape Wellfound jobs?
$0.085 per 1,000 jobs. That is the free plan's price; paid plans pay a little less: $0.084 on Starter, $0.083 on Scale and $0.082 on Business. On the free plan, the $5 Apify gives you each month covers about 58,000 jobs.
One charge per unique job row. The same listing found under two roles is billed once, rows dropped by your filters are not billed, and neither is the sample row or a diagnostic row. There is no second charge for the description, because it arrives with the listing.
The two paid options are the exception. Each job includeCompanies or minEquityPercent checks and
leaves out is billed as a checked job, once per run, on top of the jobs you get. The Pricing tab
has the figure.
π₯ What you give it
{"roleSlugs": ["software-engineer", "product-manager"],"locationSlugs": ["san-francisco"],"jobTypes": ["full-time"],"keywords": ["python"],"maxItems": 200,"maxPagesPerSource": 5}
| Field | Default | What it is |
|---|---|---|
roleSlugs | none, the form starts with software-engineer | Wellfound role slugs. A plain phrase is slugified, so Data Scientist becomes data-scientist, and a full wellfound.com/role/<slug> URL works too. |
searchQueries | none | The same thing under another name, if you prefer phrases. |
locationSlugs | none | City slugs such as san-francisco, new-york, london. Each role is walked once per city. Write the city the way Wellfound's own addresses do: a slug it has no page for, such as nyc or remote, comes back as one uncharged BAD_INPUT row and no jobs. |
remoteOnly | false | Use Wellfound's remote pages and keep only listings flagged remote. Ignored when you give cities. A role with no remote page comes back as one uncharged BAD_INPUT row. |
jobTypes | none | Keep only these: full-time, part-time, contract, internship, cofounder. |
locationFilters | none | Keep only jobs whose location or accepted remote location contains one of these strings. |
keywords | none | Keep only jobs whose title, company or description contains one of these. Read the warning above. |
seniorOnly | false | Keep only jobs whose title says Senior, Sr, Staff, Principal, Lead or Head of, or that ask for 5 or more years. Wellfound states the years on only some jobs, so the title counts too. |
minSalaryUsd | none | A yearly amount in US dollars, such as 150000. Keeps jobs whose posted range starts at or above it, so $140k β $180k is left out at 150000. Jobs paid in another currency, or with no salary shown, are left out too. |
excludeCompanies | none | Company names, slugs such as keeper-tax, or wellfound.com/company/ addresses. Their jobs are left out. |
includeCompanies | none | Paid option. Only these companies' jobs, given the same way. Every other job it checks and leaves out is billed as a checked job. |
minEquityPercent | none | Paid option. Only jobs whose equity range starts at this percentage or more, such as 0.1. Jobs showing no equity are left out, and each job it leaves out is billed as a checked job. |
maxItems | 100 | Unique job rows to return and charge for, up to 5,000. This is your spending cap. |
maxPagesPerSource | 5 | Listing pages per role, or per role and city pair, up to 60. Each page carries roughly 40 to 49 jobs, and deep pages work: page 60 returned jobs in testing. |
maxRetries | 6 | Attempts per listing page, 1 to 12. |
requestTimeoutSecs | 25 | How long a single request may take, 5 to 60. |
proxyConfiguration | none | Optional. Leave it empty for a normal run. Your own server URLs are used exactly as given. |
π€ What you get back
A real row from a run in September 2026, with the description cut short. The real one runs to several thousand characters:
{"ok": true,"_sample": false,"jobId": "4639821","title": "Software Engineer","jobUrl": "https://wellfound.com/jobs/4639821-software-engineer","companyName": "Checkr","companyUrl": "https://wellfound.com/company/checkr","companySlug": "checkr","companyTagline": "The only background check company using artificial intelligence and machine learning","companySize": "SIZE_501_1000","companyLogoUrl": "https://photos.wellfound.com/startups/i/395014-2a2164ef6a8cd5954eb970228e62ce15-medium_jpg.jpg?buster=1692326450","companyBadges": ["Actively Hiring", "Responds within two weeks", "B2B", "Scale Stage", "Top Investors", "YC Funded", "Valuation $1B+", "Highly rated"],"primaryRoleTitle": "Software Engineer","jobType": "full-time","remote": false,"remoteKind": null,"locations": ["Denver", "San Francisco"],"remoteLocations": [],"compensation": "$150k β $176k","salaryText": "$150k β $176k","equityText": null,"yearsExperienceMin": null,"description": "As a Software Engineer at Checkr, you will work on high-impact engineering projects that help build a fairer future for all. ...","postedAt": "2026-08-27T20:06:24.000Z","autoPosted": false,"atsSource": null,"sourceUrl": "https://wellfound.com/role/software-engineer","page": 1,"scrapedAt": "2026-09-14T05:47:49.550Z"}
| Field | How to read it |
|---|---|
description | The whole description in Markdown, as Wellfound stores it. |
compensation, salaryText, equityText | compensation is Wellfound's raw string, for example $135k β $175k β’ 0.05% β 0.25%. The other two are that string split in half. Nothing is invented, and nothing is turned into numbers. |
companySize, companyBadges | Wellfound's own size bands such as SIZE_11_50, and its own labels such as YC Funded or Top Investors. |
remote, remoteKind, locations, remoteLocations | Whether it is remote, Wellfound's ONSITE_OR_REMOTE or REMOTE_ONLY label, the office cities, and the countries a remote role accepts. |
postedAt | The exact time the listing went live, in UTC. |
autoPosted, atsSource | Whether it came in from an applicant tracking system, and which one. |
jobId | Stable. Use it as your dedupe key across runs. |
How often each field was filled, measured on a 200-row run on 10 August 2026 across two roles and 83 companies:
| Field | Filled |
|---|---|
title, jobUrl, companyName, companySize, companyBadges, jobType, description, postedAt | 100% |
companyTagline | 97.5% |
compensation, salaryText | 92.5% |
locations | 87.0% |
atsSource | 80.0% |
remoteKind | 28.5% |
yearsExperienceMin | 21.5% |
equityText | 14.5% |
Those move with the roles you pick. Equity is the one to watch: most posters leave it blank, and it is left blank here rather than guessed.
π§Ύ Reading the output
| Row | How to spot it | Charged |
|---|---|---|
| A job | ok: true and _sample: false | yes |
| The sample row | _sample: true and a _notice | no |
| A diagnostic | ok: false, _diagnostic: true and an errorCode | no |
The sample row looks like a real listing, and in the table view it sits there looking like data, so
filter on _sample rather than trusting your eyes.
| Code | What it means |
|---|---|
BAD_INPUT | A slug or filter value could not be used, or you asked for a city or remote page Wellfound does not have. Check the spelling against the address of the page on Wellfound. |
NO_RESULTS | The role pages were read and no job survived your filters. |
NOT_SERVED | This job was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED. |
TIME_LIMIT | The run stopped just before its time limit. The jobs delivered are kept and charged. Give it more time, or ask for fewer jobs, to get the rest. |
A page that fails is one uncharged row, and the run carries on with the rest. The run ends as failed only when its time limit stopped it before any job came back.
π‘ What people use it for
- Watching who is hiring in a role and a city, on a schedule, and diffing on
jobId. - Building a list of startups that are actively hiring, using
companyBadgesandcompanySize. - Salary research on a role, from the raw
salaryTextacross a few hundred listings. - Feeding whole descriptions into a model to pull out the stack, the seniority or the benefits.
- Finding remote roles that accept your country, using
remoteLocations.
From a job search to the companies behind it and their open roles:
- Run this on
software-engineerwithremoteOnlyandseniorOnlyon, and keep the rows whosecompanyBadgesincludeYC Funded. - Search those
companyNamevalues in Y Combinator Companies Scraper for their Y Combinator directory entries. - Paste the same names into Career Site Jobs Scraper to see the roles each company has open on its own careers page.
π§ What it does not do
- No company jobs pages.
wellfound.com/company/<slug>/jobsneeds a Wellfound login, so that input is not offered rather than offered and broken. - No recruiter contacts and no candidate profiles. It does not apply to anything either.
- No salary normalisation. Wellfound publishes a string and you get the string, plus its salary and equity halves.
- The location and keyword filters are plain substring matches, so short keywords keep nearly everything.
- Only what a role page lists. There is no search box behind this, so a job with an unusual title may sit under a role you did not think to ask for.
- Rows are a snapshot. A listing can be filled or pulled after it was read, and
postedAttells you how old it already was. - It is not an official Wellfound tool. Dami's Studio is independent and is not affiliated with or endorsed by Wellfound, or by any other company named on this page.
π§ Which job scraper do you need?
| If you want | Use |
|---|---|
| Startup jobs from Wellfound, with the full description | This one |
| Tech jobs from Built In, with skills and seniority | Built In Jobs Scraper |
| LinkedIn job postings by keyword and location | LinkedIn Jobs Scraper |
| Open roles on one company's careers page | Career Site Jobs Scraper |
| Postings on a Greenhouse, Lever or Ashby board | Multi-ATS Jobs Scraper |
| The startups themselves, from the Y Combinator directory | Y Combinator Companies Scraper |
β Questions people ask
What is a Wellfound role slug?
The last part of a Wellfound role URL. wellfound.com/role/software-engineer gives you
software-engineer. Pasting the whole URL works.
Do I need a Wellfound account to scrape jobs?
No login and no cookie. The one page that needs a login, a company's own jobs page, is the one thing this does not offer.
Do I really get the full job description?
Yes, in Markdown, on every job row. The median in the measured run was 4,663 characters.
Can I filter to remote jobs?
Switch on Remote only. It uses Wellfound's remote pages and drops anything not flagged remote. Not
every role has one, and a role without it comes back as one uncharged BAD_INPUT row.
Why did I get fewer jobs than I asked for?
Either the role ran out of pages, or your filters dropped rows. Neither costs you anything, except jobs a paid option left out. A strict mix of filters can use up Maximum pages per role before it finds enough, so raise that to look deeper.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made
code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/wellfound-jobs-scraper. Either way the
run happens on your Apify account at the same price.
Is scraping Wellfound legal?
These are public job listings. They name companies rather than people, but treat anything personal in a description with the same care. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
π If something breaks
Open the Issues tab on the actor page. Send the role slug you used and the run ID. The
errorCode on the diagnostic row usually names the problem on its own.