π Wellfound Jobs Scraper
Pricing
from $3.99 / 1,000 results
π Wellfound Jobs Scraper
Scrape job listings from Wellfound (formerly AngelList Talent) at scale. Search by location, company, keyword, or paste raw URLs.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Scraply
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Extract realβtime job listings from Wellfound (formerly AngelList Talent) at scale β straight into a structured Apify dataset.
Search by location, company, keyword, or paste bulk Wellfound URLs. Each job is enriched with title, company, salary range, employment type, posting date, location, and the full job description.
π Why Choose This Actor?
| β | What you get |
|---|---|
| π‘οΈ | Smart anti-bot fallback β starts with no proxy, automatically escalates to Datacenter β Residential when Wellfound's protections kick in |
| πΎ | Live dataset writes β each job is pushed the moment it's parsed, so a long run never loses progress |
| π | 70+ country geo-targeting for residential proxy sessions |
| π§ | Two ways to search β bulk URLs or friendly filters (location / keyword / company) |
| ποΈ | Filters out the noise β by date posted, job type, or company match |
| π | Full job descriptions β opens each detail page and grabs the complete description |
| π | Beautiful Console table β overview and full-detail views, ready to export |
β‘ Key Features
- π Bulk URL input via
startUrlsβ paste up to thousands of Wellfound URLs - π Search-by-filter when you don't have URLs:
locationName,companyName,includeKeyword - π Multi-page pagination with automatic lazy-scroll handling
- π Date filter: today / past 3 days / past week / past month / all
- πΌ Job-type filter: Full-time / Part-time / Contract / Internship / any
- π UTM-tagged URLs ready for click attribution
- π‘οΈ Tiered proxy fallback with sticky residential sessions
- π³ Pay-per-event monetization β you pay only for results that actually land in your dataset
π₯ Input
All fields are optional individually, but you must provide at least one of: startUrls, locationName, companyName, or includeKeyword.
{"startUrls": [{ "url": "https://wellfound.com/jobs?location=new-york" }],"countryName": "United States","locationName": "New York","companyName": "","includeKeyword": "python engineer","pagesToFetch": 5,"jobType": "FULLTIME","datePosted": "week","fetchDescriptions": true,"requestDelay": 1.0,"proxyConfiguration": { "useApifyProxy": false }}
Field reference
| Field | Type | Description |
|---|---|---|
startUrls | array | Bulk Wellfound URLs (search pages or job-detail pages). |
countryName | string | ISO 3166-1 country name (dropdown in the console) for residential proxy geo-targeting. |
locationName | string | City/region built into the search URL (e.g. San Francisco). |
companyName | string | Filters cards by company name (loose match). |
includeKeyword | string | Extra search term β role, skill, technology, etc. |
pagesToFetch | integer | Result pages to walk per seed URL (1β100). |
jobType | enum | FULLTIME, PARTTIME, CONTRACTOR, INTERN, or empty. |
datePosted | enum | today, 3days, week, month, all. |
fetchDescriptions | boolean | Open each detail page for the full description (slower, richer). |
requestDelay | number | Seconds (float). Random jitter is layered in code. |
proxyConfiguration | object | Apify proxy config. Default = no proxy; auto-escalates on block. |
π€ Output
Each dataset row has this shape:
{"job_title": "Founding Product Manager","company_name": "Sardine","location": "San Francisco","posted_via": "Wellfound","salary": "150Kβ185K a year","job_type": "Contract","date": "today","URL": "https://wellfound.com/jobs/4235686-founding-product-manager?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic","description": "We are starting an office in San Francisco β¦"}
| Field | Description |
|---|---|
job_title | The role title as shown on the card. |
company_name | Hiring company. |
location | Comma-joined locations, or "Remote" for remote roles. |
posted_via | Always Wellfound. |
salary | Normalized range, e.g. 150Kβ185K a year. |
job_type | Full-time, Part-time, Contract, Internship, or empty. |
date | Relative posting date (e.g. today, yesterday, 3 days ago). |
URL | Direct link to the job with UTM tracking appended. |
description | Full description (when fetchDescriptions=true). |
The dataset ships with two ready-made views:
- π Overview β title, company, salary, job type, date, location, link
- π Full Details β adds the description column
π How to Use (Apify Console)
- Sign in at console.apify.com β Actors.
- Open Wellfound Jobs Scraper.
- Configure your input:
- Paste URLs in
startUrls, or fill in Location / Keyword / Company. - Optionally set
pagesToFetch,jobType,datePosted. - Leave Proxy on the default β the actor escalates automatically only if needed.
- Paste URLs in
- Click βΆ Start.
- Watch the live log β each job appears in real time:
β [12] Founding Product Manager @ Sardine | 150Kβ185K a year | San Francisco
- Open the Output tab when the run finishes β switch between the Overview and Full Details views.
- Export to JSON / CSV / Excel with one click.
π€ Use via API
Start a run with curl (replace <ACTOR_ID> and $APIFY_TOKEN):
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"locationName": "New York","pagesToFetch": 3,"datePosted": "week"}'
Or kick off an async run and poll for status:
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://wellfound.com/jobs?location=san-francisco"}]}'
π‘ Best Use Cases
- π Job-market intel β track hiring velocity by city, role, or company
- π§² Sourcing & lead-gen β build candidate or recruiter contact lists
- π Salary benchmarking β collect comp ranges across companies
- π§ͺ Competitor monitoring β see who's hiring for what at which stage
- π€ Train AI agents β feed structured, fresh job text to LLMs
π° Pricing
This actor uses Apify's Pay-per-event (PPE) model:
| Event | What you pay for |
|---|---|
row_result | Each job record successfully written to the dataset |
You're billed only for jobs that actually land in your output β blocked pages, retries, and skipped duplicates are on us.
Set your Max charge $ limit in the run options to control your spend precisely. When you hit the cap, the actor exits gracefully with a partial dataset β never a failed run.
β Frequently Asked Questions
Q: Do I need to configure a proxy? No. The actor starts with a direct connection. Only if Wellfound's anti-bot protection rejects a request does it escalate β first to a datacenter proxy, then to a residential session. You'll see the escalation logged.
Q: Why are some description fields empty?
You either turned off fetchDescriptions or the detail page was blocked during that specific request. Re-running with fetchDescriptions=true and the default proxy settings usually fills these in.
Q: Can I scrape a single job by URL?
Yes. Put the detail URL (e.g. https://wellfound.com/jobs/4235686-founding-product-manager) into startUrls and the actor will fetch it directly.
Q: How current is the data?
It's pulled live every run. Wellfound's date field uses relative phrasing ("today", "3 days ago") β we preserve that exact text in the date column.
Q: Does this scrape private/authenticated content? No. Only publicly available job postings are collected.
π Cautions / Legal
- Data is collected only from publicly visible Wellfound pages.
- The end user is responsible for compliance with GDPR, CCPA, CAN-SPAM, and Wellfound's Terms of Service.
- Honor reasonable rate limits β the default
requestDelayof 1s is intentionally polite.
π Support and Feedback
Issues, ideas, or feature requests? Open an issue or contact us via the Apify Console. We respond fast and ship fixes regularly.