# Clutch.co Scraper - Agencies, Ratings & Pricing, No Login (`locaihost/clutch-scraper`) Actor

Clutch scraper, $2 per 1,000 rows. Agencies and service providers from any Clutch list or profile: rating, review count, hourly rate, minimum project size, team size, location, service mix, website, phone. Client reviews without reviewer names. Can return only new companies on a schedule.

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

## Pricing

from $1.10 / 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 - Agencies, Ratings & Pricing, No Login

Get one row per agency or service provider in any Clutch.co list: rating, review count, minimum project size, hourly
rate, team size, location, service mix and website. Turn on full details or client reviews when you need them.
**$2 per 1,000 rows.** No login, cookies or account needed.

### Try it

Paste this into the Input tab (JSON) and press Start:

```json
{
    "categories": ["https://clutch.co/agencies/seo"],
    "maxCompaniesPerCategory": 20,
    "includeDetails": true
}
```

That returns the top 20 SEO agencies on Clutch. Each row has the founding year, phone, street address, full
description, service lines with their share of the work, industries served and Clutch certifications. The run takes
about 20 seconds.

More examples:

```json
{ "categories": ["https://clutch.co/web-developers/new-york"], "maxCompaniesPerCategory": 200 }
```

```json
{ "categories": ["https://clutch.co/us/web-developers", "https://clutch.co/agencies/digital-marketing"], "maxCompaniesPerCategory": 500 }
```

```json
{ "companies": ["https://clutch.co/profile/arcanys"], "includeReviews": true, "maxReviewsPerCompany": 50 }
```

### What you get

**Company rows** (`type: "company"`)

| Field | Example |
|---|---|
| name, profileUrl | Arcanys, https://clutch.co/profile/arcanys |
| websiteUrl, domain | https://www.arcanys.com, arcanys.com |
| rating, reviewCount | 5.0, 33 |
| minProjectSize, minProjectSizeUsd | $100,000+, 100000 |
| hourlyRate, hourlyRateMinUsd, hourlyRateMaxUsd | $25 - $49 / hr, 25, 49 |
| employees, employeesMin, employeesMax | 250 - 999, 250, 999 |
| city, region, country | Cebu City, null, Philippines |
| services | `[{ "name": "Custom Software Development", "percent": 40 }, ...]` |
| badges, isSponsored | Premier Verified, false |
| query, rank, listUrl | the list it came from and its position in that list |

