Wellfound APIwellfound.com ↗
Access Wellfound job listings, company profiles, and trending startups via API. Search by role and location, fetch job details, and retrieve featured hiring data.
What is the Wellfound API?
The Wellfound API exposes 7 endpoints covering startup job listings, company profiles, and trending hiring data from Wellfound (formerly AngelList Talent). You can search jobs by role slug and location slug via search_jobs, pull full structured job details through get_job_details, and retrieve curated homepage data with get_trending_jobs and get_trending_startups — all returning structured JSON with compensation, remote status, and startup metadata.
curl -X GET 'https://api.parse.bot/scraper/7765b337-78bd-4d7a-b7db-8e0e13ec3418/search_jobs?page=1&role=software-engineer' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace wellfound-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Wellfound Jobs API — discover startup jobs, trending companies, and role categories."""
from parse_apis.wellfound_jobs_api import Wellfound, NotFoundError_
client = Wellfound()
# Search for software engineer jobs with pagination cap
for job in client.jobs.search(role="software-engineer", limit=3):
print(job.title, job.compensation, job.startup.name)
# Fetch featured jobs organized by category
featured = client.jobs.featured()
for eng_job in featured.engineering:
print(eng_job.title, eng_job.url)
# Browse trending startups currently hiring
startup = client.startups.trending(limit=3).first()
if startup:
print(startup.name, startup.high_concept, startup.live_job_listings_count)
# Drill into a startup's open positions via sub-resource
for company_job in startup.jobs.list(limit=5):
print(company_job.title, company_job.compensation)
# List available role slugs for job discovery
for role in client.roles.list(limit=5):
print(role.name, role.slug)
# Handle upstream errors gracefully
try:
featured = client.jobs.featured()
print(featured.trending[0].title, featured.trending[0].url)
except NotFoundError_ as exc:
print(f"not found: {exc}")
print("exercised: jobs.search / jobs.featured / startups.trending / startup.jobs.list / roles.list")
Search for job listings on Wellfound by role and location. Returns paginated results with job details and associated startup information. Each result includes job title, compensation, location, remote status, and the hiring startup's details.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| role | string | Role slug (e.g., 'software-engineer', 'backend-engineer', 'frontend-engineer', 'product-manager') |
| location | string | Location slug (e.g., 'remote', 'san-francisco', 'new-york-city'). Omitting returns all locations. |
{
"type": "object",
"fields": {
"jobs": "array of job listing objects with startup info, compensation, location, and URL",
"perPage": "number of results per page",
"pageCount": "total number of pages",
"currentPage": "current page number",
"totalJobCount": "total number of matching jobs",
"totalStartupCount": "total number of startups with matching jobs"
},
"sample": {
"data": {
"jobs": [
{
"id": "4322508",
"url": "https://wellfound.com/jobs/4322508-software-engineer",
"slug": "software-engineer",
"title": "Software Engineer",
"remote": true,
"jobType": "full-time",
"startup": {
"id": "8030547",
"name": "FutureFit AI",
"slug": "futurefit-ai-2",
"logoUrl": "https://photos.wellfound.com/startups/i/8030547-example.jpg",
"companySize": "SIZE_11_50",
"highConcept": "AI-powered GPS for your Career"
},
"liveStartAt": 1781047549,
"compensation": "$150k – $185k",
"locationNames": [
"New York City"
]
}
],
"perPage": 20,
"pageCount": 90,
"currentPage": 1,
"totalJobCount": 5228,
"totalStartupCount": 1798
},
"status": "success"
}
}About the Wellfound API
Job Search and Details
search_jobs accepts a role slug (e.g., software-engineer, product-manager), a location slug (e.g., remote, san-francisco), and an integer page parameter for pagination. Results include totalJobCount, totalStartupCount, pageCount, and an array of job objects with compensation, location names, remote status, and associated startup info. get_job_details takes a job_id and job_slug and returns the full job_posting_ld object — a structured JobPosting JSON-LD block containing title, description, salary range, location, and hiring organization. If a job has been removed or never existed, the endpoint returns stale_input rather than an error.
Trending and Featured Data
get_trending_jobs requires no inputs and returns job listings grouped into ten named arrays: trending, engineering, product, design, data, sales, marketing, operations, recruiting, and finance. Each category surfaces approximately three recently posted listings with compensation details and startup info. get_trending_startups returns a trending_startups array where each object includes id, name, slug, highConcept, companySize, logoUrl, and liveJobListingsCount — giving a snapshot of which startups Wellfound is currently featuring on its homepage.
Company Profiles and Job Listings
get_company_profile accepts a company_slug and returns id, name, badges, logoUrl, companySize, highConcept, and productDescription. The badges array includes label and tooltip strings that reflect trust or quality signals Wellfound has assigned the company. get_company_jobs uses the same company_slug and returns the full list of open positions at that company, with each job object containing id, title, slug, compensation, locationNames, and jobType. If the company slug is not recognized, both endpoints return stale_input.
Role Discovery
get_job_autocomplete_roles takes no inputs and returns a static roles array. Each entry has a name (display label) and a slug (URL-safe identifier) that can be passed directly as the role parameter in search_jobs. This is the right starting point if you need to enumerate valid role values before building a search pipeline.
The Wellfound API is a managed, monitored endpoint for wellfound.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when wellfound.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official wellfound.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate startup job listings by engineering role and location to power a niche job board
- Monitor
liveJobListingsCountonget_trending_startupsto track which startups are actively scaling - Extract
job_posting_ldsalary and location fields fromget_job_detailsfor compensation benchmarking - Build a company research tool using
get_company_profilebadges, size, and product description - Pull homepage trending jobs from
get_trending_jobsto surface daily curated startup opportunities - Enumerate all open roles at a target company using
get_company_jobsfor competitive hiring intelligence - Map valid role slugs from
get_job_autocomplete_rolesto automate multi-role job search pipelines
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Wellfound have an official developer API?+
What does `get_job_details` return for removed or expired listings?+
get_job_details returns a stale_input status for any job that has been removed (HTTP 410 from Wellfound) or that returns a 404. This applies to both the job_id and job_slug combination. For active listings, the response contains the full job_posting_ld JSON-LD block with structured title, description, salary, location, and hiring organization fields.Can I filter `search_jobs` results by company size, funding stage, or industry vertical?+
search_jobs filters by role slug and location slug only; there are no parameters for company size, funding stage, or industry. Company-level attributes like companySize and highConcept are available via get_company_profile once you have a slug. You can fork this API on Parse and revise it to add additional filter parameters if your use case requires deeper company-level filtering.How many job listings does each category in `get_trending_jobs` return?+
get_trending_jobs returns approximately 3 listings per category. The ten categories are trending, engineering, product, design, data, sales, marketing, operations, recruiting, and finance. This endpoint reflects the featured jobs shown on the Wellfound homepage and is not paginated.Does the API expose applicant counts, founder profiles, or funding rounds for startups?+
companySize, highConcept, productDescription, badges, and liveJobListingsCount, but does not include applicant counts, individual founder profiles, or funding history. You can fork this API on Parse and revise it to add an endpoint targeting Wellfound company or founder pages to retrieve that data.