# Clutch.co Scraper – Agency Leads, Rates and Emails (`martinvarelaa/clutch-agency-scraper`) Actor

Clutch.co agency leads by category and location: website, domain, hourly rate, team size, rating, and published email and phone. $2.50 per 1,000 companies. JSON or CSV.

- **URL**: https://apify.com/martinvarelaa/clutch-agency-scraper.md
- **Developed by:** [Martin Varela](https://apify.com/martinvarelaa) (community)
- **Categories:** Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 companies

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

## Clutch.co Scraper

Build a B2B agency lead list from Clutch.co at $2.50 per 1,000 companies: website and domain, hourly rate, team size, rating, location and, when you ask for them, published contacts and project budgets. Export JSON or CSV.

### Who it is for

- **Sales teams and SDRs** selling to agencies: filter by rate, size and location, then enrich by domain.
- **Companies hiring an agency**: compare rates, minimum project size and review scores across a category.
- **Market researchers** sizing an agency niche by country or service.

### What you get

- Company name, profile URL, rating, review count, hourly rate, team size, minimum project size, founding year and location.
- The company website with tracking parameters removed, and the registrable domain.
- Sponsored and featured cards flagged, so you can skip them.
- Optional profile details: service percentages, industries, client focus and review scores.
- Optional published contacts: email and phone, charged only when returned.
- Optional project facts from public reviews: budget, category, client company, reviewer role, rating and date. The review text itself is not returned.

### Sample output

A real row from a run on the digital-marketing category, trimmed:

```json
{
  "name": "NinjaPromo",
  "sourceUrl": "https://clutch.co/profile/ninjapromo",
  "website": "https://ninjapromo.io/",
  "websiteDomain": "ninjapromo.io",
  "rating": 4.9,
  "reviewsCount": 97,
  "hourlyRate": { "min": 50, "max": 99, "currency": "USD", "raw": "$50 - $99 / hr" },
  "employees": { "min": 250, "max": 999, "raw": "250 - 999" },
  "minProjectSize": { "amount": 5000, "currency": "USD", "raw": "$5,000+" },
  "yearFounded": 2017,
  "location": { "city": "New York", "region": "NY", "country": "US" },
  "reviewScores": { "quality": 4.9, "schedule": 4.9, "cost": 4.8, "willingToRefer": 4.9 },
  "phone": "+44 20 4577 2405",
  "projects": [
    {
      "budget": "$50,000 to $199,999",
      "category": "Other Digital Marketing",
      "reviewerRole": "Chief Marketing Officer",
      "rating": 5,
      "date": "Jan 3, 2022"
    }
  ],
  "isSponsored": false
}
```

`email` and `emailSource` appear when the profile publishes an email or one can be inferred from the website.

### How to use

1. Paste a Clutch category URL, for example `https://clutch.co/agencies/digital-marketing`. Location filters belong in that URL, for example `/agencies/digital-marketing/uk`.
2. Leave Maximum companies at 10 for a preview. Turn on profile details, contacts or project facts only when you want those extra rows priced.
3. Export JSON or CSV. Sort by `rating` or filter `isSponsored`.

```json
{
  "startUrls": [{ "url": "https://clutch.co/agencies/digital-marketing" }],
  "maxCompanies": 10
}
```

### Input

| Field | Default | What it does |
|---|---|---|
| `startUrls` | one digital-marketing category | Category or profile URLs on clutch.co. |
| `maxCompanies` | 10 | Stop after this many companies. |
| `includeProfileDetails` | false | Service mix, industries, client focus and scores. Extra event. |
| `includePublishedContacts` | false | Published or inferred email and phone. Charged only when returned. |
| `includeProjectFacts` | false | Budget, client, reviewer name and role from public reviews. No review text. |
| `skipSponsored` | false | Drop Sponsor and featured cards. |
| `proxyConfiguration` | residential | A deep category from a datacenter address starts returning Cloudflare pages. The measured 1,000-company run used residential. |

### Pricing

You pay for each company delivered. Profile details, contacts and project facts are extra and only when that part of the run returns them. An empty category is not charged.

| You take | You pay |
|---|---|
| 1 company | $0.0025 |
| 1,000 companies | $2.50 |
| 1,000 companies plus profile details | $4.00 |
| 1 published contact | $0.008 |
| 1 project fact | $0.002 |

Plan discounts: Bronze 10% off, Silver 20% off, Gold, Platinum and Diamond 30% off. A run uses 512 MB.

### Use with AI agents (MCP)

Call `martinvarelaa/clutch-agency-scraper` from the Apify MCP server with `startUrls` and `maxCompanies`. Leave contacts and project facts off unless the task needs them. The dataset is one JSON object per company.

### Use via API

```bash
curl -X POST "https://api.apify.com/v2/acts/martinvarelaa~clutch-agency-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://clutch.co/agencies/digital-marketing"}],"maxCompanies":10}'
```

### FAQ

#### How reliable is it?

In our acceptance run of 1,000 companies from one category, 20 of 20 list pages loaded, every company had a unique id and 1,000 of 1,000 had a website domain. A Cloudflare page with no company cards counts as a failed page, not as an empty category.

#### Can I filter by country or city?

Yes. Open the category on clutch.co, apply the location filter, and paste that URL.

#### Does it return review text?

No. Project facts are the budget, the client company, the category, the reviewer role and name as published, the rating and the date. The text of the review is not included.

#### Why are some websites filled from the profile?

Sponsored cards hide the website behind Clutch's click tracker. When the domain is missing, it is filled from the profile. That fill is not the profile-details charge.

#### Is the data legal to use?

This Actor returns publicly available business data, including the contact fields named in its input. You are the controller of that data and you are responsible for having a lawful basis, including for any message you send. This Actor does not send messages and does not keep a copy of the results.

### Other actors

- [SEO Page Audit](https://apify.com/martinvarelaa/seo-page-audit) scores pages and gives a fix for every on-page SEO issue.
- [Sitemap URL Extractor](https://apify.com/martinvarelaa/sitemap-url-extractor) lists every URL in a sitemap.xml file.
- [Wayback Machine Scraper](https://apify.com/martinvarelaa/wayback-machine-snapshots) lists Wayback Machine snapshots and archived pages.

### Changelog

- 0.1 (2026-09-24): category and profile pages, hourly rate, team size, published contacts and project facts. Review text is not returned.

# Changelog

This Actor's version history is a separate document: https://apify.com/martinvarelaa/clutch-agency-scraper/changelog.md

# Actor input Schema

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

Category pages such as https://clutch.co/agencies/digital-marketing, including a location filter already applied on Clutch, or a profile such as https://clutch.co/profile/example.

## `maxCompanies` (type: `integer`):

Stop after this many companies. The trial value is 10 so the first run stays under a minute.

## `includeProfileDetails` (type: `boolean`):

Open each profile for service percentages, industries, client focus, year founded and review scores. Charged as company-profile-details.

## `includePublishedContacts` (type: `boolean`):

Add published emails and phones, plus an email inferred on the company domain. Charged per contact that has an email or a phone. Example: hello@ada.example.

## `includeProjectFacts` (type: `boolean`):

Add budget, category, client company, industry, size, reviewer name and role, and the date from public reviews. The review text is not returned.

## `skipSponsored` (type: `boolean`):

Drop Sponsor and featured cards. Directory cards stay.

## `proxyConfiguration` (type: `object`):

Residential proxy. A deep category from a datacenter IP starts returning Cloudflare pages; the measured 1,000-company run used residential.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://clutch.co/agencies/digital-marketing"
    }
  ],
  "maxCompanies": 10,
  "includeProfileDetails": false,
  "includePublishedContacts": false,
  "includeProjectFacts": false,
  "skipSponsored": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `companies` (type: `string`):

One row per agency.

## `runStats` (type: `string`):

Requests, page states, estimated cost and Diamond margin.

# 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 = {
    "startUrls": [
        {
            "url": "https://clutch.co/agencies/digital-marketing"
        }
    ],
    "maxCompanies": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("martinvarelaa/clutch-agency-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 = {
    "startUrls": [{ "url": "https://clutch.co/agencies/digital-marketing" }],
    "maxCompanies": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("martinvarelaa/clutch-agency-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 '{
  "startUrls": [
    {
      "url": "https://clutch.co/agencies/digital-marketing"
    }
  ],
  "maxCompanies": 10
}' |
apify call martinvarelaa/clutch-agency-scraper --silent --output-dataset

```

## MCP server setup

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