# Clutch.co Company Scraper (+ Emails) (`avoca_code/clutch-company-scraper`) Actor

Scrape companies from any Clutch.co search or category page: name, website, clean domain, rating, reviews, hourly rate, min project size, employees, location, phone and services. Optional profile details and email enrichment.

- **URL**: https://apify.com/avoca_code/clutch-company-scraper.md
- **Developed by:** [Avocado Code](https://apify.com/avoca_code) (community)
- **Stats:** 1 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 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/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 Company Scraper (+ Emails)

Turn any Clutch.co search or category page into a clean list of companies: name, website, **clean domain**, rating, reviews, hourly rate, minimum project size, employees, location, phone and services. Add profile details or find **email addresses** on each company's website in the same run.

### Why this scraper

- **Cheap and fair:** you pay per company, with no expensive start fee.
- **Clean domains:** website links come without Clutch's redirect and tracking parameters, e.g. `simform.com`.
- **Many searches in one run:** paste as many Clutch URLs as you like, with filters already set.
- **Email add-on:** optional crawl of each company website for emails, phones and social profiles. Charged only when emails are found.
- **No duplicates:** companies appearing both as sponsored and organic are merged.

### How to use

1. On clutch.co, open a category (e.g. *Software Developers*, *Digital Marketing Agencies*) and set the filters you need (location, budget, hourly rate, industry).
2. Copy the URL from your browser and paste it into **Clutch search URLs**. Add more URLs if you want.
3. Set **Max companies per search URL** (0 = all pages).
4. Optionally turn on **Add profile details** and/or **Find emails on company websites**.
5. Click **Start** and download the results as Excel, CSV or JSON.

### Output example

```json
{
  "name": "Fingent",
  "domain": "fingent.com",
  "website": "https://www.fingent.com/custom-software-development/",
  "profileUrl": "https://clutch.co/profile/fingent",
  "rating": 4.9,
  "reviewCount": 66,
  "verification": "Premier Verified",
  "minProjectSize": "$25,000+",
  "hourlyRate": "$25 - $49 / hr",
  "employees": "250 - 999",
  "location": "White Plains, NY",
  "address": { "street": "235 Mamaroneck Ave, Suite 301", "city": "White Plains", "region": "NY", "postalCode": "10605", "country": "US" },
  "phone": "9146159170",
  "services": [{ "name": "Custom Software Development", "percent": 50 }, { "name": "AI Development", "percent": 30 }],
  "listingType": "sponsored"
}
```

With **Add profile details**: `tagline`, `yearFounded`, `fullDescription`, `socials` (LinkedIn, Facebook, X, Instagram), `offices`, `certifiedIn`.

With **Find emails**: `primaryEmail`, `emailsList`, `emails` (with category and the page each was found on), `websitePhones`, `websiteSocials`.

### Pricing

| Event | When charged |
|---|---|
| Company | Each company saved |
| Company with emails | Add-on, only when email enrichment finds at least one email |

Proxy traffic is billed by Apify as platform usage. One result page of about 50 companies uses a few MB of residential proxy traffic.

### Proxy

Clutch is protected by Cloudflare and blocks most datacenter IPs. The default **Residential** proxy works best. If a page shows a bot check, the scraper passes it with a real Chrome browser and keeps going.

### Limits

- Clutch shows up to about 50 companies per page; all pages are followed until your limit.
- Email enrichment crawls company websites directly and respects your **Max pages per company website** setting.
- Data is what Clutch shows publicly at the time of the run.

# Actor input Schema

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

One or more Clutch.co search or category pages, with any filters you set on Clutch (location, budget, rate, industry). Example: https://clutch.co/developers or https://clutch.co/agencies/digital-marketing/new-york. Every result page is followed automatically.

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

Stop after this many companies for each search URL. 0 means no limit (all result pages).

## `includeSponsored` (type: `boolean`):

Clutch mixes paid (sponsored) listings into the results. Turn off to keep only the organic ranking.

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

Open each company's Clutch profile for the tagline, year founded, full description, social links, office addresses and certifications. Slower: one extra page per company. Same price.

## `enrichWithEmails` (type: `boolean`):

Crawl each company's own website for email addresses, phone numbers and social profiles. Charged as an extra event only for companies where at least one email is found.

## `includeOffDomainEmails` (type: `boolean`):

With email enrichment on: also keep addresses whose domain differs from the company website (e.g. gmail.com). Off by default for cleaner leads.

## `maxPagesPerWebsite` (type: `integer`):

With email enrichment on: how many pages of each company website to check (home, contact, about...).

## `maxPagesPerSearch` (type: `integer`):

Optional cap on Clutch result pages for each search URL. 0 means no cap (Max companies still applies).

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

How many companies are processed at once (profile pages and website crawls).

## `useBrowserFallback` (type: `boolean`):

Pages are fetched with a fast HTTP client. If Clutch (Cloudflare) asks for a browser check, a real Chrome is used to pass it.

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

Clutch blocks most datacenter IPs. A RESIDENTIAL proxy is recommended.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://clutch.co/developers?related_services=field_pp_sl_mobile_app_dev"
    }
  ],
  "maxItems": 10,
  "includeSponsored": true,
  "includeProfileDetails": false,
  "enrichWithEmails": false,
  "includeOffDomainEmails": false,
  "maxPagesPerWebsite": 10,
  "maxPagesPerSearch": 0,
  "maxConcurrency": 3,
  "useBrowserFallback": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://clutch.co/developers?related_services=field_pp_sl_mobile_app_dev"
        }
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("avoca_code/clutch-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 = {
    "startUrls": [{ "url": "https://clutch.co/developers?related_services=field_pp_sl_mobile_app_dev" }],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("avoca_code/clutch-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 '{
  "startUrls": [
    {
      "url": "https://clutch.co/developers?related_services=field_pp_sl_mobile_app_dev"
    }
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call avoca_code/clutch-company-scraper --silent --output-dataset

```

## MCP server setup

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