Wellfound Jobs Scraper — Startup Roles, Pay & Companies
Pricing
from $1.28 / 1,000 jobs
Wellfound Jobs Scraper — Startup Roles, Pay & Companies
Search startup jobs by role and location and get one row per posting: the full description, the pay Wellfound shows, the experience asked for, the remote policy, and the hiring company with its size, website tags and hiring badges. Several roles and cities in one run.
Pricing
from $1.28 / 1,000 jobs
Rating
0.0
(0)
Developer
The Netaji
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Wellfound Jobs Scraper
Export startup jobs from Wellfound by role and city. Each posting becomes one row carrying the complete job description, the pay Wellfound displays, the experience the company asks for, the remote policy and the hiring company — its name, slug, pitch, headcount band and hiring badges — so a row is readable and sortable without a second lookup anywhere.
Several roles and several cities go into one run. Three roles against two cities is six searches and one dataset, and a posting that turns up in more than one of them is saved once.
What a row looks like
{"job_id": "4592877","title": "AI Engineer","slug": "ai-engineer","url": "https://wellfound.com/jobs/4592877-ai-engineer","company_name": "Mosaic","company_slug": "mosaicapp","company_url": "https://wellfound.com/company/mosaicapp","company_pitch": "AI-Powered Workforce Management Software","company_size": "SIZE_51_200","company_badges": ["Actively Hiring", "Top 10% of responders", "B2B", "Growth Stage"],"compensation": "$220k – $300k • 0.01% – 0.02%","job_type": "full-time","remote": false,"remote_policy": "ONSITE","locations": ["San Francisco"],"remote_locations": [],"primary_role": "Software Engineer","years_experience_min": 5,"years_experience_max": null,"posted_at": "2026-08-15T03:08:03.000Z","ats_source": "AtsIntegration::Greenhouse::Listing","description": "## The role\n\nMosaic is the first AI resource manager…","search_role": "software-engineer","search_location": null}
description is the whole posting, not a snippet — that is the unusual part of this source and
the reason a search row here is worth more than a search row on most job boards. compensation is
the string Wellfound renders, en-dash and equity clause included; the numeric version is described
under Pay as numbers below.
ats_source names the applicant-tracking system the company runs. Across 80 postings under
software-engineer on 16 August 2026, 65 stated one and the rest were null, which means the
company posted directly rather than syncing from a system. It is carried under Wellfound's own
field name and value so it can be matched against their data without translating anything.
Accepted input
{"roles": ["software-engineer", "designer"],"locations": ["san-francisco", "new-york"],"maxItems": 100}
roles and locations take the slugs that appear in a wellfound.com URL — software-engineer,
san-francisco — and a pasted role or location URL is reduced to its slug. At least one of the
two is required; Wellfound publishes no unfiltered job-search page, so there is nothing to read
without one. Given both, every role is searched in every location.
remote restricts a run to remote postings and works on a role-only search. maxItems applies
per search, so two roles at 100 is up to 200 rows.
Pay as numbers
enrichJobDetails reads each job's own posting page and adds salary_min, salary_max,
salary_currency and salary_period — the range as numbers with the period they are quoted over
— plus employment_type, direct_apply, job_location_type, applicant_locations, the
company's own website, its industries, the benefits it states and the posting body as published
HTML. It is one extra request per job and is billed per job enriched, so it is off by default.
Questions
Why did a run return fewer rows than maxItems?
Because Wellfound's own result set ran out first. A search walks pages until the site stops
producing new postings, and past the end of a result set it answers by serving the first page
again rather than an empty one. That is detected and the walk stops, so a short result means the
site has nothing further for that query — retrying returns the same rows. The ceiling on any one
search is 500. Reaching further means another role or another city, not a larger number.
A role came back with nothing at all. Is it broken?
Almost always the slug. Wellfound serves pages only for the roles and locations in its own
vocabulary, and a slug outside it has no page, which from outside looks the same as a page that
refused to load. The run reports the search that found nothing and carries on with the rest, so
one typo in a list of twelve does not cost the other eleven. Check the slug by opening
wellfound.com/role/<slug> in a browser.
Why is remote rejected together with a location?
Wellfound publishes a remote variant of its role pages and none of its location pages. Sending
both would return the location's ordinary results — a different question, answered as though it
were the one asked — so the run stops and says so instead. When a place matters, search the
remote-us location slug.
Why is compensation text rather than a number?
Because the same field carries salary ranges, equity ranges and free text:
$220k – $300k • 0.01% – 0.02%enrichJobDetails adds, and it is
null on a posting that states no range rather than zero.
Do the same postings appear twice when several searches overlap?
No. A role search and the role-in-a-city search under it genuinely overlap, and rows are matched
on the job id across the whole run, so a posting reached twice is saved and charged once.
search_role and search_location record which search each row came from, which is how a mixed
dataset is split back apart.
Can the companies be exported instead of the jobs?
Each row already carries the hiring company, so grouping the dataset by company_slug gives the
companies behind a role. The company columns on a job row are the summary Wellfound attaches to a
posting — for websites, industry tags, office locations and open-role counts, the directory is the
better source. See below.
Is years_experience_max usually missing?
Yes, and that is the posting rather than the export: most companies state a floor and no ceiling,
so years_experience_min is set and years_experience_max is null. Filtering on the maximum
therefore drops most postings; filter on the minimum.
Related Actors
Wellfound Job Posting Scraper reads job links directly, and is the one to use when the links already exist somewhere else.
Wellfound Startups Scraper works the
other way round — companies first, with websites, industries, offices and open-role counts — and
Wellfound Company Scraper takes a
company_slug from any row here and returns that company's funding, team and perks.