Wellfound Jobs Scraper (AngelList) avatar

Wellfound Jobs Scraper (AngelList)

Pricing

from $0.08 / 1,000 jobs

Go to Apify Store
Wellfound Jobs Scraper (AngelList)

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

4 days ago

Last modified

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.

InputWellfound role slugs, optionally with cities or remote, plus filters
OutputOne row per job: full description, salary and equity, company size, tagline and badges, locations, remote terms, exact posting time
Ceiling5,000 jobs per run
Account neededNone, 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 getField
The job and its stable IDjobId, title, jobUrl, primaryRoleTitle, jobType
The whole description, in Markdowndescription
Pay as Wellfound writes it, and split into salary and equitycompensation, salaryText, equityText
Years of experience asked for, when statedyearsExperienceMin
Where the job is, and the remote termslocations, remote, remoteKind, remoteLocations
The companycompanyName, companySlug, companyUrl, companyTagline, companySize, companyLogoUrl, companyBadges
When it went live, and whether a hiring system posted itpostedAt, autoPosted, atsSource
Where it was foundsourceUrl, page, scrapedAt

▢️ How to scrape Wellfound jobs

  1. Open Wellfound Jobs Scraper and click Try for free.
  2. Put one or more role slugs into Role slugs.
  3. Add Location slugs, or switch on Remote only, if you want to narrow it.
  4. Set Maximum jobs, then click Start.
  5. 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
}
FieldDefaultWhat it is
roleSlugsnone, the form starts with software-engineerWellfound role slugs. A plain phrase is slugified, so Data Scientist becomes data-scientist, and a full wellfound.com/role/<slug> URL works too.
searchQueriesnoneThe same thing under another name, if you prefer phrases.
locationSlugsnoneCity 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.
remoteOnlyfalseUse 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.
jobTypesnoneKeep only these: full-time, part-time, contract, internship, cofounder.
locationFiltersnoneKeep only jobs whose location or accepted remote location contains one of these strings.
keywordsnoneKeep only jobs whose title, company or description contains one of these. Read the warning above.
seniorOnlyfalseKeep 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.
minSalaryUsdnoneA 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.
excludeCompaniesnoneCompany names, slugs such as keeper-tax, or wellfound.com/company/ addresses. Their jobs are left out.
includeCompaniesnonePaid option. Only these companies' jobs, given the same way. Every other job it checks and leaves out is billed as a checked job.
minEquityPercentnonePaid 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.
maxItems100Unique job rows to return and charge for, up to 5,000. This is your spending cap.
maxPagesPerSource5Listing 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.
maxRetries6Attempts per listing page, 1 to 12.
requestTimeoutSecs25How long a single request may take, 5 to 60.
proxyConfigurationnoneOptional. 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"
}
FieldHow to read it
descriptionThe whole description in Markdown, as Wellfound stores it.
compensation, salaryText, equityTextcompensation 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, companyBadgesWellfound's own size bands such as SIZE_11_50, and its own labels such as YC Funded or Top Investors.
remote, remoteKind, locations, remoteLocationsWhether it is remote, Wellfound's ONSITE_OR_REMOTE or REMOTE_ONLY label, the office cities, and the countries a remote role accepts.
postedAtThe exact time the listing went live, in UTC.
autoPosted, atsSourceWhether it came in from an applicant tracking system, and which one.
jobIdStable. 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:

FieldFilled
title, jobUrl, companyName, companySize, companyBadges, jobType, description, postedAt100%
companyTagline97.5%
compensation, salaryText92.5%
locations87.0%
atsSource80.0%
remoteKind28.5%
yearsExperienceMin21.5%
equityText14.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

RowHow to spot itCharged
A jobok: true and _sample: falseyes
The sample row_sample: true and a _noticeno
A diagnosticok: false, _diagnostic: true and an errorCodeno

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.

CodeWhat it means
BAD_INPUTA 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_RESULTSThe role pages were read and no job survived your filters.
NOT_SERVEDThis job was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED.
TIME_LIMITThe 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 companyBadges and companySize.
  • Salary research on a role, from the raw salaryText across 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:

  1. Run this on software-engineer with remoteOnly and seniorOnly on, and keep the rows whose companyBadges include YC Funded.
  2. Search those companyName values in Y Combinator Companies Scraper for their Y Combinator directory entries.
  3. 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>/jobs needs 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 postedAt tells 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 wantUse
Startup jobs from Wellfound, with the full descriptionThis one
Tech jobs from Built In, with skills and seniorityBuilt In Jobs Scraper
LinkedIn job postings by keyword and locationLinkedIn Jobs Scraper
Open roles on one company's careers pageCareer Site Jobs Scraper
Postings on a Greenhouse, Lever or Ashby boardMulti-ATS Jobs Scraper
The startups themselves, from the Y Combinator directoryY 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.

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.