curl --request POST \
--url https://api.scrapeunblocker.com/jobs/wellfound \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/jobs/wellfound"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/jobs/wellfound', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Scrape Wellfound startup jobs
Searches Wellfound (formerly AngelList Talent) startup jobs by role, location or remote role (or a Wellfound search url) and returns jobs: title, url, the full description, compensation with parsed salary (min, max, currency) and equity (min, max in %), jobType (full-time, part-time, contract, internship), locations, remote, remotePolicy (ONSITE, REMOTE, ONSITE_OR_REMOTE, HYBRID), acceptedRemoteLocations, yearsExperienceMin/Max, postedAt and the hiring company (name, slug, url, tagline, companySize, stage, badges). A listing page holds 20 companies with up to 3 matching jobs each; by default the call returns one page, with max_results it pages through up to that many jobs. Totals: totalJobs, totalCompanies, pageCount, nextPage. mode=job&job=<url> returns one job in full: description (text and HTML), salary with period, the same jobType and remotePolicy values (the page’s wording in remotePolicyText, plus wfhFlexible), skills, visaSponsorship, relocation, hiresRemotelyIn, preferred timezones, hiring contact, posting date, and the company’s size, markets, badges, funding and founders. Billed one unit per page fetched (pagesFetched).
curl --request POST \
--url https://api.scrapeunblocker.com/jobs/wellfound \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/jobs/wellfound"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/jobs/wellfound', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your ScrapeUnblocker API key. Apply on every request.
Query Parameters
'search' (default): job listings by role / location / remote role. 'job': one job page in full.
Role to search, as text or Wellfound slug: 'software engineer', 'product-manager', 'data-scientist'.
Location, as text or Wellfound slug: 'new york', 'san-francisco', 'london', 'berlin'.
Remote jobs only (needs role, no location).
A Wellfound search URL instead of role / location / remote: https://wellfound.com/role/l/software-engineer/san-francisco, /role/r/, /location/.
mode=job: the job URL (https://wellfound.com/jobs/4787364-software-engineer) or '-', as returned in jobs[].url by mode=search.
1-based listing page to start from (1-500); use nextPage of a previous response to continue.
How many jobs to collect across pages (1-500). Default: the whole first page (20 companies with up to 3 jobs each, usually 30-60 jobs). Each page fetched is one billed unit.
Proxy country the request is sent from (ISO-2, e.g. 'US', 'DE'). Leave blank for the country chosen for the site.
Response
JSON with a jobs array, totals and nextPage (or job with mode=job).