With **Full company details** on, each company row also has foundedYear, phone (the company's own published number),
address, postalCode, countryCode, the full description, industries (with the share of work when shown) and
certifications (Clutch Verified, Clutch Certified for a service).

**Client review rows** (`type: "review"`, with **Client reviews** on)

| Field | Example |
|---|---|
| companyName, title | Arcanys, Custom Software Development for PropTech Company |
| rating, ratingQuality, ratingSchedule, ratingCost, ratingWillingToRefer | 5.0, 4.5, 4.0, 5.0, 5.0 |
| projectSize, projectLength | $200,000 to $999,999, May 2023 - Ongoing |
| services | Custom Software Development, IT Staff Augmentation |
| reviewerRole | Founder |
| clientIndustry, clientSize, clientLocation | Real estate, 1-10 Employees, Sydney, Australia |
| quote, summary, text | the headline quote, the project summary and the full interview |
| reviewType, isVerified, publishedAt | Phone Interview, true, 2024-06-25 |

Every row also has `input` (what you typed that produced it) and `scrapedAt`. Company rows use the same columns as our
Europages, ThomasNet and IndiaMART scrapers, so you can stack them into one supplier table. The dataset has views
for companies, contacts and reviews, and exports to CSV, Excel or JSON.

### Which lists

Any list page on clutch.co works: open it in your browser and paste its address. Some that buyers use:

- `agencies/seo`, `agencies/digital-marketing`, `agencies/social-media-marketing`, `agencies/ppc`
- `web-developers`, `developers`, `app-developers`, `web-designers`
- `it-services`, `it-services/msp`, `bpo`, `accounting`
- places, as Clutch writes them: `web-developers/new-york`, `us/web-developers`, `seo-firms/uk/england/london`,
  `ca/agencies/creative/montreal`. Clutch names its place pages differently per service, so the easy way is to pick
  the service and place on clutch.co and copy the address

Filters you add on Clutch itself (sorting, budget, hourly rate) are dropped from the address: Clutch's robots.txt asks
crawlers not to use them. The plain list is read in Clutch's own order.

### Monitoring

Turn on **Only new since the last run** and schedule the Actor daily or weekly. Each run returns only companies (and
reviews) that earlier runs with the same input did not, so you pay only for new agencies joining a list and new client
reviews. A run with nothing new charges nothing.

### Price

Pay per row: **$2 per 1,000 rows** (companies or reviews) on the Starter plan, $1.50 on Scale, $1.10 on Business. Full
details cost the same per row. Lists or company pages that don't exist and unusable inputs come back as free
`not-found` rows that say what to change. Nothing else is charged on top.

Apify's free plan is capped at 1,000 rows per run. Any paid Apify plan removes the cap.

### Good to know

- We collect only what a logged-out visitor sees. No account, login cookies or sign-in pages.
- Reviewer names are never collected. About each client we keep the job title, industry, company size and location,
  as Clutch shows them. E-mail addresses and phone numbers in review text are replaced with `[contact removed]`.
  Personal-looking e-mail addresses in a company's description are removed too; role mailboxes such as sales@ stay.
- Clutch pages are read in a real browser from US addresses, four pages at a time. Twenty companies with full
  details take about 20 seconds. A list of 1,000 without details takes about two minutes.
- Big requests are shared out across the run's time limit. If time runs short, the run ends successfully with the
  rows so far and says what to narrow.
- Run details (pages read, rows by kind, free rows, timing) are in the `SUMMARY` record of the run's key-value
  store.

### Use it lawfully

You are responsible for how you use the data. Company profiles and reviews are published on Clutch; respect copyright
when republishing review text, follow privacy and marketing law (such as GDPR, CAN-SPAM or PECR) if you contact
companies, and check Clutch's terms for your use.

### Questions

Open an issue on the Issues tab. Feature requests are welcome.

### Did it help?

If this saved you time, a quick rating on the Store helps other people find it. Something not working? Open an issue on the Issues tab and we usually reply within a day.

# Actor input Schema

## `categories` (type: `array`):

Clutch list pages to read. Open a list on clutch.co (choose the service, and the city or country if you want one) and paste its address, like https://clutch.co/agencies/seo, https://clutch.co/web-developers/new-york or https://clutch.co/seo-firms/uk/england/london. You can also type the part after clutch.co/, like agencies/digital-marketing. Filters added on Clutch (sorting, budget, rate) are not used: Clutch asks crawlers not to use them.

## `companies` (type: `array`):

Company profile pages on Clutch, like https://clutch.co/profile/arcanys. Each one returns a full company row, and its client reviews if you turn reviews on.

## `maxCompaniesPerCategory` (type: `integer`):

Companies to take from each list, in Clutch's order. Big lists have thousands.

## `includeDetails` (type: `boolean`):

Open each company's Clutch page for the founding year, phone, street address, full description, every service line with its share, industries served and Clutch certifications. Costs the same per row, takes a little longer (one more page per company).

## `includeReviews` (type: `boolean`):

Also return each company's client reviews: project title, overall and quality, schedule, cost and referral scores, project size and length, services, the project summary and the full review. About each client we keep only the job title, industry, company size and location, never the reviewer's name. Each review is one row.

## `maxReviewsPerCompany` (type: `integer`):

Client reviews per company, in Clutch's order (newest first). Clutch shows 10 per page.

## `onlyNew` (type: `boolean`):

For schedules: skip companies and reviews this same input already returned in an earlier run, so you pay only for what is new. The memory is per input: change the lists or options and it starts fresh.

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

Stop after this many charged rows across all lists and companies. 0 means no limit (your run's maximum charge still applies).

## Actor input object example

```json
{
  "categories": [
    "https://clutch.co/agencies/seo",
    "web-developers/new-york",
    "https://clutch.co/seo-firms/uk/england/london"
  ],
  "companies": [
    "https://clutch.co/profile/arcanys"
  ],
  "maxCompaniesPerCategory": 20,
  "includeDetails": true,
  "includeReviews": false,
  "maxReviewsPerCompany": 10,
  "onlyNew": false,
  "maxResults": 0
}
```

# Actor output Schema

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

One row per company: rating, reviews, minimum project size, hourly rate, team size, location, website, rank in the list.

## `contacts` (type: `string`):

Website, published phone, role mailbox and address for each company (with full details on).

## `reviews` (type: `string`):

One row per client review: project, scores, budget, client industry, size and job title (no names), quote, date.

## `full` (type: `string`):

Every field of every row, including free not-found rows.

## `summary` (type: `string`):

Counts, free rows by reason, anything that failed, access stats and cost.

# 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 = {
    "categories": [
        "https://clutch.co/agencies/seo"
    ],
    "maxCompaniesPerCategory": 20,
    "includeDetails": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("locaihost/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 = {
    "categories": ["https://clutch.co/agencies/seo"],
    "maxCompaniesPerCategory": 20,
    "includeDetails": True,
}

# Run the Actor and wait for it to finish
run = client.actor("locaihost/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 '{
  "categories": [
    "https://clutch.co/agencies/seo"
  ],
  "maxCompaniesPerCategory": 20,
  "includeDetails": true
}' |
apify call locaihost/clutch-scraper --silent --output-dataset

```

## MCP server setup

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