# Clutch.co Scraper - B2B Service Providers & Reviews (`jungle_synthesizer/clutch-scraper`) Actor

Scrape B2B service company profiles and client reviews from Clutch.co. Extract ratings, hourly rates, service lines, industry focus, contact info, and reviewer details. Filter by service line and minimum rating.

- **URL**: https://apify.com/jungle_synthesizer/clutch-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Lead generation, Business, Other
- **Features:** Limited permissions
- **Stats:** 57 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 record scrapeds

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

## Clutch.co Scraper — B2B Service Provider Directory, Agency Data & Reviews

Scrape the Clutch.co B2B agency directory for company profiles and client reviews from [Clutch.co](https://clutch.co). This Clutch.co scraper pulls ratings, hourly rates, project minimums, service lines, industry focus, contact info, and the top client review in a single pass — a structured alternative to the Clutch.co API for agency and service-provider data.

***

### What It Does

Two-phase crawl against Clutch.co:

1. **Directory listing** — the crawler walks a category or service-line index (e.g. `web-developers`, `agencies/seo`) and collects every company card on the page.
2. **Company profile** — each card's profile page is opened, full firmographic and review data is extracted, and a flat record is emitted to the dataset.

Clutch sits behind a managed bot challenge. The scraper clears it automatically.

***

### Input

| Field         | Type    | Description                                                                                          |
|---------------|---------|------------------------------------------------------------------------------------------------------|
| `mode`        | string  | `listings` (cards only, fast) or `both` (cards + full profile + top review). Default: `both`.        |
| `serviceLine` | string  | Service-line slug (e.g. `web-developers`, `agencies/seo`). Leave blank to hit the default directory. |
| `minRating`   | number  | Drop profiles under this Clutch rating (0-5). Default: `0`.                                          |
| `searchUrls`  | array   | Specific Clutch.co directory, category, or `/profile/<slug>` URLs. Overrides `serviceLine` if set.   |
| `maxItems`    | integer | Cap on returned records. Default: `15`. `0` = unlimited.                                             |

#### Sample input

```json
{
  "mode": "both",
  "serviceLine": "web-developers",
  "minRating": 4.5,
  "maxItems": 100
}
```

Or with explicit URLs:

```json
{
  "mode": "both",
  "searchUrls": [
    { "url": "https://clutch.co/profile/toptal" },
    { "url": "https://clutch.co/agencies/seo" }
  ],
  "maxItems": 50
}
```

***

### Output

One record per company. Listing fields come from the directory card; profile fields and the top review come from the `/profile/<slug>` page.

```json
{
  "company_name": "Toptal",
  "company_url": "https://www.toptal.com",
  "clutch_url": "https://clutch.co/profile/toptal",
  "tagline": "Hire the Top 3% of Freelance Talent",
  "description": "Toptal is an exclusive network of the top freelance software developers, designers, finance experts...",
  "location": "New York, NY",
  "employee_count": "1,000 - 9,999",
  "founded_year": 2010,
  "hourly_rate": "$100 - $149 / hr",
  "min_project_size": "$25,000+",
  "clutch_rating": 4.8,
  "reviews_count": 425,
  "service_lines": ["Web Development", "Mobile App Development", "Custom Software Development"],
  "industry_focus": ["Financial Services", "Healthcare", "E-Commerce"],
  "client_focus": ["Midmarket", "Enterprise"],
  "phone": "+1 (888) 555-0123",
  "review_rating": 5.0,
  "review_title": "Reliable partner for rapid MVP delivery",
  "review_text": "Toptal delivered a working MVP in six weeks and has been embedded with our product team since.",
  "reviewer_name": "Jane Doe",
  "reviewer_position": "VP of Engineering",
  "reviewer_company": "Series B FinTech",
  "review_date": "Aug 14, 2025"
}
```

Array fields (`service_lines`, `industry_focus`, `client_focus`) are plain arrays of strings. Every other field is a scalar or null.

***

### Pricing — Pay Per Result

- **$0.002 per company record** (+ a fixed start fee per run).
- You only pay for records we actually deliver.
- 100 records ≈ $0.20. 1,000 records ≈ $2. 10,000 records ≈ $20.

If a run fails before any records are saved, you aren't charged for results.

***

### Typical Use Cases — Agency Lead Generation & B2B Company Data

- **B2B lead generation** — pull agencies ranked in your target service line, then route them into outreach with hourly rate and project-size context already attached.
- **Competitive intelligence** — see how your category ranks on Clutch, with review volume and reviewer testimonials.
- **Vendor shortlisting** — filter by `minRating` and service line, then pipe directly into a CRM.
- **Market sizing** — count the providers per service line and region, using employee and hourly-rate buckets as a proxy for firm scale.

***

### Notes & Limits

- Clutch.co pagination varies by category. Listing mode walks up to a small number of follow-up pages; detail mode stops once `maxItems` profiles have been saved.
- `review_*` fields return the top review only. Full review lists are not in scope for this actor.
- Clutch is bot-protected, and turns away most automated tools before the first page loads. This one gets through.
- Run memory defaults to 2 GB. Lower it only if you're hitting a small URL list.

***

### FAQ

**How do I scrape company data from Clutch.co?**
Point the actor at a service-line slug or a list of Clutch.co directory and `/profile/<slug>` URLs, set `maxItems`, and run it. Each company comes back as a flat record with ratings, hourly rate, service lines, and the top review.

**Does Clutch.co have an API for agency data?**
There is no public Clutch.co API for bulk company or review data. This scraper is the structured alternative — it reads the same directory and profile pages and emits clean JSON records you can pipe into a CRM or spreadsheet.

**Can I filter Clutch agencies by service and rating?**
Yes. Use `serviceLine` to target a category (web developers, SEO agencies, mobile app developers, and more) and `minRating` to drop providers below a Clutch rating threshold.

***

### Issues, feature requests, custom data

Open an issue on the actor's Apify page or email us through the console. Happy to add fields, tune selectors, or build a variant (reviews-only, JSON-LD-only, specific country) if your use case needs it.

***

**Further reading:** [Software Marketplace Data: App Stores, Review Sites, and Partner Directories](https://orbtop.com/articles/software-marketplace-review-data/)

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `mode` (type: `string`):

What to extract from Clutch.co profiles.

## `serviceLine` (type: `string`):

Filter by service line / category. Leave blank for all services.

## `minRating` (type: `number`):

Minimum Clutch rating (0-5). Lower ratings are filtered out.

## `searchUrls` (type: `array`):

Specific Clutch.co directory, category, or profile URLs to scrape. Overrides serviceLine when provided.

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

Maximum number of company records to return. Set to 0 for unlimited.

## Actor input object example

```json
{
  "sp_contact": "Share your email here...",
  "mode": "both",
  "serviceLine": "web-developers",
  "minRating": 0,
  "maxItems": 15
}
```

# Actor output Schema

## `results` (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 = {
    "sp_contact": "Share your email here...",
    "mode": "both",
    "serviceLine": "web-developers",
    "minRating": 0,
    "maxItems": 15
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/clutch-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 = {
    "sp_contact": "Share your email here...",
    "mode": "both",
    "serviceLine": "web-developers",
    "minRating": 0,
    "maxItems": 15,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/clutch-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 '{
  "sp_contact": "Share your email here...",
  "mode": "both",
  "serviceLine": "web-developers",
  "minRating": 0,
  "maxItems": 15
}' |
apify call jungle_synthesizer/clutch-scraper --silent --output-dataset

```

## MCP server setup

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