# TeamBlind Reviews Scraper (`maximedupre/teamblind-reviews-scraper`) Actor

Extract public TeamBlind company reviews. Export ratings, summaries, pros, cons, reviewer context, company details, and source URLs. Use it for employer research, hiring-market analysis, or scheduled review monitoring.

- **URL**: https://apify.com/maximedupre/teamblind-reviews-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$2.50 / 1,000 scraped teamblind reviews

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

### 🔎 TeamBlind Reviews Scraper

TeamBlind Reviews Scraper extracts public company reviews from [TeamBlind](https://www.teamblind.com/) and saves them as clean Apify dataset items. Add company names, TeamBlind company slugs, or company review URLs, then export ratings, summaries, pros, cons, reviewer context, company details, source links, and scrape timestamps.

Use it when you need a focused TeamBlind reviews scraper for employer research, competitor hiring analysis, workplace reputation monitoring, talent-market research, or repeat exports of Blind employee reviews. The Actor is built around the public company reviews surface on TeamBlind. It does not ask you for TeamBlind cookies, login credentials, or API keys.

### ✅ What this actor does

- Scrapes public TeamBlind company review pages.
- Accepts company names, company slugs, and TeamBlind company review URLs.
- Returns one dataset item per public company review.
- Captures overall rating plus career, work-life balance, compensation, culture, and management ratings when TeamBlind shows them.
- Extracts review summary, pros, cons, job title, reviewer location, employee status, tenure years, review dates, helpful count, and source URLs.
- Adds company context such as company name, slug, website, logo, industry, headquarters, employee size, founding year, aggregate rating, and review count when available.
- Lets you cap total reviews and reviews per company.
- Charges only for saved TeamBlind reviews.

This Actor is focused on TeamBlind company reviews. It does not scrape Blind posts, comments, feeds, salaries, benefits, jobs, private account-only data, or cross-site company profiles.

### 📊 Data you can extract

Each saved item is one TeamBlind review. Depending on what TeamBlind exposes for the company or review, fields can include:

- `reviewId` and `reviewUrl`
- `companyName`, `companySlug`, and `companyReviewsUrl`
- `ratingOverall`, `ratingCareer`, `ratingWorkLifeBalance`, `ratingCompensation`, `ratingCulture`, and `ratingManagement`
- `summary`, `pros`, and `cons`
- `jobTitle`, `reviewerLocation`, and `reviewerCountryCode`
- `isCurrentEmployee`, `memberStartYear`, and `memberEndYear`
- `reviewedAt`, `updatedAt`, `approvedAt`, and `helpfulCount`
- `company` object with website, logo, headquarters, industry, employee size, aggregate rating, and review count when available
- `sourceTarget`, `sourceUrl`, `sourcePlatform`, and `scrapedAt`

The dataset is designed for exports, API pulls, scheduled runs, webhooks, spreadsheets, BI tools, and downstream analysis.

### 🚀 How to run it

1. Open the Actor input.
2. Add one or more companies in **TeamBlind targets**.
3. Use a company name such as `Twilio`, a TeamBlind company slug, or a company reviews URL.
4. Set **Maximum reviews** and **Reviews per company** to control run size and cost.
5. Start the Actor and open the dataset when the run finishes.

The prefilled target is small and easy to inspect, so you can confirm the output shape before running a larger company list.

### 🧾 Input

| Field | What to enter |
| --- | --- |
| `targets` | Company names, TeamBlind company slugs, or TeamBlind company review URLs. |
| `maxItems` | Maximum TeamBlind reviews to save across the whole run. |
| `maxReviewsPerCompany` | Maximum TeamBlind reviews to save for each company target. |

Example input:

```json
{
	"targets": [
		"Twilio",
		"https://www.teamblind.com/company/Twilio/reviews"
	],
	"maxItems": 50,
	"maxReviewsPerCompany": 25
}
````

### 📦 Output example

```json
{
	"reviewId": "438100",
	"reviewUrl": "https://www.teamblind.com/company/Twilio/reviews/review/sbYXVIwA52",
	"companyName": "Twilio",
	"companySlug": "Twilio",
	"ratingOverall": 4,
	"ratingCareer": 4,
	"ratingWorkLifeBalance": 3,
	"ratingCompensation": 4,
	"ratingCulture": 3,
	"ratingManagement": 3,
	"summary": "Probably the most vanilla tech company out there",
	"pros": "Benefits are good once you're a high enough level to get them all.",
	"cons": "Limited career mobility at high levels.",
	"jobTitle": "Senior Manager Customer Service",
	"reviewerLocation": "United States",
	"reviewerCountryCode": "US",
	"isCurrentEmployee": true,
	"memberStartYear": 2022,
	"memberEndYear": null,
	"reviewedAt": "2026-05-15T06:12:56.000Z",
	"sourceTarget": "Twilio",
	"sourceUrl": "https://www.teamblind.com/company/Twilio/reviews",
	"companyReviewsUrl": "https://www.teamblind.com/company/Twilio/reviews",
	"sourcePlatform": "teamblind",
	"scrapedAt": "2026-05-28T00:00:00.000Z"
}
```

### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each TeamBlind review successfully saved to the dataset.

Use **Maximum reviews** and **Reviews per company** to keep the first run small, then increase the limits when the exported fields match your workflow.

### ⚠️ Limits and caveats

- The Actor collects public TeamBlind company reviews only.
- Some review fields can be empty when TeamBlind does not expose them for a specific review.
- TeamBlind controls review availability, pagination, page layout, and visible company metadata.
- The Actor does not log in to TeamBlind or collect private account-only content.
- Company names are accepted, but TeamBlind slugs or company review URLs are the most precise inputs when a company name is ambiguous.
- If a target is invalid, unavailable, or has no public review surface, the Actor skips it and continues with the rest of the run.

### ❓ FAQ

#### 🔎 Is this a TeamBlind reviews scraper or a Blind review scraper?

Both phrases usually refer to the same public company review surface on TeamBlind. This Actor focuses on TeamBlind company reviews and Blind employee review data, not Blind discussion posts.

#### 🔐 Do I need TeamBlind cookies or an account?

No. The Actor is designed for public TeamBlind company review pages and does not ask for cookies, login credentials, session exports, or API keys.

#### 📌 Does it scrape salaries, benefits, jobs, or posts?

No. This Actor is intentionally scoped to public company reviews. It does not scrape TeamBlind salaries, benefits, jobs, posts, comments, or feeds.

#### 🧩 Why do some fields come back empty?

TeamBlind does not expose the same details on every company or review. Empty fields mean the value was not available on the public page for that item.

### 📝 Changelog

- 0.0: Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~teamblind-reviews-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Other actors

- [Facebook Reviews Scraper ↗](https://apify.com/maximedupre/facebook-reviews-scraper) - Collect public Facebook Page recommendations for reputation monitoring.
- [DoorDash Reviews Scraper ↗](https://apify.com/maximedupre/doordash-reviews-scraper) - Export public DoorDash store review previews.
- [App Store Ratings Scraper ↗](https://apify.com/maximedupre/app-store-ratings-scraper) - Track Google Play and Apple App Store ratings and app metadata.
- [LinkedIn Company Scraper ↗](https://apify.com/maximedupre/linkedin-company-scraper) - Export public LinkedIn company profile facts.
- [LinkedIn Company People Scraper ↗](https://apify.com/maximedupre/linkedin-company-people-scraper) - Collect visible people from LinkedIn company People pages.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `targets` (type: `array`):

Add one company name, TeamBlind company slug, or TeamBlind company reviews URL per row.

## `maxItems` (type: `integer`):

Maximum number of TeamBlind reviews to save across the whole run.

## `maxReviewsPerCompany` (type: `integer`):

Maximum number of TeamBlind reviews to save for each company target before moving to the next target.

## Actor input object example

```json
{
  "targets": [
    "Twilio"
  ],
  "maxItems": 100,
  "maxReviewsPerCompany": 100
}
```

# Actor output Schema

## `results` (type: `string`):

Saved TeamBlind reviews

# 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 = {
    "targets": [
        "Twilio"
    ],
    "maxItems": 100,
    "maxReviewsPerCompany": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/teamblind-reviews-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 = {
    "targets": ["Twilio"],
    "maxItems": 100,
    "maxReviewsPerCompany": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/teamblind-reviews-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "targets": [
    "Twilio"
  ],
  "maxItems": 100,
  "maxReviewsPerCompany": 100
}' |
apify call maximedupre/teamblind-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=maximedupre/teamblind-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TeamBlind Reviews Scraper",
        "description": "Extract public TeamBlind company reviews. Export ratings, summaries, pros, cons, reviewer context, company details, and source URLs. Use it for employer research, hiring-market analysis, or scheduled review monitoring.",
        "version": "0.0",
        "x-build-id": "D27kyZf5Cgf6sLWgI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/maximedupre~teamblind-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-maximedupre-teamblind-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/maximedupre~teamblind-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-maximedupre-teamblind-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/maximedupre~teamblind-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-maximedupre-teamblind-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "targets",
                    "maxItems",
                    "maxReviewsPerCompany"
                ],
                "properties": {
                    "targets": {
                        "title": "TeamBlind targets",
                        "minItems": 1,
                        "type": "array",
                        "description": "Add one company name, TeamBlind company slug, or TeamBlind company reviews URL per row.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum reviews",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of TeamBlind reviews to save across the whole run.",
                        "default": 100
                    },
                    "maxReviewsPerCompany": {
                        "title": "Reviews per company",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of TeamBlind reviews to save for each company target before moving to the next target.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
