# Wellfound Jobs Scraper (`mscraper/wellfound-jobs-scraper`) Actor

A job scraper for Wellfound (formerly AngelList Talent) is essentially a tool to extract job listings and associated job details from the Wellfound platform.

- **URL**: https://apify.com/mscraper/wellfound-jobs-scraper.md
- **Developed by:** [mscraper](https://apify.com/mscraper) (community)
- **Categories:** Jobs
- **Stats:** 169 total users, 0 monthly users, 100.0% runs succeeded, 5 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Wellfound Discover Jobs Scraper

### What does Wellfound Discover Jobs Scraper do?

Wellfound Discover Jobs Scraper is a comprehensive tool that extracts job-related data from [Wellfound](https://wellfound.com/discover), a platform offering over 130,000+ remote jobs and startup jobs. Using the unique URLs of job listings or job pages, the scraper navigates through Wellfound's platform, capturing information about various job roles and corresponding company details.

### Why scrape Wellfound?

Extracting data from Wellfound can provide invaluable insights for both job seekers and business analysts:

➡️ For job seekers, it can provide a consolidated list of opportunities across different industries and locations, complete with comprehensive job details and company overviews, making it easier to find the perfect fit.

➡️ For businesses and market researchers, it can help track industry trends, assess competitive salaries and equity, and understand job market dynamics.

➡️ HR professionals can leverage it to benchmark compensation, remote work policies, and company benefits in their industry.

➡️ Data scientists can use the scraped data for various projects, including job market analysis, visualization, machine learning models, etc.

A few business use cases include:

**Job Market Analysis**: Evaluate the job market landscape, understand trends in remote jobs, compensation structures, and skills demand.

**Competitive Intelligence**: Gain insights into how competitors structure their teams and compensation.

**Recruitment Strategy**: Use the insights to optimize your own hiring strategy, from job descriptions to compensation packages.

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

Running Wellfound Discover Jobs Scraper once will get you 1,000 results for less than USD 3 in Apify platform credits. For more details about the plans we offer, platform credits, and usage, see the [platform pricing page](https://apify.com/pricing/actors) or this video guide on ▷ [how to choose the right subscription plan](https://www.youtube.com/watch?v=s_89WpOsKRI).

### How to scrape Wellfound?

#### Listings

To scrape all job offers enter the URL of the home job listing page. Your URL should look like this: `https://wellfound.com/role/r/frontend-engineer`.

![Apify  -  Wellfound Discover example listings](https://i.imgur.com/5eRAUyA.png)

You can filter results using jobFilterFunction option. For example:

```javascript
async ({ jobs }) =>
    jobs.filter(({ published }) =>
        [
            'today',
            'yesterday',
            '2 days ago',
            '3 days ago',
            '4 days ago',
            '5 days ago',
            '6 days ago',
            '7 days ago',
        ].includes(published),
    )
```

#### Job details

To scrape details enter the job URL you want to scrape or enable `scrapeJobDetails` option. Your URL should look like this: `https://wellfound.com/company/prelude-1/jobs/1466363-devops-engineer`.

### Input

Wellfound Discover Jobs Scraper has the following input options. Click on the [input tab](https://apify.com/mscraper/wellfound-discover-jobs-scraper/input-schema) for more information.

### Results

The output from Wellfound Scraper is stored in the dataset. After the run is finished, you can download the dataset in various data formats (JSON, CSV, XML, RSS, HTML Table). Here is a sample of the data that the actor produces:

```json
{
  "title": "Blockchain Automation QA Engineer",
  "location": "Dubai • India",
  "compensation": "$20k – $40k • No equity",
  "url": "https://wellfound.com/company/router-protocol/jobs/2661744-blockchain-automation-qa-engineer",
  "published": "1 week ago",
  "description": "We are seeking a Blockchain Automation QA Engineer to join our team to design, develop and execute automated testing scripts for our blockchain-based applications. The ideal candidate will have experience in blockchain technology, software testing methodologies, and automation frameworks. You will be responsible for ensuring the quality of our blockchain-based applications through continuous testing and automation. You will work closely with the development team to ensure that our products meet the highest standards of quality. Key Responsibilities: Design, develop and execute automated testing scripts for blockchain-based applications. Collaborate with the development team to ensure the product meets the required quality standards. Analyze requirements, design and develop test cases, and test scripts for blockchain-based applications. Develop test automation frameworks and tools for blockchain-based applications. Create and maintain test data and environments to support automation. Develop and maintain documentation related to testing and automation. Perform manual testing as needed. Identify, track, and report defects found during testing. Participate in continuous improvement activities for testing processes and methodologies. Provide feedback and suggestions for product improvements. Qualifications: Bachelor's degree in Computer Science, Information Technology, or related field. Minimum of 3 years of experience in software testing and quality assurance. Good to have - Minimum of 1 year of experience in testing blockchain-based applications. Strong knowledge of software testing methodologies, tools, and techniques. Experience with test automation frameworks, such as Selenium or Appium. Experience with blockchain technologies, such as Ethereum or Near. Strong knowledge of programming languages, such as Java, Python, or Solidity. Experience with Agile methodologies. Strong analytical and problem-solving skills. Excellent written and verbal communication skills. Strong attention to detail. Ability to work independently and in a team environment. Equal Opportunity: We are an equal opportunity employer and welcome applications from all qualified individuals regardless of race, color, religion, sex, national origin, age, disability, or any other legally protected status.",
  "jobType": "Full Time",
  "visaSponsorship": "Not Available",
  "hiresRemotelyIn": "Dubai • India",
  "remoteWorkPolicy": "Onsite or remote",
  "experience": "2+ years",
  "skills": [
    "Test Automation",
    "Solidity",
    "Blockchain",
    "Celenium"
  ],
  "hiringContact": {
    "name": "Router Recruiter",
    "position": "Recruiter"
  },
  "company": {
    "name": "Router Protocol",
    "description": "Cross chain Message Aggregation protocol",
    "logoUrl": "https://wellfound.com/cdn-cgi/image/width=92,height=92,fit=scale-down,gravity=0.5x0.5,quality=90,format=auto/https://photos.wellfound.com/startups/i/8216362-794a34a65b05ba491a557fdb66aa51af-medium_jpg.jpg",
    "size": "11-50 employees",
    "url": "https://wellfound.com/company/router-protocol",
    "badges": [
      {
        "text": "Actively Hiring"
      }
    ],
    "website": "https://routerprotocol.com",
    "twitter": "https://twitter.com/routerprotocol",
    "markets": [
      "Blockchains",
      "Web3"
    ],
    "totalRaised": "$4.6M"
  }
}
```

### Tips

- Increase request retries
- **Use residential proxies**

### Note

The scraper might give fewer results than shown on the job listing. This can happen because each company shows only up to three jobs. To tackle this, we suggest increasing the start URLs for your scraper. This can be done by including more locations and job positions.

### Is it legal to scrape Wellfound?

Note that personal data is protected by GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. We also recommend that you read our blog post: [is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Contact

Please feel free to browse through the diverse array of web scrapers available on [my Apify profile](https://apify.com/mscraper). If a custom solution or extra options are what you're seeking, don't hesitate to get in touch with me directly at <contact@mscraper.com>.

# Actor input Schema

## `proxy` (type: `object`):

Select proxies to be used by your crawler. Use RESIDENTIAL proxies.

## `maxRequestRetries` (type: `integer`):

Set max request retries

## `listingStartUrls` (type: `array`):

URLs to start with.

## `scrapeJobDetails` (type: `boolean`):

If checked then actor will scrape job details.

## `jobsFilterFunction` (type: `string`):

No description

## `jobStartUrls` (type: `array`):

URLs to scrape.

## `devLogs` (type: `boolean`):

Show debug logs.

## Actor input object example

```json
{
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US",
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxRequestRetries": 5,
  "listingStartUrls": [
    {
      "url": "https://wellfound.com/role/l/devops-engineer/seattle"
    }
  ],
  "scrapeJobDetails": false,
  "jobsFilterFunction": "async ({ jobs }) => jobs.filter(({ published }) => ['today','yesterday','2 days ago','3 days ago','4 days ago','5 days ago','6 days ago','7 days ago'].includes(published))",
  "devLogs": false
}
```

# 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 = {
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyCountry": "US",
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    },
    "listingStartUrls": [
        {
            "url": "https://wellfound.com/role/l/devops-engineer/seattle"
        }
    ],
    "jobsFilterFunction": async ({ jobs }) => jobs.filter(({ published }) => ['today','yesterday','2 days ago','3 days ago','4 days ago','5 days ago','6 days ago','7 days ago'].includes(published))
};

// Run the Actor and wait for it to finish
const run = await client.actor("mscraper/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 = {
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyCountry": "US",
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
    "listingStartUrls": [{ "url": "https://wellfound.com/role/l/devops-engineer/seattle" }],
    "jobsFilterFunction": "async ({ jobs }) => jobs.filter(({ published }) => ['today','yesterday','2 days ago','3 days ago','4 days ago','5 days ago','6 days ago','7 days ago'].includes(published))",
}

# Run the Actor and wait for it to finish
run = client.actor("mscraper/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 '{
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US",
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "listingStartUrls": [
    {
      "url": "https://wellfound.com/role/l/devops-engineer/seattle"
    }
  ],
  "jobsFilterFunction": "async ({ jobs }) => jobs.filter(({ published }) => ['\''today'\'','\''yesterday'\'','\''2 days ago'\'','\''3 days ago'\'','\''4 days ago'\'','\''5 days ago'\'','\''6 days ago'\'','\''7 days ago'\''].includes(published))"
}' |
apify call mscraper/wellfound-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mscraper/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/Ls1W8Pq7zSbNaglFa/builds/ICC7VGvs4frrACA3v/openapi.json
