# Clutch.co Scraper — Extract Agency Leads & Reviews (`khadinakbar/clutch-scraper`) Actor

Scrape Clutch.co company listings to extract structured B2B lead data: company name, star rating, review count, hourly rate, min project size, employees, location, services, and website. Supports all Clutch categories and bulk pagination. MCP-compatible for AI agent workflows.

- **URL**: https://apify.com/khadinakbar/clutch-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, AI, MCP servers
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 scraped companies

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## 🔍 Clutch.co Scraper — Extract Agency Leads, Ratings & Pricing

**What does the Clutch.co Scraper do?** It extracts company profiles from Clutch.co — the world's largest B2B ratings and reviews platform — giving you verified agency leads with ratings, pricing, location, services, and contact information.

**Why use the Clutch.co Scraper?**
- Build targeted B2B prospect lists of IT agencies, software developers, and marketing firms
- Enrich your CRM with verified company data backed by real client reviews
- Monitor competitors or identify top-rated vendors in any service category

**What data can the Clutch.co Scraper extract?**

| Field | Type | Example |
|-------|------|---------|
| company_name | string | "Saritasa" |
| profile_url | string | "https://clutch.co/profile/saritasa" |
| website | string | "https://saritasa.com" |
| tagline | string | "Software Development & IT Services" |
| star_rating | number | 4.9 |
| review_count | integer | 142 |
| min_project_size | string | "$10,000+" |
| hourly_rate | string | "$25 - $49 / hr" |
| employees | string | "50 - 249" |
| location | string | "Newport Beach, CA" |
| services | array | ["Custom Software Dev", "Web Dev"] |
| is_verified | boolean | true |
| is_sponsored | boolean | false |
| scraped_at | ISO 8601 | "2026-04-13T12:00:00.000Z" |
| source_url | string | "https://clutch.co/it-services?page=1" |

---

### 🚀 How to Use the Clutch.co Scraper

