# Wellfound Company Scraper — Funding, Team & Perks (`thenetaji/wellfound-company-scraper`) Actor

Research a startup from its Wellfound profile: funding rounds with the amount raised and the press behind them, lifetime capital raised, the team with titles and tenure, the perks it advertises, the roles it has open, and its website and social links.

- **URL**: https://apify.com/thenetaji/wellfound-company-scraper.md
- **Developed by:** [The Netaji](https://apify.com/thenetaji) (community)
- **Categories:** Business, Lead generation, Jobs
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.50 / 1,000 company profiles

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Wellfound Company Scraper

Research a startup from what it publishes about itself on Wellfound. One company slug in, one row
out, carrying its funding rounds with the amount raised and the press article behind each, its
lifetime capital raised, its team with titles and how long each person has held them, the perks it
advertises, the roles it has open, and its website, LinkedIn, X and blog.

It is the profile behind a name — for diligence, for a competitor file, for enriching a list of
companies that came from somewhere else.

### Accepted input

```json
{
  "companies": ["openai", "https://wellfound.com/company/homelight"],
  "sections": ["overview", "funding", "people"]
}
```

`companies` takes slugs or pasted profile URLs, mixed freely, and a company listed twice is read
once. `sections` chooses which tabs are read: `overview`, `funding`, `jobs`, `people`, `culture`.
Each tab is a separate read, so ask for what is wanted — and read the first question below before
dropping `funding`.

### What a row looks like

```json
{
  "company_name": "OpenAI",
  "company_slug": "openai",
  "company_url": "https://wellfound.com/company/openai",
  "company_website": "https://www.openai.com/",
  "company_pitch": "Discovering and enacting the path to safe artificial general intelligence",
  "company_size": "SIZE_201_500",
  "company_markets": ["Artificial Intelligence", "Machine Learning"],
  "company_locations": ["San Francisco"],
  "total_raised": 11000120000,
  "is_hiring": false,
  "open_jobs_count": 0,
  "linkedin_url": "https://www.linkedin.com/company/openai/",
  "twitter_url": "http://twitter.com/openai",
  "funding_rounds": [
    {
      "round_type": "Series Corporate Round",
      "raised_amount": 10000000000,
      "valuation": 0,
      "closed_at": "2023-02-09T00:00:00.000Z",
      "press_title": "Former Salesforce CEO Bret Taylor is launching an AI startup",
      "source_url": "https://qz.com/bret-taylor-ai-company-salesforce-twitter-1850090837"
    }
  ],
  "team": [
    {
      "name": "Greg Brockman",
      "title": "CTO",
      "role": "FOUNDER",
      "tenure_years": 10.7,
      "profile_url": "https://wellfound.com/p/greg-brockman",
      "avatar_url": "https://photos.wellfound.com/users/474574-medium_jpg?1405689115"
    }
  ],
  "perks": [
    {
      "category": "healthcare",
      "title": "Comprehensive health, dental, and vision coverage for you and your family",
      "description": ""
    }
  ],
  "open_jobs": [],
  "hidden_sections": ["SALARIES"],
  "sections_fetched": ["overview", "funding"]
}
```

Amounts are whole currency units as the site stores them, so `11000120000` is $11.00012B.
`tenure_years` comes from the tenure in seconds Wellfound states for each role, which makes a
founder's own record — the same person appearing with several titles over several years — legible
in a way most company databases do not publish.

### Questions

**Why did every round come back with `raised_amount: null`?**
Because `funding` was not requested. The overview tab lists a company's rounds with their type and
close date and omits the amount and the press link; only the funding tab carries them. HomeLight's
eleven rounds come back empty from overview and with $60M, $55M, $263M and $100M from funding.
When both are requested the two are merged by round, so the fuller version wins and nothing is
duplicated.

**Why is there no salaries section?**
Wellfound redirects that sub-page to the overview and most companies hide it outright — both
companies checked on 16 August 2026 reported `["SALARIES"]` in `hidden_sections` — so offering it
would promise data the site does not serve. `hidden_sections` is on every row precisely so an
empty section can be read as "the company withheld this" rather than "the read failed".

**`open_jobs` is empty but the company clearly has roles open. Why?**
The `jobs` section was not requested. `open_jobs_count` comes from the company record and is
present either way; the postings themselves are on the jobs tab. There is a second reason worth
knowing: the overview tab renders a strip of recommended postings from *other* companies, and
OpenAI — with no open roles of its own — comes back with ten of them. Postings are matched against
the company they belong to and everything else is dropped, so an empty `open_jobs` is never
somebody else's roles wearing this company's name.

**Why is `team` short compared with the company's real headcount?**
Because it is who the company has chosen to list on Wellfound, not its payroll. The overview tab
lists founders only; the `people` tab lists the wider team, which on HomeLight is 25 people
against a `SIZE_501_1000` band. People whose record could not be resolved from the page carry no
name and are left out rather than added as blanks.

**What happens to a slug that does not exist?**
It produces no row, is named in the run log, and costs nothing; the rest of the list carries on. A
renamed or removed company answers exactly like one that never existed, so those are one outcome
from outside.

**Does asking for all five sections cost five times as much?**
No — a company is charged once however many sections were read. More sections make a run slower
rather than more expensive, which is why the default is `overview` and `funding` rather than
everything.

**Can companies be discovered here rather than named?**
No. This Actor reads profiles that are named in the input. Discovery is the
[Wellfound Startups Scraper](https://apify.com/thenetaji/wellfound-startups-scraper)'s job, and
its `company_slug` column is exactly what this one takes as input.

### Related Actors

[Wellfound Startups Scraper](https://apify.com/thenetaji/wellfound-startups-scraper) produces the
company list, and can attach these same profile fields to each row in the same run.

[Wellfound Jobs Scraper](https://apify.com/thenetaji/wellfound-jobs-scraper) exports the postings
themselves by role and city, with the hiring company on every row.

# Actor input Schema

## `companies` (type: `array`):

Company slugs, one per line, as they appear in a wellfound.com/company/<slug> URL: `openai`, `homelight`. A full company URL may be pasted instead.

A slug the site does not know produces no row and a line in the run log; the rest of the list continues.

## `sections` (type: `array`):

Which tabs of a company profile to read. Each is a separate request, so ask for what is wanted and no more.

`funding` is the one worth stating: the overview tab lists a company's rounds but not the amounts raised or the press behind them, so a profile fetched without `funding` reports rounds with no money on them. `jobs` returns the company's own open postings; `people` returns the team with titles and tenure; `culture` returns the stated perks.

There is no salaries tab. Wellfound redirects it to the overview and most companies hide it outright, so it is not offered rather than returned empty — `hidden_sections` on every row says what a given company has withheld.

## Actor input object example

```json
{
  "companies": [
    "openai"
  ],
  "sections": [
    "overview",
    "funding"
  ]
}
```

# Actor output Schema

## `dataset` (type: `string`):

All records scraped by this run

# 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 = {
    "companies": [
        "openai"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("thenetaji/wellfound-company-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 = { "companies": ["openai"] }

# Run the Actor and wait for it to finish
run = client.actor("thenetaji/wellfound-company-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 '{
  "companies": [
    "openai"
  ]
}' |
apify call thenetaji/wellfound-company-scraper --silent --output-dataset

```

## MCP server setup

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