# Clutch Emails Scraper ✉︎ (`morkerr/clutch-emails-scraper`) Actor

Extract company emails, names, profile URLs, website URLs, phone numbers from Clutch.co directory pages. Lightweight B2B lead generation with category dropdown, pagination, min rating filter, and optional email scraping from company websites.

- **URL**: https://apify.com/morkerr/clutch-emails-scraper.md
- **Developed by:** [morkerr](https://apify.com/morkerr) (community)
- **Categories:** Lead generation, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 88.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results with datacenter proxies

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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 Emails Scraper ✉︎ — Extract Company Emails, Names & Phone Numbers from Clutch.co for B2B Lead Generation

Extract verified B2B company listings from Clutch.co directory pages at scale. Collect company names, profile URLs, website URLs, phone numbers, street addresses, and optional email addresses from company websites — all from the listing cards without the cost and overhead of visiting individual profile pages.

### Features

- **80+ directory categories** across Advertising & Marketing, Development, Design & Production, IT Services, and Business Services
- **9 data fields per listing** — name, profile URL, website, phone, street address, emails, category, category URL, and current page URL
- **Location filtering** by city, region, or country via on-page dropdown interaction
- **Unlimited pagination** — scrape all pages or set a maximum per category
- **Minimum rating filter** — only keep listings above a target rating threshold
- **Featured/excluded toggle** — include or skip promoted/sponsored results
- **Multi-category batch scraping** — select any combination of categories in one run
- **Custom URL support** — paste any Clutch.co directory URL not in the preset list
- **Optional email discovery** — visit each company's website to extract contact emails (disabled by default)
- **Proxy integration** — Apify proxy recommended to avoid rate limiting and Cloudflare challenges
- **Automatic Cloudflare resolution** — retries with proxy rotation on challenge pages
- **CSV/JSON/XML export** via Apify dataset

### How to Use

#### Quick Start

1. Select one or more **categories** from the dropdown (or enter custom URLs in the text area)
2. Optionally enter a **location** to filter results (e.g. `London, England`)
3. Set **Max Pages per Category** (default 3; set to `0` for unlimited)
4. Click **Start**

#### Input Reference

| Field | Type | Description |
|---|---|---|
| **Pick Categories** | Multi-select dropdown | Choose from 80+ Clutch.co directory categories organized by service group |
| **Custom URLs** | Textarea (one per line) | Additional directory URLs not in the preset list, e.g. `https://clutch.co/web-developers` |
| **Location Filter** | Free text | Filter by city or region. Single: `London, England`. Multiple: `[London] [New York]` |
| **Max Pages per Category** | Integer (0–5000) | How many pagination pages to scrape. `0` = no limit (scrapes until no more pages exist) |
| **Minimum Rating** | Decimal (0–5) | Only keep listings with at least this star rating. `0` = include all |
| **Exclude Featured** | Boolean | Skip promoted/sponsored listings at the top of each results page |
| **Scrape Emails** | Boolean | When enabled, visits each company's website to extract email addresses. Adds significant runtime |
| **Page Timeout** | Integer (ms) | Maximum wait time per page load before retrying |
| **Proxy Tier** | Select | Standard (datacenter, $2/1000) or Premium (residential, $5/1000) |
| **Proxy Configuration** | Apify proxy object | Proxy with optional country selection for IP rotation and Cloudflare bypass |

#### Location Filter Details

The location filter interacts with Clutch.co's autocomplete dropdown. Enter a city or region, wait for the suggestion to appear, and the scraper selects the matching item. The page URL updates to reflect the location filter (e.g. `/uk/england/london`).

**Examples:**
- `London, England` — single city filter
- `New York, United States` — single city with country
- `[London, England] [New York, United States]` — scrape the same category twice, once per location

> **Note:** Location results vary by category. The filter only shows locations that have matching listings. If a dropdown item does not appear within the retry window, the category is skipped.

### Category Coverage

The actor supports 80+ directory categories across five service groups:

| Group | Example Categories |
|---|---|
| **Advertising & Marketing** | SEO, PPC, Social Media Marketing, Content Marketing, Branding, PR, Video Production, Email Marketing, Digital Strategy, Conversion Optimization, Media Buying |
| **Development** | Web Developers, Mobile App Development (iOS, Android), AI/ML, Blockchain, eCommerce, Ruby on Rails, WordPress, Drupal, Magento, .NET, PHP, IoT, AR/VR, Software Testing |
| **Design & Production** | Web Design, UX/UI, Graphic Design, Logo Design, Product Design, Packaging Design, Print Design, Interior Design |
| **IT Services** | Cybersecurity, Cloud Consulting, BI & Big Data Analytics, Staff Augmentation, Managed Service Providers (MSP) |
| **Business Services** | Call Centers, BPO, HR & Recruiting, Accounting & Payroll, Translation, Transcription, Real Estate, Legal, Logistics & Supply Chain |

### Output Schema

Each dataset record represents one company listing from a Clutch.co directory page.

| Field | Type | Description |
|---|---|---|
| `category` | string | Human-readable category name (e.g. `Full Service Digital (Advertising & Marketing)`) |
| `categoryUrl` | string | Clutch.co directory category URL this listing was scraped from |
| `currentPageUrl` | string | Exact page URL where the listing was found (includes location filter and pagination) |
| `emails` | string | Email addresses extracted from the company's website (only when email scraping is enabled) |
| `name` | string | Company name |
| `phone` | string | Publicly listed phone number |
| `profileUrl` | string | Full Clutch.co profile URL |
| `streetAddress` | string | Street address from listing card's structured data |
| `website` | string | Company website URL (redirects resolved, UTM parameters stripped) |

### Technical Details

#### Pagination

The scraper uses a two-tier content loading strategy for paginated results:

1. **Browser fetch (fast path)** — uses the page's own `fetch()` API to request the next page's HTML. If the response contains listing cards, it sets the content directly via `page.setContent()`.
2. **Full navigation (fallback)** — if the fetch response does not contain valid listing HTML, falls back to `page.goto()` with `waitForSelector` to ensure cards are rendered.

This minimizes page transitions and speeds up multi-page scraping.

#### Location Filter

The location feature simulates human interaction with Clutch.co's autocomplete input. The scraper:

1. Locates the location input field using multiple selectors
2. Types the query character by character with realistic delays
3. Polls for the dropdown to appear and match against the query text
4. Clicks the matching item using a trusted click event
5. Waits for the page URL to reflect the location change
6. Validates that listing cards load in the filtered view

If the dropdown does not appear after multiple retries with full page reloads, the category is skipped.

#### Email Scraping

When enabled, the actor visits each company's website (from the `website` field) and extracts email addresses using:

- `mailto:` links on the page
- Regex pattern matching for email addresses in the page text and HTML
- Deduplication and filtering of common false positives (`noreply@`, `example.com`, etc.)

Email scraping is processed concurrently (5 sites at a time) and is disabled by default due to the significant runtime it adds.

#### Proxy & Cloudflare Handling

A working proxy is the most important factor for reliable scraping at scale. Without one, Clutch.co will quickly rate-limit or Cloudflare-challenge the scraper.

##### Cloudflare Auto-Recovery

When a page load returns a Cloudflare challenge, the scraper handles it automatically:

1. Waits up to 5s for Cloudflare to resolve itself (JS challenge)
2. If unresolved, throws a `CLOUDFLARE_BLOCKED` signal
3. The outer loop catches the signal, **closes the browser**, requests a **fresh proxy URL** from the Apify proxy, and relaunches with the new IP
4. Retries up to 3 times with different IPs before giving up on that category batch

This means Cloudflare blocks are handled transparently — you do not need to configure anything extra.

##### Proxy Tiers & Pricing

The actor offers two proxy tiers with different pricing:

| Tier | Proxy Type | Pricing | Best for |
|---|---|---|---|
| **Standard** | Datacenter proxies | $2 per 1,000 results | General scraping with auto-selected proxy pools |
| **Premium** | Residential proxies | $5 per 1,000 results | Broader country coverage, harder-to-detect traffic |

Select the tier using the **Proxy Tier** dropdown. The proxy groups are configured automatically — `RESIDENTIAL` for Premium, auto-select for Standard. Country filtering is available in the **Proxy Configuration** editor below the tier selector.

> Standard pricing ($2/1000) is charged automatically per result. Premium pricing adds a $3/1000 surcharge on top of the base $2/1000 rate via the `premium-result` event.

##### Proxy Configuration in the Apify UI

The **Proxy Configuration** input field renders as Apify's built-in proxy editor where you can:

- Select a **Proxy country** from the dropdown to target a specific region
- Toggle **"Use Apify Proxy"** on/off
- Enter custom **Proxy URLs** for external proxy providers

Proxy groups are set automatically based on your chosen tier. You do not need to configure them manually.

**Default configuration** (from `.actor/input_schema.json`):
```json
{
  "useApifyProxy": true,
  "apifyProxyGroups": []
}
````

##### Geographic Proxy Targeting

Clutch.co serves **different listings and rankings** depending on where the request appears to originate from. A UK agency directory page viewed from a US IP may show different results than the same page viewed from a UK IP. To get complete and accurate results:

> **Rule of thumb:** match your proxy country to the region your target market is in. Use **Premium** tier for Residential proxies if you need broader country coverage.

| If scraping agencies in... | Select country in proxy editor |
|---|---|
| United States | `United States` |
| United Kingdom | `United Kingdom` |
| Germany | `Germany` |
| France | `France` |
| Australia | `Australia` |
| Canada | `Canada` |
| India | `India` |
| Brazil | `Brazil` |
| Japan | `Japan` |
| Multiple / global | Leave country unset (auto) |

**How to select a proxy country:**

1. Choose your **Proxy Tier** (Standard or Premium)
2. In the **Proxy Configuration** field, click to expand
3. Under **Proxy country**, select the desired country from the dropdown
4. Country availability depends on your proxy tier — Premium (Residential) has broader coverage

> **Important:** The **Location Filter** (`London, England`) and the **proxy country** serve different purposes. The Location Filter tells Clutch.co to filter listings whose *profile metadata* says `London, England`. The proxy country determines what Clutch.co's server **shows you in the first place** — some listings may be hidden or demoted when viewed from a non-local IP. Always set both to the same target region for the best coverage.

#### Rate Limits & Timeouts

- Each page load has a configurable timeout (default 60s)
- Email scraping uses a 25s per-site timeout
- Location filter waits up to 20 seconds for URL change after selection
- Pagination retries once with a full reload if cards do not appear

### Use Cases

- **Lead generation** — build targeted prospect lists filtered by category, location, and minimum rating
- **Market research** — analyze the competitive landscape across service verticals and geographies
- **Sales intelligence** — enrich CRM data with company size, budget ranges, services, and contact information
- **Agency discovery** — find agencies, consultancies, and service providers by expertise and location
- **Data enrichment** — supplement existing datasets with Clutch.co verification, ratings, and review counts

# Actor input Schema

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

Select one or more categories to scrape.

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

Filter results by location. Use bracket notation for multiple locations.

Single location:
London, England
New York, United States

Multiple locations (same category):
\[London, England] \[New York, United States] \[Chicago]

Leave empty for all locations.

## `categoryUrls` (type: `string`):

Additional Clutch.co directory URLs (one per line). Useful if the category you need isn't listed in the dropdown above. Location filtering is applied automatically when a location is set above.
Examples:
https://clutch.co/web-developers
https://clutch.co/developers/artificial-intelligence

## `maxPagesPerCategory` (type: `integer`):

Number of pagination pages to scrape per category (each page shows ~50 listings). Set to 0 for unlimited — scrapes all available pages until no more exist.

## `minRating` (type: `number`):

Only include companies with at least this star rating (e.g. 4.0, 3.5). Set to 0 to include all.

## `excludeFeatured` (type: `boolean`):

Skip promoted/sponsored listings at the top of each page.

## `scrapeEmails` (type: `boolean`):

When enabled, visits each company's website to extract email addresses. This significantly increases run time (several seconds per website).

## `pageTimeout` (type: `integer`):

Maximum time to wait for each directory page to fully load.

## `proxyTier` (type: `string`):

Standard uses datacenter proxies at $2/1000 results. Premium uses residential proxies at $5/1000 with broader country coverage.

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

Proxy country selection and advanced settings. Proxy groups are auto-set based on the tier selected above.

## Actor input object example

```json
{
  "categories": [
    "https://clutch.co/agencies/digital"
  ],
  "location": "",
  "categoryUrls": "",
  "maxPagesPerCategory": 3,
  "minRating": 0,
  "excludeFeatured": false,
  "scrapeEmails": false,
  "pageTimeout": 60000,
  "proxyTier": "standard",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}
```

# Actor output Schema

## `category` (type: `string`):

Human-readable name of the Clutch.co directory category (e.g. 'Full Service Digital (Advertising & Marketing)').

## `categoryUrl` (type: `string`):

The Clutch.co directory category URL this listing was scraped from.

## `currentPageUrl` (type: `string`):

The exact URL of the page where this listing was found, including any pagination parameters.

## `emails` (type: `string`):

Email addresses found on the company's website (only populated when email scraping is enabled).

## `name` (type: `string`):

Name of the company listed on Clutch.co.

## `phone` (type: `string`):

Publicly listed phone number.

## `profileUrl` (type: `string`):

Direct URL to the company's Clutch.co profile page.

## `streetAddress` (type: `string`):

Street address from the listing card's structured data.

## `website` (type: `string`):

Company's website URL with UTM params stripped.

# 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 = {
    "location": "",
    "categoryUrls": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("morkerr/clutch-emails-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 = {
    "location": "",
    "categoryUrls": "",
}

# Run the Actor and wait for it to finish
run = client.actor("morkerr/clutch-emails-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 '{
  "location": "",
  "categoryUrls": ""
}' |
apify call morkerr/clutch-emails-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Clutch Emails Scraper ✉︎",
        "description": "Extract company emails, names, profile URLs, website URLs, phone numbers from Clutch.co directory pages. Lightweight B2B lead generation with category dropdown, pagination, min rating filter, and optional email scraping from company websites.",
        "version": "1.3",
        "x-build-id": "HE3DPXeb8YbHfgeWJ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/morkerr~clutch-emails-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-morkerr-clutch-emails-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/morkerr~clutch-emails-scraper/runs": {
            "post": {
                "operationId": "runs-sync-morkerr-clutch-emails-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/morkerr~clutch-emails-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-morkerr-clutch-emails-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": {
                    "categories": {
                        "title": "Pick Categories",
                        "type": "array",
                        "description": "Select one or more categories to scrape.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "https://clutch.co/agencies",
                                "https://clutch.co/agencies/digital",
                                "https://clutch.co/agencies/digital-strategy",
                                "https://clutch.co/agencies/digital-marketing",
                                "https://clutch.co/agencies/social-media-marketing",
                                "https://clutch.co/agencies/content-marketing",
                                "https://clutch.co/agencies/email",
                                "https://clutch.co/agencies/inbound-marketing",
                                "https://clutch.co/agencies/direct-marketing",
                                "https://clutch.co/agencies/app-marketing",
                                "https://clutch.co/agencies/event",
                                "https://clutch.co/agencies/experiential",
                                "https://clutch.co/agencies/creative",
                                "https://clutch.co/pr-firms",
                                "https://clutch.co/agencies/video-production",
                                "https://clutch.co/agencies/branding",
                                "https://clutch.co/agencies/naming",
                                "https://clutch.co/agencies/ppc",
                                "https://clutch.co/seo-firms",
                                "https://clutch.co/agencies/sem",
                                "https://clutch.co/agencies/conversion-optimization",
                                "https://clutch.co/agencies/market-research",
                                "https://clutch.co/agencies/media-buying",
                                "https://clutch.co/it-services/marketing-automation",
                                "https://clutch.co/web-developers",
                                "https://clutch.co/developers",
                                "https://clutch.co/directory/mobile-application-developers",
                                "https://clutch.co/directory/iphone-application-developers",
                                "https://clutch.co/directory/android-application-developers",
                                "https://clutch.co/developers/ecommerce",
                                "https://clutch.co/developers/artificial-intelligence",
                                "https://clutch.co/developers/blockchain",
                                "https://clutch.co/developers/virtual-reality",
                                "https://clutch.co/developers/internet-of-things",
                                "https://clutch.co/developers/ruby-rails",
                                "https://clutch.co/developers/shopify",
                                "https://clutch.co/developers/wordpress",
                                "https://clutch.co/developers/drupal",
                                "https://clutch.co/developers/magento",
                                "https://clutch.co/developers/dot-net",
                                "https://clutch.co/web-developers/php",
                                "https://clutch.co/app-developers/wearables",
                                "https://clutch.co/developers/testing",
                                "https://clutch.co/agencies/design",
                                "https://clutch.co/agencies/digital-design",
                                "https://clutch.co/web-designers",
                                "https://clutch.co/agencies/ui-ux",
                                "https://clutch.co/agencies/packaging-design",
                                "https://clutch.co/agencies/print-design",
                                "https://clutch.co/agencies/graphic-designers",
                                "https://clutch.co/agencies/logo-designers",
                                "https://clutch.co/agencies/product-design",
                                "https://clutch.co/agencies/design/interior",
                                "https://clutch.co/it-services",
                                "https://clutch.co/it-services/analytics",
                                "https://clutch.co/it-services/staff-augmentation",
                                "https://clutch.co/it-services/cybersecurity",
                                "https://clutch.co/it-services/cloud",
                                "https://clutch.co/it-services/msp",
                                "https://clutch.co/call-centers",
                                "https://clutch.co/call-centers/answering-services",
                                "https://clutch.co/call-centers/telemarketing",
                                "https://clutch.co/bpo",
                                "https://clutch.co/hr",
                                "https://clutch.co/hr/staffing",
                                "https://clutch.co/hr/recruiting",
                                "https://clutch.co/hr/consultants",
                                "https://clutch.co/hr/executive-search",
                                "https://clutch.co/hr/peo",
                                "https://clutch.co/hr/outsourcing",
                                "https://clutch.co/consulting",
                                "https://clutch.co/accounting",
                                "https://clutch.co/accounting/payroll",
                                "https://clutch.co/translation",
                                "https://clutch.co/transcription",
                                "https://clutch.co/real-estate",
                                "https://clutch.co/law",
                                "https://clutch.co/logistics/supply-chain-management",
                                "https://clutch.co/logistics/fulfillment-services",
                                "https://clutch.co/logistics/freight-forwarders"
                            ],
                            "enumTitles": [
                                "Advertising (Advertising & Marketing)",
                                "Full Service Digital (Advertising & Marketing)",
                                "Digital Strategy (Advertising & Marketing)",
                                "Digital Marketing (Advertising & Marketing)",
                                "Social Media Marketing (Advertising & Marketing)",
                                "Content Marketing (Advertising & Marketing)",
                                "Email Marketing (Advertising & Marketing)",
                                "Inbound Marketing (Advertising & Marketing)",
                                "Direct Marketing (Advertising & Marketing)",
                                "Mobile & App Marketing (Advertising & Marketing)",
                                "Event Marketing (Advertising & Marketing)",
                                "Experiential Marketing (Advertising & Marketing)",
                                "Creative (Advertising & Marketing)",
                                "Public Relations (Advertising & Marketing)",
                                "Video Production (Advertising & Marketing)",
                                "Branding (Advertising & Marketing)",
                                "Naming (Advertising & Marketing)",
                                "PPC (Advertising & Marketing)",
                                "SEO (Advertising & Marketing)",
                                "SEM (Advertising & Marketing)",
                                "Conversion Optimization (Advertising & Marketing)",
                                "Market Research (Advertising & Marketing)",
                                "Media Planning and Buying (Advertising & Marketing)",
                                "Marketing Automation (Advertising & Marketing)",
                                "Web Developers (Development)",
                                "Software Developers (Development)",
                                "Mobile App Development (Development)",
                                "iPhone App Development (Development)",
                                "Android App Development (Development)",
                                "eCommerce (Development)",
                                "Artificial Intelligence (Development)",
                                "Blockchain (Development)",
                                "AR/VR (Development)",
                                "IoT (Development)",
                                "Ruby on Rails (Development)",
                                "Shopify (Development)",
                                "WordPress Developers (Development)",
                                "Drupal (Development)",
                                "Magento (Development)",
                                ".NET Developers (Development)",
                                "PHP (Development)",
                                "Wearables (Development)",
                                "Software Testing (Development)",
                                "Design (Design & Production)",
                                "Digital Design (Design & Production)",
                                "Web Design (Design & Production)",
                                "User Experience (Design & Production)",
                                "Packaging Design (Design & Production)",
                                "Print Design (Design & Production)",
                                "Graphic Design (Design & Production)",
                                "Logo Design (Design & Production)",
                                "Product Design (Design & Production)",
                                "Interior Design (Design & Production)",
                                "IT Services (IT Services)",
                                "BI and Big Data (IT Services)",
                                "Staff Augmentation (IT Services)",
                                "Cybersecurity (IT Services)",
                                "Cloud Consulting (IT Services)",
                                "Managed Service Providers (IT Services)",
                                "Call Centers (Business Services)",
                                "Answering Services (Business Services)",
                                "Telemarketing (Business Services)",
                                "BPO (Business Services)",
                                "Human Resources (Business Services)",
                                "HR Staffing (Business Services)",
                                "HR Recruiting (Business Services)",
                                "HR Consulting (Business Services)",
                                "Executive Search (Business Services)",
                                "PEO (Business Services)",
                                "HR Outsourcing (Business Services)",
                                "Consulting (Business Services)",
                                "Accounting (Business Services)",
                                "Payroll Processing (Business Services)",
                                "Translation (Business Services)",
                                "Transcription (Business Services)",
                                "Real Estate (Business Services)",
                                "Legal (Business Services)",
                                "Logistics & Supply Chain (Business Services)",
                                "Fulfillment (Business Services)",
                                "Freight Forwarding (Business Services)"
                            ]
                        },
                        "default": [
                            "https://clutch.co/agencies/digital"
                        ]
                    },
                    "location": {
                        "title": "Location Filter (see examples below)",
                        "type": "string",
                        "description": "Filter results by location. Use bracket notation for multiple locations.\n\nSingle location:\n  London, England\n  New York, United States\n\nMultiple locations (same category):\n  [London, England] [New York, United States] [Chicago]\n\nLeave empty for all locations.",
                        "default": ""
                    },
                    "categoryUrls": {
                        "title": "Or Enter Custom URLs Manually",
                        "type": "string",
                        "description": "Additional Clutch.co directory URLs (one per line). Useful if the category you need isn't listed in the dropdown above. Location filtering is applied automatically when a location is set above.\nExamples:\nhttps://clutch.co/web-developers\nhttps://clutch.co/developers/artificial-intelligence",
                        "default": ""
                    },
                    "maxPagesPerCategory": {
                        "title": "Max Pages per Category",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Number of pagination pages to scrape per category (each page shows ~50 listings). Set to 0 for unlimited — scrapes all available pages until no more exist.",
                        "default": 3
                    },
                    "minRating": {
                        "title": "Minimum Rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Only include companies with at least this star rating (e.g. 4.0, 3.5). Set to 0 to include all.",
                        "default": 0
                    },
                    "excludeFeatured": {
                        "title": "Exclude Featured",
                        "type": "boolean",
                        "description": "Skip promoted/sponsored listings at the top of each page.",
                        "default": false
                    },
                    "scrapeEmails": {
                        "title": "Scrape Emails from Websites",
                        "type": "boolean",
                        "description": "When enabled, visits each company's website to extract email addresses. This significantly increases run time (several seconds per website).",
                        "default": false
                    },
                    "pageTimeout": {
                        "title": "Page Load Timeout (ms)",
                        "minimum": 5000,
                        "type": "integer",
                        "description": "Maximum time to wait for each directory page to fully load.",
                        "default": 60000
                    },
                    "proxyTier": {
                        "title": "Proxy Tier",
                        "enum": [
                            "standard",
                            "premium"
                        ],
                        "type": "string",
                        "description": "Standard uses datacenter proxies at $2/1000 results. Premium uses residential proxies at $5/1000 with broader country coverage.",
                        "default": "standard"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy country selection and advanced settings. Proxy groups are auto-set based on the tier selected above.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": []
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
