{
  "openapi": "3.0.1",
  "info": {
    "title": "Clutch Scraper | Agency Directory Export",
    "description": "Export Clutch agency listings with websites, ratings, review counts, locations, rates and service mix. Filter directories and identify sponsored placements.",
    "version": "90.12",
    "x-build-id": "8Xt8dnj04wbxUiwYx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/danthedataman~clutch-agency-directory/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-danthedataman-clutch-agency-directory",
        "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/danthedataman~clutch-agency-directory/runs": {
      "post": {
        "operationId": "runs-sync-danthedataman-clutch-agency-directory",
        "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/danthedataman~clutch-agency-directory/run-sync": {
      "post": {
        "operationId": "run-sync-danthedataman-clutch-agency-directory",
        "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": {
          "category": {
            "title": "Clutch directory",
            "type": "string",
            "description": "The Clutch directory to scrape, written as the path after <code>clutch.co/</code>. Pick one from the list or type any other Clutch directory path, for example <code>agencies/ecommerce-marketing</code>. Ignored when <b>Clutch directory URLs</b> is filled in.",
            "default": "agencies/digital-marketing"
          },
          "startUrls": {
            "title": "Clutch directory URLs",
            "type": "array",
            "description": "Optional. Paste Clutch directory URLs straight from your browser. Any filters already in the URL are kept, and <code>?page=</code> sets where the walk starts. Overrides <b>Clutch directory</b> when set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Country, state or city to filter on, for example <code>United Kingdom</code>, <code>New York</code> or <code>Berlin</code>. Clutch's own location lookup resolves the name; if it matches nothing the run continues unfiltered and says so in the log. Leave empty for worldwide.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "",
              "Sponsorship",
              "ClutchRank",
              "ReviewRating",
              "NumberOfReviews",
              "Verification",
              "CompanyName"
            ],
            "type": "string",
            "description": "Ordering of the listing. <b>Sponsored</b> is Clutch's own default and puts paid placements first. Leave as the Clutch default to avoid sending a sort parameter at all.",
            "default": ""
          },
          "minReviews": {
            "title": "Minimum reviews",
            "enum": [
              "0",
              "1",
              "3",
              "5",
              "10",
              "15",
              "20"
            ],
            "type": "string",
            "description": "Keep only companies with at least this many Clutch reviews.",
            "default": "0"
          },
          "maxBudget": {
            "title": "Project budget",
            "enum": [
              "0",
              "5000",
              "10000",
              "25000",
              "50000",
              "75000",
              "100000",
              "250000"
            ],
            "type": "string",
            "description": "Keep only companies that take projects under this size.",
            "default": "0"
          },
          "hourlyRate": {
            "title": "Hourly rate",
            "type": "array",
            "description": "Keep only companies in these hourly-rate bands. Leave empty for all rates.",
            "items": {
              "type": "string",
              "enum": [
                "0-25",
                "25-49",
                "50-99",
                "100-149",
                "150-199",
                "200-300",
                "300"
              ],
              "enumTitles": [
                "Under $25 / hr",
                "$25 - $49 / hr",
                "$50 - $99 / hr",
                "$100 - $149 / hr",
                "$150 - $199 / hr",
                "$200 - $300 / hr",
                "$300+ / hr"
              ]
            },
            "default": []
          },
          "companySize": {
            "title": "Company size",
            "type": "array",
            "description": "Keep only companies with this many employees. Leave empty for all sizes.",
            "items": {
              "type": "string",
              "enum": [
                "Freelancer",
                "2 - 9",
                "10 - 49",
                "50 - 249",
                "250 - 999",
                "1,000 - 9,999",
                "10,000+"
              ],
              "enumTitles": [
                "Freelance",
                "2 - 9",
                "10 - 49",
                "50 - 249",
                "250 - 999",
                "1,000 - 9,999",
                "10,000+"
              ]
            },
            "default": []
          },
          "serviceLines": {
            "title": "Service lines",
            "type": "array",
            "description": "Keep only companies offering these services, as Clutch's own slugs — for example <code>field_pp_sl_seo</code>, <code>field_pp_sl_smm</code>, <code>field_pp_sl_web_design</code>. Each directory publishes its own list; the quickest way to find a slug is to tick the filter on Clutch and read it out of the resulting URL. Left free-form on purpose so no valid slug is blocked.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industry focus",
            "type": "array",
            "description": "Keep only companies serving these industries, as Clutch's own slugs — for example <code>field_pp_if_ecommerce</code>, <code>field_pp_if_healthcare</code>, <code>field_pp_if_finservices</code>. Tick the filter on Clutch and read the slug out of the URL. Left free-form on purpose so no valid slug is blocked.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "verifiedOnly": {
            "title": "Clutch-verified companies only",
            "type": "boolean",
            "description": "Keep only companies that have passed Clutch's verification process. This is a small fraction of any directory.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum companies",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many companies. Clutch directories run to tens of thousands of listings, so this is capped by default — set 0 for no limit and rely on the run time budget instead.",
            "default": 100
          },
          "maxRunSeconds": {
            "title": "Run time budget (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop requesting new pages after this many seconds, so a Clutch-side outage cannot burn a long run. 0 disables the budget.",
            "default": 900
          },
          "maxRetriesPerRequest": {
            "title": "Max retries per request",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How hard to retry a blocked page. Clutch refuses a large share of residential exits, so each retry rotates onto a fresh IP. Measured 2026-07-26: 8 retries succeeded 2/4 runs, 20 retries with per-request rotation succeeded 3/3.",
            "default": 20
          },
          "rotateAfterRequests": {
            "title": "Rotate proxy IP every N requests",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Retire a proxy identity after this many requests. Clutch blocks a large fraction of residential exits outright, so rotating every request materially raises the success rate. 0 disables.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Defaults to the RESIDENTIAL group. If every retry of any listing request returns HTTP 403 and this setting has no RESIDENTIAL group or proxyUrls, the Actor switches once to RESIDENTIAL.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}