# Clutch.co Company Scraper (`scraptivo/clutch-scraper`) Actor

Scrape Clutch.co company listings, profiles, and reviews by directory URL or service + location search. Optional company details and paginated reviews with pay-per-event charging.

- **URL**: https://apify.com/scraptivo/clutch-scraper.md
- **Developed by:** [Scraptivo](https://apify.com/scraptivo) (community)
- **Categories:** Lead generation, Jobs, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 company records

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Company Scraper** collects B2B service companies from [Clutch.co](https://clutch.co) and turns them into structured data for sales prospecting, market research, and vendor due diligence. Provide Clutch directory or profile URLs, or a Service / category search with an optional location, and export names, ratings, review counts, verified contact details, service lines, and full client reviews to JSON, CSV, Excel, or your preferred integration. Use it to build agency shortlists, monitor competitor reputation, and automate recurring lead collection. Pricing starts at **$1.50 per 1,000 companies**, with optional company details and reviews at **$2.00 per 1,000** each.

### What can you automate with Clutch.co Company Scraper?

- **Build targeted agency shortlists** — Search any service (Mobile App Development, Web Design, SEO…) in any city or country, filter by hourly rate, budget, team size, and minimum reviews, and export a ready-to-pitch list.
- **Collect verified contact and profile data** — Extract website, phone, full address, office locations, and social links for every company on your shortlist.
- **Monitor ratings and market position** — Track company ratings, review counts, verification status, and Clutch rankings over time to spot rising competitors.
- **Analyze client feedback at scale** — Fetch paginated reviews with quality, schedule, cost, and willingness-to-refer scores for deeper vendor due diligence.
- **Schedule recurring collection** — Run weekly or daily on the Apify Scheduler, with separate scheduled tasks per service and location.
- **Feed B2B sales pipelines** — Push structured agency data through the Apify API or a webhook into your CRM or outreach workflow.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Lead-generation agencies | Building prospect lists of B2B service providers per service and city, with contact data for outreach. |
| Sales and B2B outreach teams | Enriching CRMs with verified agencies, ratings, and project budgets before contacting them. |
| Market researchers | Mapping the agency landscape in a vertical: who is rated highest, verified, and dominant. |
| Hiring teams and procurement | Reading full review histories, including negative reviews and project budgets, before hiring a vendor. |

### What data can you collect from Clutch.co?

| Data group | Example fields | How it helps |
|---|---|---|
| Company identity | Name, Clutch profile URL, company ID, logo, listing position | Identify and deduplicate records with the stable `companyId`. |
| Reputation signals | Rating, review count, verification status, sponsored status | Qualify companies quickly without opening each profile. |
| Pricing and team | Hourly rate range, minimum project size, employee size, year founded, timezones | Filter by budget and capacity before outreach. |
| Location and contact | Primary location, full address, office locations, website, phone, social links | Reach out directly and enrich CRM records. |
| Services and description | Services with percentage share, service lines, tagline, short and full description | Understand positioning and fit. |
| Client reviews | Rating, date, quote, summary, project size and length, quality/schedule/cost/refer scores, reviewer role | Read what real clients say before making a decision. |

Website, phone, tagline, full description, address, office locations, and social links appear when **Scrape company details** is enabled; the `reviews` array appears when **Scrape company reviews** is enabled. Listing-level data is always returned.

### How to use Clutch.co Company Scraper

1. Open the [Clutch.co Company Scraper](https://apify.com/scraptivo/clutch-scraper) on Apify.
2. Enter Clutch directory or profile URLs, or a **Service / category** such as "Mobile App Development" with an optional **Location**.
3. Choose a limit and optional filters — company details, reviews, sort order, team size, hourly rate, client budget, minimum reviews, or verified-only.
4. Run the Actor — it crawls Clutch and returns structured company records.
5. Export the dataset or connect it to your workflow.

```json
{
    "startUrls": [
        { "url": "https://clutch.co/app-developers/nyc" }
    ],
    "maxItems": 3,
    "scrapeCompanyDetails": true,
    "scrapeReviews": true,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### Example workflow

#### Build a weekly list of highly rated mobile app agencies in New York

1. Schedule a run every Monday with `searchQuery` = "Mobile App Development", `location` = "New York", `minReviews` = "5", and `verifiedOnly` enabled.
2. Keep only companies that match your budget and team size using the `hourlyRate`, `clientBudget`, and `agencySize` filters.
3. Run once with **Scrape company details** and **Scrape company reviews** enabled to enrich the shortlist with contacts and review histories.
4. Send new records to Google Sheets or a CRM through a webhook after each run.
5. Deduplicate user-side against the stable `companyId` field.

### Automate and integrate your results

- **Schedules** — Clutch rankings and review counts change constantly. Run **weekly** for market research and lead generation, or **daily** for close monitoring of shortlisted vendors. Create separate scheduled tasks per service and city (for example "Mobile App Development — New York" and "SEO — London") so each schedule keeps its own dataset.
- **Webhooks** — Enable a webhook on run completion to push fresh company data into your CRM, Google Sheets, or Slack pipeline automatically.
- **Exports and API** — Download results as JSON, CSV, Excel, or HTML from the Apify Console, or call the Actor from the API. One cURL example:

```shell
curl "https://api.apify.com/v2/acts/scraptivo/clutch-scraper/runs?token=YOUR-APIFY-TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchQuery": "Mobile App Development",
    "location": "New York",
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
  }'
```

- **Deduplication** — The Actor is designed for one-off snapshots and appends new results on every run; it does not deduplicate companies across runs. Use `companyId` as the stable key when merging results.

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---:|---|---|---|
| `startUrls` | Array of URLs | No\* | — | Clutch directory or company profile URLs. When provided, URL-based scraping is used and search fields are ignored. |
| `searchQuery` | String | No\* | — | Clutch service / category to search (e.g. "Mobile App Development"). |
| `location` | String | No | — | City, region, or country (e.g. "New York"). Leave empty for any location. |
| `maxItems` | Integer | No | `0` | Maximum number of companies to scrape (`0` = unlimited). |
| `scrapeCompanyDetails` | Boolean | No | `false` | Visit each company profile and extract website, phone, description, and other profile fields. Charged as `company-details`. |
| `scrapeReviews` | Boolean | No | `false` | Fetch all paginated reviews for each company. Charged as `company-reviews`. |
| `sortBy` | String | No | `""` | Directory sort order: Sponsored, Verified, Clutch Rank, Number of Reviews, Review Rating, Company Name (search only). |
| `agencySize` | Array of strings | No | — | Filter by employee count, from Freelancer to 10,000+ (search only). |
| `hourlyRate` | Array of strings | No | — | Filter by average hourly rate, from under $25 to $300+ (search only). |
| `clientBudget` | String | No | `""` | Filter by maximum typical project budget, up to $250,000 (search only). |
| `minReviews` | String | No | `""` | Only include companies with at least this many reviews (search only). |
| `verifiedOnly` | Boolean | No | `false` | Only include Clutch-verified companies (search only). |
| `proxyConfiguration` | Proxy object | No | Apify proxy, RESIDENTIAL | Proxy settings. Residential proxies are recommended. |

\* Provide either `startUrls` **or** `searchQuery` — at least one source is required.

#### Which source takes priority?

When `startUrls` is provided, the Actor scrapes exactly those directory or profile pages and ignores `searchQuery`, `location`, and all filter fields. When searching, the Actor builds the Clutch directory query from `searchQuery` + `location` and applies `sortBy`, `agencySize`, `hourlyRate`, `clientBudget`, `minReviews`, and `verifiedOnly` automatically.

#### Do reviews require company details?

No. `scrapeReviews` and `scrapeCompanyDetails` are independent toggles. You can scrape all reviews without collecting profiles, or vice versa, and each toggle is charged as its own event. Reviews are returned as a `reviews` array nested inside the company record, so you still get one row per company.

### Output example

Each dataset item is one company. With details and reviews enabled, a record looks like this:

```json
{
    "companyId": "68874",
    "name": "Utility",
    "url": "https://clutch.co/profile/utility",
    "logoUrl": "https://img.shgstatic.com/clutch-static-prod/image/scale/50x50/s3fs-public/logos/f9ce0e705d09825f677bdf52037d4c29_83948758567eaeb99c94c2.jpg",
    "rating": 4.8,
    "reviewCount": 26,
    "minProjectSize": "$50,000+",
    "hourlyRate": "$100 - $149 / hr",
    "employees": "50 - 249",
    "location": "New York, NY",
    "verification": "Verified",
    "isVerified": true,
    "isSponsored": true,
    "position": 1,
    "website": "https://utility.agency",
    "phone": "(212) 328-1167",
    "yearFounded": 2013,
    "address": {
        "street": "135 Madison Avenue",
        "city": "New York, United States",
        "region": "NY",
        "postalCode": "10016",
        "country": "US"
    },
    "socialLinks": {
        "linkedin": "https://www.linkedin.com/company/utility-nyc/",
        "facebook": "https://www.facebook.com/utilitynyc/",
        "instagram": "https://www.instagram.com/utilitynyc/"
    },
    "serviceLines": [
        "Mobile App Development",
        "AI Development",
        "Custom Software Development",
        "UX/UI Design",
        "Web Design",
        "Web Development"
    ],
    "reviews": [
        {
            "reviewId": "63429",
            "title": "Mobile App Dev for Sports Content Site",
            "rating": 5.0,
            "date": "Apr 17, 2020",
            "quote": "\"What was most impressive was probably their speed and skills.\"",
            "projectSize": "$10,000 to $49,999",
            "reviewerPosition": "Director of Creative Strategy, Sports Content Company",
            "quality": 5.0,
            "schedule": 5.0,
            "cost": 5.0,
            "willingToRefer": 5.0,
            "isVerified": true,
            "isFeatured": true
        }
    ]
}
```

### How much does it cost to scrape Clutch.co?

The Actor uses pay-per-event pricing with three chargeable events:

- **$1.50 / 1,000 companies** — a `company` event for every company record pushed to the dataset.
- **$2.00 / 1,000 company details** — a `company-details` event per company profile visited when **Scrape company details** is enabled.
- **$2.00 / 1,000 companies with reviews** — a `company-reviews` event per company whose paginated reviews are fetched when **Scrape company reviews** is enabled.

You only pay for what you extract. A listing-only run of 1,000 companies costs **$1.50**; enriching the same companies with details and reviews costs **$5.50** in total per 1,000 companies. Compute units consumed are deducted from your Apify plan, and volume discounts on Apify paid plans reduce the per-1,000 rate (for example **$1.20 per 1,000 companies** at the Gold plan). When your event spending limit is reached, the run stops gracefully — you will see "Spending limit reached" in the run log.

### Reliability and responsible use

- **Proxy requirement** — The Actor defaults to the Apify proxy with the RESIDENTIAL group. Clutch aggressively rate-limits scrapers, and datacenter IPs are typically blocked or return degraded results; residential proxies are recommended.
- **Retries and rate limits** — The Actor includes built-in retry logic and graceful handling of rate limits for consistent results.
- **Conditional fields** — Profile fields (website, phone, description, address, social links) and the `reviews` array appear only when the corresponding toggle is enabled; some fields are nullable on the platform.
- **Public data** — The Actor collects publicly visible company, profile, and review information from Clutch.co.
- **Responsible use** — Only use the data in ways that comply with Clutch.co's terms of service and applicable law.

### Frequently asked questions

#### Can I scrape companies from Clutch.co by service and location?

Yes. Enter any Clutch service in `searchQuery` — for example "Mobile App Development" or "SEO" — with an optional `location` such as "New York" or "London", and the Actor builds the Clutch directory query for you. Leave `location` empty for a global search.

#### Can I schedule the Clutch.co Company Scraper to run automatically?

Yes. Open the **Scheduler** tab in Apify Console and set a recurring schedule — weekly suits market research and lead generation, daily suits close monitoring of shortlisted vendors. Because each run is defined by `searchQuery` + `location`, you can create separate schedules per service and city.

#### What counts as one result?

A company record pushed to the dataset counts as one `company` result ($1.50 per 1,000). If **Scrape company details** is enabled, each company profile visited also counts as a `company-details` event ($2.00 per 1,000), and if **Scrape company reviews** is enabled, each company whose reviews are fetched counts as a `company-reviews` event ($2.00 per 1,000). A listing-only run charges only the company-result event.

#### Why are some fields empty?

Fields such as website, phone, tagline, full description, address, and social links are only collected when **Scrape company details** is enabled, and the `reviews` array is only collected when **Scrape company reviews** is enabled. Clutch itself also leaves some fields unset for certain companies, so a null value usually means the platform has no data for it.

#### How do I avoid duplicate records?

The Actor appends new results to the dataset on every run and does not deduplicate across runs. Use the stable `companyId` field as the key: when merging a fresh run into existing data, keep only companies whose `companyId` is new. Setting `maxItems` caps the size of any single run.

#### Do I need a proxy?

The Actor works out of the box with the default Apify residential proxy. Residential IPs are strongly recommended because Clutch rate-limits scrapers aggressively and datacenter IPs are typically blocked or show degraded results. If a run returns unusually few companies, check that your proxy configuration uses the RESIDENTIAL group.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, sample URL, required fields, and expected volume so we can assess the request.

# Actor input Schema

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

Directory or company profile URLs copied from clutch.co (e.g. https://clutch.co/app-developers/nyc or https://clutch.co/profile/designli). When provided, URLs are used and search fields below are ignored.

## `searchQuery` (type: `string`):

Clutch service to search (e.g. Mobile App Development). Ignored when Clutch URLs are provided.

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

City, region, or country (e.g. New York). Leave empty for any location. Ignored when Clutch URLs are provided.

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

Maximum number of companies to scrape (0 = unlimited)

## `scrapeCompanyDetails` (type: `boolean`):

Visit each company profile and extract website, phone, description, locations, and other profile fields. Charged as company-details.

## `scrapeReviews` (type: `boolean`):

Fetch all paginated reviews for each company. Charged as company-reviews.

## `sortBy` (type: `string`):

Directory sort order. Applied only when using Service / category search (not URLs).

## `agencySize` (type: `array`):

Filter by number of employees. Applied only when using Service / category search.

## `hourlyRate` (type: `array`):

Filter by average hourly rate. Applied only when using Service / category search.

## `clientBudget` (type: `string`):

Maximum typical project budget. Applied only when using Service / category search.

## `minReviews` (type: `string`):

Only include companies with at least this many reviews. Applied only when using Service / category search.

## `verifiedOnly` (type: `boolean`):

Only include Clutch-verified companies. Applied only when using Service / category search.

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

Apify proxy settings. Residential proxies are recommended.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://clutch.co/app-developers/nyc"
    }
  ],
  "searchQuery": "Mobile App Development",
  "location": "New York",
  "maxItems": 10,
  "scrapeCompanyDetails": false,
  "scrapeReviews": false,
  "sortBy": "",
  "clientBudget": "",
  "minReviews": "",
  "verifiedOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset of scraped Clutch companies

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

Record counts and run timestamps

# 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/app-developers/nyc"
        }
    ],
    "searchQuery": "Mobile App Development",
    "location": "New York",
    "maxItems": 10,
    "scrapeCompanyDetails": false,
    "scrapeReviews": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/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 = {
    "startUrls": [{ "url": "https://clutch.co/app-developers/nyc" }],
    "searchQuery": "Mobile App Development",
    "location": "New York",
    "maxItems": 10,
    "scrapeCompanyDetails": False,
    "scrapeReviews": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scraptivo/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 '{
  "startUrls": [
    {
      "url": "https://clutch.co/app-developers/nyc"
    }
  ],
  "searchQuery": "Mobile App Development",
  "location": "New York",
  "maxItems": 10,
  "scrapeCompanyDetails": false,
  "scrapeReviews": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scraptivo/clutch-scraper --silent --output-dataset

```

## MCP server setup

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