{
  "openapi": "3.0.1",
  "info": {
    "title": "Clutch.co Companies & Reviews Scraper — Agency Leads & Pricing",
    "description": "Scrape Clutch.co companies and agencies: ratings, reviews, hourly rates, project sizes, services, locations and full company profiles for lead generation, competitor research and automation. Filter by rating, size, price and service. Export agency leads to CSV, Excel, JSON or API.",
    "version": "0.7",
    "x-build-id": "oocNJBwt1rELiZu5c"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zapticx~clutch-companies-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zapticx-clutch-companies-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/zapticx~clutch-companies-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zapticx-clutch-companies-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/zapticx~clutch-companies-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zapticx-clutch-companies-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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Clutch URLs",
            "type": "array",
            "description": "Add Clutch.co directory pages, company profile pages, or both. A directory can be a service category (https://clutch.co/web-developers), a country (https://clutch.co/us/web-developers) or a city (https://clutch.co/web-developers/austin, https://clutch.co/seo-firms/uk/england/london); pages are followed until your limits are reached. A company profile looks like https://clutch.co/profile/cleveroad and is always returned with full profile details (charged as an enriched profile). Clutch search pages are not supported.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "enableProfileEnrichment": {
            "title": "Add full company profiles (profile enrichment)",
            "type": "boolean",
            "description": "Also open each company's Clutch profile and add its tagline, full description, founding year, website, social links, every office, languages, timezones, industries, client-size focus, technology and other focus areas, and Clutch Certified services. Uses one extra request per company and makes runs slower. Each company delivered with its profile successfully read (profileStatus \"enriched\") is charged as profile enrichment; failed profiles are not charged. Company profile URLs in the list above are always returned with full profile details.",
            "default": false
          },
          "includeReviews": {
            "title": "Include client reviews (adds profile enrichment)",
            "type": "boolean",
            "description": "Extract reviews for each company. Review extraction requires visiting the company profile, so each processed company is also delivered as an enriched profile and incurs the profile-enrichment charge in addition to review-result charges. Reviews are saved in Output → Reviews.",
            "default": false
          },
          "maxReviewsPerCompany": {
            "title": "Maximum reviews per company",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop after this many reviews for each company, in Clutch's default order. The first page of reviews (usually about 10) comes with the profile page at no extra request; each further page needs one more request. To collect every review of a typical company, set a high number such as 500 (maximum 1000).",
            "default": 10
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep companies rated at least this (0-5), e.g. 4.5. Companies not yet reviewed have no rating and are excluded while this filter is set."
          },
          "maxRating": {
            "title": "Maximum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep companies rated at most this (0-5)."
          },
          "minReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep companies with at least this many Clutch reviews (companies not yet reviewed count as 0)."
          },
          "maxReviews": {
            "title": "Maximum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep companies with at most this many Clutch reviews."
          },
          "minEmployees": {
            "title": "Minimum employees",
            "minimum": 0,
            "type": "integer",
            "description": "Clutch shows team size as a band (e.g. 10 - 49). A company is kept when its band overlaps your range: 10 - 49 matches a minimum of 20. Companies with an undisclosed size are excluded while a size filter is set."
          },
          "maxEmployees": {
            "title": "Maximum employees",
            "minimum": 0,
            "type": "integer",
            "description": "Upper end of the team-size range (band overlap, see Minimum employees)."
          },
          "minHourlyRate": {
            "title": "Minimum hourly rate (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Clutch shows hourly rates as bands (e.g. $50 - $99 / hr). A company is kept when its band overlaps your range. Undisclosed rates are excluded while a rate filter is set."
          },
          "maxHourlyRate": {
            "title": "Maximum hourly rate (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Upper end of the hourly-rate range (band overlap): $50 - $99 / hr matches a maximum of 75."
          },
          "minProjectSize": {
            "title": "Minimum project size at least (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep companies whose minimum project size is at least this amount, e.g. 25000 for agencies that take only larger projects."
          },
          "maxProjectSize": {
            "title": "Minimum project size at most (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep companies whose minimum project size is at most this amount, e.g. 10000 for agencies that accept projects of $10,000 or less. Undisclosed values are excluded while this filter is set."
          },
          "countryCodes": {
            "title": "Countries (2-letter codes)",
            "type": "array",
            "description": "Keep companies located in these countries, as two-letter ISO codes: US, GB (UK also accepted), CA, IN, PL, DE... Location filters use the company address Clutch publishes in its structured data (often the headquarters), which can differ from the office location shown in a city directory.",
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Keep companies in these cities (matching ignores upper/lower case and accents, e.g. Poznan = Poznań). Location filters use the company address Clutch publishes in its structured data (often the headquarters), which can differ from the office location shown in a city directory.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "States / regions",
            "type": "array",
            "description": "Keep companies in these states or regions as Clutch shows them, e.g. CA, NY, TX for US states or ON, BC for Canadian provinces. Location filters use the company address Clutch publishes in its structured data (often the headquarters), which can differ from the office location shown in a city directory.",
            "items": {
              "type": "string"
            }
          },
          "services": {
            "title": "Services",
            "type": "array",
            "description": "Keep companies that offer at least one of these services, using Clutch's service names exactly (case-insensitive, no fuzzy matching), e.g. Web Development, Search Engine Optimization, Mobile App Development.",
            "items": {
              "type": "string"
            }
          },
          "verificationStatus": {
            "title": "Verification",
            "enum": [
              "any",
              "verified",
              "premierVerified",
              "unverified"
            ],
            "type": "string",
            "description": "Keep only companies with this Clutch verification status.",
            "default": "any"
          },
          "listingType": {
            "title": "Listing type",
            "enum": [
              "all",
              "organic",
              "sponsored"
            ],
            "type": "string",
            "description": "Clutch places paid \"Sponsor\" listings at the top of the first page. Choose organic to skip them. Not applied to company profile URLs, which have no listing position.",
            "default": "all"
          },
          "maxItems": {
            "title": "Maximum companies",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many unique companies in total, across all URLs. Each directory page holds up to 50 companies. Set 0 for no limit (a large category can contain tens of thousands of companies).",
            "default": 100
          },
          "maxPagesPerUrl": {
            "title": "Maximum pages per URL",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each directory after this many pages (50 companies per page). Set 0 to follow every page until the end of the directory or the company limit.",
            "default": 0
          },
          "maxRequestsPerRun": {
            "title": "Maximum requests per run",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Safety limit: the run stops after this many requests to Clutch and keeps everything collected so far. Every attempt counts, including automatic retries. As a guide, 2,000 requests covers well over a thousand directory pages, or a few hundred companies with profile details and reviews. Raise it for large jobs.",
            "default": 2000
          },
          "failRunIfUnhealthyPercentAbove": {
            "title": "Fail the run if more than this % of pages fail",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Optional. Marks the run as failed (all collected data is still saved) when, at the end, more than this percentage of pages failed permanently. A page is a directory page, a company profile or a review page; it fails permanently only if every retry was blocked or errored. Formula: failed pages / (loaded + failed pages) x 100. Pages that loaded after retries count as healthy. Leave empty to never fail the run for this reason."
          },
          "deduplicate": {
            "title": "Remove duplicate companies",
            "type": "boolean",
            "description": "When the same company appears in more than one of your URLs, keep only its first appearance (matched by Clutch company ID). Turn off to get one record per URL in which the company appears.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Managed automatically (Apify Proxy UNBLOCKER group, which this Actor is tested with). Not shown in the form.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "UNBLOCKER"
              ]
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}