# Ultimate Clutch.co Scraper: B2B Agency Leads, Reviews & Emails (`fallarmony/clutch-scraper`) Actor

Scrape B2B agencies from Clutch.co by category, keyword or URL: names, websites, ratings, hourly rates, service focus, social profiles, client reviews with project budgets, and contact emails. Pay per result. Export CSV, JSON, Excel or API.

- **URL**: https://apify.com/fallarmony/clutch-scraper.md
- **Developed by:** [Jonathan Matiano](https://apify.com/fallarmony) (community)
- **Categories:** Lead generation, Developer tools, Automation
- **Stats:** 3 total users, 0 monthly users, 73.3% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.50 / 1,000 company scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 — B2B Agency Leads, Reviews & Emails

Turn any Clutch.co directory or search into a clean list of B2B agencies you can actually work with. You get the company, its website, phone, socials, service focus and Clutch scores. Then, if you want, you go deeper: full profile data, client reviews with real project budgets, and a public contact email pulled from the agency's own site. One Actor takes you from a directory page to a usable lead.

**$1.50 per 1,000 companies. No subscription. No start fee.** Reviews and emails are optional add-ons, and you only pay for emails that are actually found. Export to CSV, JSON, Excel, or pull straight from the API.

### What you get in one run

- All-in-one agency data: companies, websites, phones, socials, service focus, profiles, reviews and public emails, without stitching three tools together.
- Search any niche or location, from `shopify` to `seo agencies london`, without knowing Clutch's category slugs.
- Profile enrichment included in the base company price. More data per company, same rate.
- Built for Cloudflare-protected pages, with automatic recovery so a long run does not come back empty.
- No-match protection: if your keyword has no real match on Clutch, the run stops instead of charging you for unrelated companies.
- Optional client reviews with project cost and timeline, capped at 5 per company by default so costs stay predictable.
- Pay only for emails actually found.

### Why use this Actor

Most people end up gluing a directory scraper, a profile scraper and an email tool together, then reconcile the outputs by hand. This does the whole path in one place: find agencies, understand them, turn them into leads.

| This Actor | Common workflow |
|---|---|
| One Actor for companies, profiles, reviews and contacts | Separate tools, manual joins |
| Pay per result, no start fee | Monthly subscription or mixed pricing |
| Keyword and location discovery | Manual directory hunting for the right slug |
| Review caps you control | Uncontrolled review volume and cost |
| Recovery and resume built in | A failed run means starting over |

This is a practical API-style option for bulk Clutch directory extraction and enrichment: you send an input, you get structured JSON back.

### Pricing

| Event | Price |
|---|---:|
| Companies | $1.50 / 1,000 |
| Reviews | $1.00 / 1,000 |
| Emails found | $3.00 / 1,000 |

- No start fee, no monthly subscription.
- Profile enrichment is included in the base company price. There is no separate profile fee.
- Reviews are charged per review returned. The default cap is 5 per company (`maxReviewsPerCompany`), and `0` means all available.
- Emails are charged only when one is found.

Quick math:

- 100 companies cost $0.15.
- 1,000 companies cost $1.50.

If you turn on reviews and emails, the final cost depends on how many are actually found. A fully enriched 1,000-company run usually lands somewhere around $7 to $8, but that number moves with review counts and email hit rate, so treat it as a ballpark, not a fixed price.

### Quick start

1. Click **Try for free** or **Run**.
2. Keep the default category, or type a **Search keyword** like `shopify`. Set **Max companies** for a small first test.
3. Press **Start**, then download the results as CSV, JSON or Excel.

No cookies, no login, no proxy setup.

### What you get

#### Base company record ($1.50 / 1,000)

Every company comes with:

- `name`, `website`, `profileUrl`, `logo`
- `rating`, `reviewCount`, `abilityToDeliverScore` (Clutch's own 0 to 40 score)
- `hourlyRate`, `minProjectSize`, `employees`
- `location`, `address`, `phone`
- `serviceFocus` with percentages
- `verificationLevel` (`premier`, `basic` or null) and `sponsored`, so you can tell paid placement from organic ranking
- `summary`

If a listing does not expose a website, the Actor rescues it from the profile page, at no extra event cost.

#### Profile enrichment (included, slower)

Turn on **Enrich from profile page** to add:

- `socialLinks` (LinkedIn, Facebook, X/Twitter, Instagram, and more)
- `foundedYear`, `tagline`, full `description`
- `industriesFocus`, `clientSizeFocus`, `focusBreakdowns` (CMS, languages, platforms)
- `languages`
- `locations`: all offices, with per-office phone and headcount where Clutch shows them
- `verification`: legal entity name, formation date, status and credit-risk assessment where exposed
- `credentials` and `certifiedIn`: Clutch Certified badges with dates

Same base price per company. It just makes more requests, so the run takes longer.

#### Optional client reviews ($1.00 / 1,000)

Turn on **Scrape client reviews** to add a `reviews[]` array per company:

- `title`, `author`, `date`, full `body`
- `rating`
- `projectCost` and `projectTimeline`, the real budget and duration of the engagement
- `reviewerPosition` and `reviewerVerified`

Capped at 5 reviews per company by default. Set `maxReviewsPerCompany` to `0` for all of them.

#### Optional email enrichment ($3.00 / 1,000 found)

Turn on **Find contact email**. The Actor visits the agency's own website and looks for a public contact email, preferring addresses like `info@`, `contact@` or `sales@`. Emails do not come from Clutch. You are charged only when one is found, so a company with no public email costs you nothing extra.

### Search any niche or location

You do not need to memorize Clutch's category slugs. Three ways to target what you want:

**Keyword search.** Type anything in **Search keyword**: `shopify`, `fintech`, `react native`, `web developers india`, `seo agencies london`. The Actor runs the Clutch search, finds the directories that genuinely match, and scrapes those. Put the place in the keyword and it picks the regional directory for you.

**Category.** Pick one of the built-in Clutch directories from the dropdown (Web Developers, SEO, AI Developers, Cybersecurity, Video Production, and more).

**Start URLs.** Point at exact Clutch listing URLs. To filter by location, append it to the category path: `https://clutch.co/web-developers/india`, `https://clutch.co/web-developers/california`, `https://clutch.co/web-developers/london`. The `/uk/`, `/us/`, `/ca/` country prefixes also work for major markets, but not every country (use `/web-developers/india`, not `/in/web-developers`).

About no-match protection: Clutch matches search terms loosely, by token, so a keyword with no real results can still surface unrelated directories. The Actor checks relevance before scraping. No real match? The run stops with a clear message and charges nothing, instead of returning a page of companies that have nothing to do with your search. If a Start URL does not exist on Clutch (404), the run tells you and charges nothing.

### Input options

| Option | What it does |
|---|---|
| **Category** | One of the verified Clutch directories |
| **Search keyword** | Search Clutch by any keyword instead of a category |
| **Start URLs** | Target exact Clutch listing URLs (regions, niches) |
| **Max companies** | Cap the run size |
| **Enrich from profile page** | Adds socials, industries, languages, offices, verification. Required for reviews and email |
| **Scrape client reviews** | Adds full reviews with project budgets |
| **Max reviews per company** | Cap reviews charged per company (default 5, `0` = all) |
| **Find contact email** | Checks the agency's own site for a public email |
| **Proxy** | Automatic datacenter works out of the box. Custom proxies supported |

#### Sample input

```json
{
  "searchKeyword": "shopify",
  "maxItems": 100,
  "enrichProfiles": true,
  "scrapeReviews": true,
  "maxReviewsPerCompany": 5,
  "enrichEmail": true
}
````

#### Sample output

```json
{
  "name": "Lounge Lizard",
  "website": "https://www.loungelizard.com",
  "profileUrl": "https://clutch.co/profile/lounge-lizard",
  "rating": 4.8,
  "reviewCount": 43,
  "hourlyRate": "$25 - $49 / hr",
  "minProjectSize": "$25,000+",
  "employees": "50 - 249",
  "location": "New York, NY",
  "phone": "1-888-444-0110",
  "abilityToDeliverScore": 38,
  "verificationLevel": "basic",
  "sponsored": true,
  "serviceFocus": [
    { "service": "Web Development", "percent": 45, "certified": true },
    { "service": "Web Design", "percent": 45, "certified": true }
  ],
  "socialLinks": { "linkedin": "https://www.linkedin.com/company/lounge-lizard" },
  "foundedYear": 1998,
  "email": "info@loungelizard.com",
  "reviews": [
    {
      "title": "Website Development for Insurance Provider",
      "author": "VP of Marketing",
      "rating": 5,
      "projectCost": "$10,000 to $49,999",
      "projectTimeline": "Feb. - June 2022",
      "reviewerVerified": true
    }
  ]
}
```

### Use cases

**Lead generation.** Build a CSV of agencies with websites, phones, socials and public emails, filtered by service and region, and drop it into your CRM.

**Agency vetting and shortlists.** Compare candidates by verified reviews, real project budgets, hourly rates and Clutch's ability-to-deliver score.

**Market research.** Track ratings, pricing and service focus across a whole category. The `sponsored` flag separates paid placement from organic ranking.

**Competitive intelligence.** Watch how firms in your space position themselves, what they charge, and what clients actually say about their projects.

**Data enrichment.** Feed an existing company list with firmographics: size, founding year, offices, industries served.

### Reliability

Clutch sits behind a Cloudflare Managed Challenge, which is where a lot of scrapers quietly return nothing. This one is built around that.

- Cloudflare-aware design that solves the challenge before scraping starts.
- Automatic retries with a fresh IP if one gets flagged.
- Mid-run recovery: if the session is revoked partway through, the Actor reopens on a new IP and continues.
- Checkpointing and resume across platform migrations, so a restart does not lose progress.
- Duplicate-safe continuation: companies already delivered are not scraped or charged twice.
- Automatic datacenter proxy out of the box, with support for your own custom proxies.

The goal is simple: a temporary Cloudflare hiccup should not turn a long run into an empty dataset.

### FAQ

**How much does 1,000 companies cost?**
$1.50, with no start fee and no subscription. 100 companies cost $0.15.

**Can I filter by location?**
Yes. Add the place to your keyword (`web developers india`), or use a Start URL with the location in the path, like `https://clutch.co/web-developers/london`.

**What happens if my keyword has no real results?**
The run stops with a clear message and charges nothing. You never pay for unrelated filler.

**Where do emails come from?**
Not from Clutch. The Actor visits each agency's own website and extracts a public contact email where one exists. You are charged only when an email is found.

**How are reviews charged?**
Per review returned, at $1.00 / 1,000. The default cap is 5 per company, and `0` means all available.

**What does profile enrichment add?**
Socials, founding year, tagline, full description, industries and client-size focus, languages, offices, verification details and credentials. It is included in the base company price and makes the run slower.

**Do I need cookies or a login?**
No.

**Do I need my own proxy?**
No. The automatic datacenter proxy works out of the box. You can paste your own custom proxies if you prefer.

**What happens if Cloudflare interrupts a run?**
The Actor tries to recover on a new IP and continue from where it left off. If it cannot finish, it keeps and reports the companies already delivered instead of failing the whole run, and you can re-run to complete.

**Does it scrape portfolios?**
No. Clutch loads portfolios through a separate lazy request that does not come through reliably on the static page. Everything else on the profile is included.

**Are emails guaranteed?**
No. Many agencies do not publish a public email. Email enrichment is best-effort, which is exactly why you are only charged when one is found.

### Notes and limits

- Data is collected from public-facing Clutch pages and public agency websites.
- Email enrichment is best-effort and depends on what each agency publishes.
- Sponsored listings appear first on Clutch. The `sponsored` flag lets you separate paid placement from organic ranking.
- You are responsible for complying with applicable laws and platform terms. Outreach to the contacts you collect may fall under GDPR, CAN-SPAM or similar rules, so check what applies to your use case.

***

*Missing a field you need? Open an issue. This Actor is actively maintained.*

# Actor input Schema

## `searchCategory` (type: `string`):

Clutch directory category to scrape (the part after clutch.co/). Ignored if 'Start URLs' is provided. Example: web-developers, seo-agencies, digital-marketing.

## `searchKeyword` (type: `string`):

Optional. Search Clutch.co by any keyword (e.g. 'shopify', 'react', 'fintech') instead of picking a category. Overrides 'Category'; ignored if 'Start URLs' is set.

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

Optional. Specific Clutch category/listing URLs to scrape. Overrides 'Category' and 'Search keyword'. To filter by location, append it to the category path: https://clutch.co/web-developers/california, https://clutch.co/web-developers/india, https://clutch.co/web-developers/london (the /uk/ /us/ /ca/ country prefixes also work). Tip: a keyword search like 'web developers india' finds the right directory automatically.

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

Maximum number of companies to scrape. Keep low for a first test run.

## `enrichProfiles` (type: `boolean`):

Visit each company's profile page to add website, full address, founding year and full phone (extra requests, slower). Enables the 'Reviews' and 'Email' options below.

## `fastMode` (type: `boolean`):

Clutch only shows the website button on the first pages of each directory; deeper listings don't include it. By default the Actor visits those companies' profiles to fill the website in (full coverage, but much slower on large runs). Turn Fast mode ON to skip that: the run stays fast, but only companies from the first pages will have a website (deeper rows come back with an empty website). Great for smaller runs or when you don't need the website. Ignored when 'Enrich from profile page' is ON (profiles are visited anyway).

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

Include client reviews from each profile (requires 'Enrich from profile page'). Charged per review.

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

Cap the number of reviews saved (and charged) per company, so costs stay predictable. Set 0 to get all available reviews.

## `enrichEmail` (type: `boolean`):

Visit the agency's own website to find a public contact email (requires 'Enrich from profile page'). Charged per email found.

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

Proxy used for all requests. Leave on Automatic (datacenter) — the Actor solves Cloudflare with datacenter IPs plus automatic retries. Residential groups are not supported (and not needed); if you prefer your own proxies, paste them as Custom proxies.

## Actor input object example

```json
{
  "searchCategory": "web-developers",
  "startUrls": [],
  "maxItems": 20,
  "enrichProfiles": false,
  "fastMode": false,
  "scrapeReviews": false,
  "maxReviewsPerCompany": 5,
  "enrichEmail": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "searchKeyword": "",
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fallarmony/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 = {
    "searchKeyword": "",
    "startUrls": [],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("fallarmony/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 '{
  "searchKeyword": "",
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call fallarmony/clutch-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ultimate Clutch.co Scraper: B2B Agency Leads, Reviews & Emails",
        "description": "Scrape B2B agencies from Clutch.co by category, keyword or URL: names, websites, ratings, hourly rates, service focus, social profiles, client reviews with project budgets, and contact emails. Pay per result. Export CSV, JSON, Excel or API.",
        "version": "0.2",
        "x-build-id": "KocUp1MFPb7Hitgwc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fallarmony~clutch-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fallarmony-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/fallarmony~clutch-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fallarmony-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/fallarmony~clutch-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fallarmony-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": {
                    "searchCategory": {
                        "title": "Category",
                        "enum": [
                            "web-developers",
                            "seo-firms",
                            "agencies/digital-marketing",
                            "app-developers",
                            "developers",
                            "web-designers",
                            "it-services",
                            "agencies/ppc",
                            "developers/ecommerce",
                            "agencies/branding",
                            "developers/artificial-intelligence",
                            "it-services/cybersecurity",
                            "agencies/social-media-marketing",
                            "agencies/content-marketing",
                            "agencies/video-production",
                            "developers/wordpress",
                            "developers/shopify",
                            "agencies/design",
                            "agencies/graphic-designers",
                            "pr-firms",
                            "agencies/email",
                            "agencies/creative"
                        ],
                        "type": "string",
                        "description": "Clutch directory category to scrape (the part after clutch.co/). Ignored if 'Start URLs' is provided. Example: web-developers, seo-agencies, digital-marketing.",
                        "default": "web-developers"
                    },
                    "searchKeyword": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "Optional. Search Clutch.co by any keyword (e.g. 'shopify', 'react', 'fintech') instead of picking a category. Overrides 'Category'; ignored if 'Start URLs' is set."
                    },
                    "startUrls": {
                        "title": "Start URLs (advanced)",
                        "type": "array",
                        "description": "Optional. Specific Clutch category/listing URLs to scrape. Overrides 'Category' and 'Search keyword'. To filter by location, append it to the category path: https://clutch.co/web-developers/california, https://clutch.co/web-developers/india, https://clutch.co/web-developers/london (the /uk/ /us/ /ca/ country prefixes also work). Tip: a keyword search like 'web developers india' finds the right directory automatically.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max companies",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of companies to scrape. Keep low for a first test run.",
                        "default": 20
                    },
                    "enrichProfiles": {
                        "title": "Enrich from profile page",
                        "type": "boolean",
                        "description": "Visit each company's profile page to add website, full address, founding year and full phone (extra requests, slower). Enables the 'Reviews' and 'Email' options below.",
                        "default": false
                    },
                    "fastMode": {
                        "title": "Fast mode (list only, skip website lookup)",
                        "type": "boolean",
                        "description": "Clutch only shows the website button on the first pages of each directory; deeper listings don't include it. By default the Actor visits those companies' profiles to fill the website in (full coverage, but much slower on large runs). Turn Fast mode ON to skip that: the run stays fast, but only companies from the first pages will have a website (deeper rows come back with an empty website). Great for smaller runs or when you don't need the website. Ignored when 'Enrich from profile page' is ON (profiles are visited anyway).",
                        "default": false
                    },
                    "scrapeReviews": {
                        "title": "Scrape client reviews",
                        "type": "boolean",
                        "description": "Include client reviews from each profile (requires 'Enrich from profile page'). Charged per review.",
                        "default": false
                    },
                    "maxReviewsPerCompany": {
                        "title": "Max reviews per company",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Cap the number of reviews saved (and charged) per company, so costs stay predictable. Set 0 to get all available reviews.",
                        "default": 5
                    },
                    "enrichEmail": {
                        "title": "Find contact email",
                        "type": "boolean",
                        "description": "Visit the agency's own website to find a public contact email (requires 'Enrich from profile page'). Charged per email found.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used for all requests. Leave on Automatic (datacenter) — the Actor solves Cloudflare with datacenter IPs plus automatic retries. Residential groups are not supported (and not needed); if you prefer your own proxies, paste them as Custom proxies.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
