# Wellfound Jobs Scraper – Startup Jobs, Salary & Equity (`kirozhang/wellfound-jobs-scraper`) Actor

Scrape startup jobs from Wellfound (formerly AngelList Talent) by role, location or remote: title, salary range, equity, full description, experience, workplace policy, plus company stage, size and badges (YC, top investors, recently funded).

- **URL**: https://apify.com/kirozhang/wellfound-jobs-scraper.md
- **Developed by:** [Kiro Zhang](https://apify.com/kirozhang) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Wellfound Jobs Scraper do?

This Actor scrapes **startup job listings from [Wellfound](https://wellfound.com)** (formerly AngelList Talent) — the largest job board for startups — by **role, location or remote**. Every row contains the job **and** the company behind it:

- 💼 **Job:** title, role, job type, full description, salary range (parsed into min / max / currency), **equity range**, years of experience, remote / onsite policy, locations, accepted remote regions, posting date and link.
- 🚀 **Company:** name, tagline, size, stage (seed, early, growth…), logo, Wellfound page and badges such as **YC Funded, Top Investors, Recently funded, Valuation $1B+, Growing fast, Actively hiring** and Glassdoor rating.

Export to JSON, CSV or Excel, call it via API, schedule it daily, or plug it into Make, Zapier, n8n, Google Sheets or an AI agent.

### Why use this Wellfound scraper?

- 📝 **Full job description on every row — no extra charge.** Many scrapers bill descriptions separately; here it's included.
- 💰 **Salary & equity parsed into numbers** — `salaryMin`, `salaryMax`, `salaryCurrency`, `equityMin`, `equityMax` (USD, EUR, GBP, INR "L" lakhs, CAD…), ready for filtering and charts.
- 🏷️ **Funding signals** — YC, top investors, recently funded, valuation, company stage and size for every job.
- 🔎 **Roles × locations in one run** — e.g. 5 roles × 3 cities = 15 searches, deduplicated.
- 💸 **Cheap, pay per job** — no start fee, no monthly rental.
- ⚡ **Fast and light** — no browser, no login; ~40 jobs per request.

#### Use cases

- **Job seekers & career coaches** — track new startup roles with salary and equity every day.
- **Recruiters & talent agencies** — find startups that are actively hiring, with stage and funding signals.
- **Sales / lead generation** — build lists of funded, growing startups (YC, top investors, recently funded) that are hiring right now.
- **Investors & market research** — hiring trends, salary and equity benchmarks by role, city and company stage.
- **Job boards & AI agents** — feed fresh startup jobs into your product or RAG pipeline.

### How to scrape Wellfound jobs

1. Click **Try for free** / **Start**.
2. Enter one or more **roles** (e.g. `software-engineer`, `product-manager`, `data-scientist`, `designer`, `sales`).
3. Optionally add **locations** (e.g. `san-francisco`, `new-york`, `london`, `berlin`, `bangalore`, `united-states`) or tick **Remote jobs only**.
4. Optionally filter by **job type**, **posted within** or **only jobs with salary**.
5. Set **Max jobs per search** and run. Download the results as JSON, CSV, Excel, XML or HTML.

**Tip:** you can also paste Wellfound URLs such as `https://wellfound.com/role/r/software-engineer`, `https://wellfound.com/role/l/product-manager/new-york`, `https://wellfound.com/location/london` or `https://wellfound.com/remote` into **Wellfound URLs** — all pages are followed automatically.

### Input example

```json
{
    "roles": ["software-engineer", "product-manager"],
    "locations": ["san-francisco", "new-york"],
    "remoteOnly": false,
    "jobTypes": ["full-time"],
    "postedWithinDays": "14",
    "requireSalary": true,
    "maxJobsPerSearch": 200
}
```

### Output example

```json
{
    "id": "4748853",
    "title": "Software Engineer, iOS",
    "url": "https://wellfound.com/jobs/4748853-software-engineer-ios",
    "role": "Software Engineer",
    "jobType": "full-time",
    "remote": false,
    "workplacePolicy": "onsite",
    "locations": ["New York"],
    "compensation": "$175k – $275k",
    "salaryMin": 175000,
    "salaryMax": 275000,
    "salaryCurrency": "USD",
    "equityMin": null,
    "equityMax": null,
    "postedAt": "2026-09-21T23:25:17.000Z",
    "description": "Mirage is an AI-native video platform that intelligently orchestrates production and editing …",
    "companyName": "Mirage",
    "companyUrl": "https://wellfound.com/company/mirage-app",
    "companyTagline": "Mirage is redefining short-form video with frontier AI research",
    "companySize": "51-200",
    "companyStage": "Growth Stage",
    "companyBadges": ["Actively Hiring", "Top Investors", "Valuation $500M+", "Growing fast"],
    "ycFunded": false,
    "topInvestors": true,
    "recentlyFunded": false,
    "valuation": "$500M+",
    "searchRole": "software-engineer",
    "searchLocation": "new-york",
    "scrapedAt": "2026-09-23T10:03:21.899Z"
}
```

#### Output fields

| Field | Description |
|---|---|
| `id`, `url`, `title`, `role`, `jobType` | The job and its link on Wellfound |
| `remote`, `workplacePolicy`, `wfhFlexible`, `locations`, `remoteLocationsAccepted` | Where the job can be done |
| `compensation` | Salary and equity exactly as shown on Wellfound |
| `salaryMin`, `salaryMax`, `salaryCurrency` | Parsed yearly salary range |
| `equityMin`, `equityMax`, `offersEquity` | Parsed equity range in % |
| `experienceMinYears`, `experienceMaxYears` | Required experience, if stated |
| `postedAt`, `description` | Posting date and the full job description |
| `companyId`, `companyName`, `companyUrl`, `companyTagline`, `companySize`, `companyStage`, `companyLogoUrl` | The startup |
| `companyBadges`, `ycFunded`, `topInvestors`, `recentlyFunded`, `valuation`, `glassdoorRating`, `activelyHiring` | Funding and hiring signals |
| `searchRole`, `searchLocation`, `sourceUrl` | Which search found the job |

### How much does it cost to scrape Wellfound?

This Actor uses **pay-per-event** pricing: **$2.00 per 1,000 jobs**, full description and company data included. No start fee, no rental, no proxy costs for you.

Example: 500 jobs cost **$1.00**. Apify's free plan ($5 monthly credit) covers about 2,500 jobs every month. You can set a maximum cost per run in the run options.

### Tips & limits

- Wellfound's public job pages show **up to 3 matching jobs per startup**, so the number of saved jobs can be lower than the "jobs" total Wellfound displays. Adding more specific roles or locations surfaces more of each company's jobs.
- Role and location names follow Wellfound's URLs: `software-engineer`, `frontend-engineer`, `backend-engineer`, `full-stack-engineer`, `mobile-engineer`, `devops-engineer`, `data-scientist`, `data-engineer`, `machine-learning-engineer`, `product-manager`, `designer`, `product-designer`, `marketing`, `sales`, `account-executive`, `customer-success`, `operations`, `recruiter`, `finance` … and cities / countries such as `san-francisco`, `new-york`, `los-angeles`, `seattle`, `austin`, `boston`, `london`, `berlin`, `paris`, `amsterdam`, `toronto`, `bangalore`, `singapore`, `united-states`, `india`.
- Filters (job type, posted within, salary, remote) are applied to all searches, including pasted URLs.
- The Actor paces its requests (about one per second) to stay reliable.

### Is it legal to scrape Wellfound?

This Actor only reads public job pages that anyone can open without an account, and it does not collect personal data of candidates or founders — only job ads and company information. Make sure your use of the data complies with Wellfound's terms and applicable laws (e.g. GDPR). When in doubt, consult a lawyer.

### FAQ & support

**Can I get all jobs of one company?** Use a specific role + location search, or open an issue — company pages can be added if there is demand.

**Something is not working?** Please open an issue on the **Issues** tab with your input and the run link — issues are answered quickly.

**Other scrapers by this developer:** [StepStone & PNet Jobs Scraper (5 countries)](https://apify.com/kirozhang/stepstone-jobs-scraper), [SEEK, JobStreet & JobsDB Jobs Scraper (8 countries)](https://apify.com/kirozhang/seek-jobstreet-jobsdb-scraper) and [Google News Scraper + Full Article Text](https://apify.com/kirozhang/google-news-scraper).

# Actor input Schema

## `roles` (type: `array`):

Wellfound role names, e.g. "software-engineer", "product-manager", "data-scientist", "designer", "sales", "marketing", "devops-engineer", "machine-learning-engineer". Spaces are fine ("Software Engineer").

## `locations` (type: `array`):

Optional cities or countries as used on Wellfound, e.g. "san-francisco", "new-york", "london", "berlin", "bangalore", "united-states", "india". Combined with every role. Leave empty for all locations.

## `remoteOnly` (type: `boolean`):

Only return remote jobs. Without roles and locations this scrapes all remote startup jobs.

## `jobTypes` (type: `array`):

Optional filter. Leave empty for all.

## `postedWithinDays` (type: `string`):

Only jobs posted within this many days.

## `requireSalary` (type: `boolean`):

Skip jobs that do not publish a salary range.

## `maxJobsPerSearch` (type: `integer`):

Maximum number of jobs saved for each role / location combination (and each start URL).

## `startUrls` (type: `array`):

Paste Wellfound job pages such as https://wellfound.com/role/r/software-engineer, https://wellfound.com/role/l/product-manager/new-york, https://wellfound.com/location/london or https://wellfound.com/remote. All pages are followed automatically.

## `proxyConfiguration` (type: `object`):

Usually not needed: the Actor connects directly and switches to residential proxy automatically if Wellfound starts blocking. Set a proxy here only if you want to force one.

## Actor input object example

```json
{
  "roles": [
    "software-engineer"
  ],
  "remoteOnly": false,
  "jobTypes": [],
  "postedWithinDays": "0",
  "requireSalary": false,
  "maxJobsPerSearch": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "roles": [
        "software-engineer"
    ],
    "maxJobsPerSearch": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("kirozhang/wellfound-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "roles": ["software-engineer"],
    "maxJobsPerSearch": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("kirozhang/wellfound-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "roles": [
    "software-engineer"
  ],
  "maxJobsPerSearch": 50
}' |
apify call kirozhang/wellfound-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kirozhang/wellfound-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CpqRs6CURVmpYyKVD/builds/X2IIv49QGUfl971pU/openapi.json