#### Step 1 — Pick your category
Go to [clutch.co](https://clutch.co) and browse to the service category you want. Copy the URL from your browser — for example:
- `https://clutch.co/it-services` — IT services companies
- `https://clutch.co/web-developers` — Web development agencies
- `https://clutch.co/agencies/digital-marketing` — Digital marketing agencies
- `https://clutch.co/app-developers` — Mobile app developers

#### Step 2 — Paste the URL & run
Paste it into the **Clutch Category URL** field and set **Max Results** to control how many companies to scrape. Click **Run**.

#### Step 3 — Export your leads
Download results as CSV, JSON, or XLSX — ready for your CRM, outreach tool, or spreadsheet.

#### Example: Scrape top 100 UK web development agencies

```json
{
    "categoryUrl": "https://clutch.co/uk/web-developers",
    "maxResults": 100
}
````

#### Example: Scrape IT companies in New York

```json
{
    "categoryUrl": "https://clutch.co/it-services",
    "location": "New York",
    "maxResults": 50
}
```

#### Example: Run via API

```bash
curl -X POST "https://api.apify.com/v2/acts/USERNAME~clutch-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"categoryUrl": "https://clutch.co/web-developers", "maxResults": 200}'
```

***

### 💰 Pricing

This actor uses **Pay-Per-Event** pricing — you only pay for what you scrape.

| What | Price |
|------|-------|
| Per company scraped | $0.05 |
| Free trial | First 10 companies free |

**Example:** 100 companies = $5.00. 1,000 companies = $50.00.

***

### 📊 Output Example

```json
{
    "company_name": "Saritasa",
    "profile_url": "https://clutch.co/profile/saritasa",
    "website": "https://saritasa.com",
    "tagline": "We Build Software That Powers Growth",
    "star_rating": 4.9,
    "review_count": 142,
    "min_project_size": "$10,000+",
    "hourly_rate": "$50 - $99 / hr",
    "employees": "250 - 999",
    "location": "Newport Beach, CA",
    "services": ["Custom Software Development", "Web Development", "Mobile App Development"],
    "is_verified": true,
    "is_sponsored": false,
    "scraped_at": "2026-04-13T12:00:00.000Z",
    "source_url": "https://clutch.co/it-services"
}
```

***

### ⚙️ Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| categoryUrl | string | `https://clutch.co/it-services` | Clutch.co category or search URL |
| startUrls | array | `[]` | Alternative: list of Clutch URLs to scrape |
| location | string | \`\` | Filter by city/country (e.g., "London") |
| maxResults | integer | `50` | Max companies to scrape (1–5000) |
| maxConcurrency | integer | `2` | Browser tabs in parallel (keep low to avoid blocks) |

***

### 🔗 Integrate with Other Tools

Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools. Connect directly to:

- **Google Sheets** — real-time lead tracking
- **Zapier / Make** — automated CRM pushes
- **Airtable** — enriched agency database
- **HubSpot / Salesforce** — direct CRM import via API

***

### 🌐 Available Clutch Categories

Some popular category URLs you can use:

- `/it-services` — IT Services
- `/web-developers` — Web Developers
- `/app-developers` — App Developers
- `/agencies/digital-marketing` — Digital Marketing
- `/seo-firms` — SEO Companies
- `/agencies/social-media-marketing` — Social Media Marketing
- `/firms/artificial-intelligence` — AI Companies
- `/cloud-consulting` — Cloud Consulting
- `/cybersecurity` — Cybersecurity
- `/agencies/content-marketing` — Content Marketing
- `/agencies/pr` — PR Agencies
- `/agencies/advertising` — Advertising Agencies

***

### ❓ FAQ

**Does it require login?**
No. The Clutch.co Scraper works without any account or cookies.

**Will it trigger bot detection?**
The scraper uses Playwright with stealth settings and keeps concurrency low to minimize detection risk. We recommend running with `maxConcurrency: 2` (the default).

**Can I scrape individual company profiles?**
The current version scrapes listing pages. Company profile deep-scraping (portfolio, individual reviews, social links) is available in the Pro tier — contact us or check our other actors.

**How fresh is the data?**
Every run fetches live data directly from Clutch.co in real time.

**Can I schedule runs?**
Yes. Use Apify's built-in scheduler to refresh your lead database weekly or monthly.

***

### ⚖️ Legal Disclaimer

*This actor is intended for lawful data collection from publicly available sources. Users are responsible for compliance with applicable laws, Clutch.co's Terms of Service, and data protection regulations (GDPR, CCPA, etc.). Do not use this actor to collect personal data without a lawful basis. Apify and the actor developer are not liable for any misuse.*

# Actor input Schema

## `categoryUrl` (type: `string`):

Use this when the user provides a specific Clutch.co category or search URL (e.g., 'https://clutch.co/it-services', '/web-developers', '/agencies/digital-marketing'). Do NOT use this when the user just describes a niche — use startUrls instead. Supports full URLs and relative paths.

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

Alternative to categoryUrl. Paste one or more Clutch.co listing URLs here — including any filters you set manually on the site (location, budget, company size, etc.). Each URL will be scraped.

## `location` (type: `string`):

Optional. Filter results to a specific city or country. Examples: 'New York', 'United Kingdom', 'India'. Leave empty to scrape all locations.

## `maxResults` (type: `integer`):

Maximum number of companies to scrape. One company = one result. Lower this to reduce cost.

## `maxConcurrency` (type: `integer`):

Number of browser tabs to run in parallel. Keep at 1-2 to avoid triggering Cloudflare bot detection on Clutch.co.

## Actor input object example

```json
{
  "categoryUrl": "https://clutch.co/it-services",
  "startUrls": [
    {
      "url": "https://clutch.co/it-services"
    }
  ],
  "location": "",
  "maxResults": 50,
  "maxConcurrency": 2
}
```

# Actor output Schema

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

Dataset of all scraped Clutch.co company profiles. Each item contains: company\_name (string), profile\_url (string), website (string|null), tagline (string|null), star\_rating (number|null, 0–5), review\_count (integer|null), min\_project\_size (string|null), hourly\_rate (string|null), employees (string|null), location (string|null), services (string\[]), is\_verified (boolean), is\_sponsored (boolean), scraped\_at (ISO 8601 string), source\_url (string). Use the dataset items API to retrieve records as JSON, CSV, or XLSX.

## `debugCardHtml` (type: `string`):

Raw outerHTML of the first listing card captured during the run. Useful for validating CSS selectors against Clutch.co's live DOM structure. Access via the key-value store API using the key DEBUG\_CARD\_HTML. Only present when at least one company card was successfully rendered.

# 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 = {
    "categoryUrl": "https://clutch.co/it-services",
    "startUrls": [
        {
            "url": "https://clutch.co/it-services"
        }
    ],
    "maxResults": 50,
    "maxConcurrency": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/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 = {
    "categoryUrl": "https://clutch.co/it-services",
    "startUrls": [{ "url": "https://clutch.co/it-services" }],
    "maxResults": 50,
    "maxConcurrency": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/clutch-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 '{
  "categoryUrl": "https://clutch.co/it-services",
  "startUrls": [
    {
      "url": "https://clutch.co/it-services"
    }
  ],
  "maxResults": 50,
  "maxConcurrency": 2
}' |
apify call khadinakbar/clutch-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Clutch.co Scraper — Extract Agency Leads & Reviews",
        "description": "Scrape Clutch.co company listings to extract structured B2B lead data: company name, star rating, review count, hourly rate, min project size, employees, location, services, and website. Supports all Clutch categories and bulk pagination. MCP-compatible for AI agent workflows.",
        "version": "1.0",
        "x-build-id": "bvzrikCCk5BMbz6ed"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~clutch-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-clutch-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/khadinakbar~clutch-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-clutch-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/khadinakbar~clutch-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-clutch-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",
                "properties": {
                    "categoryUrl": {
                        "title": "Clutch Category URL",
                        "type": "string",
                        "description": "Use this when the user provides a specific Clutch.co category or search URL (e.g., 'https://clutch.co/it-services', '/web-developers', '/agencies/digital-marketing'). Do NOT use this when the user just describes a niche — use startUrls instead. Supports full URLs and relative paths.",
                        "default": "https://clutch.co/it-services"
                    },
                    "startUrls": {
                        "title": "Custom Start URLs",
                        "type": "array",
                        "description": "Alternative to categoryUrl. Paste one or more Clutch.co listing URLs here — including any filters you set manually on the site (location, budget, company size, etc.). Each URL will be scraped.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "location": {
                        "title": "Filter by Location",
                        "type": "string",
                        "description": "Optional. Filter results to a specific city or country. Examples: 'New York', 'United Kingdom', 'India'. Leave empty to scrape all locations.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of companies to scrape. One company = one result. Lower this to reduce cost.",
                        "default": 50
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Number of browser tabs to run in parallel. Keep at 1-2 to avoid triggering Cloudflare bot detection on Clutch.co.",
                        "default": 2
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
