{
  "openapi": "3.0.1",
  "info": {
    "title": "Clutch.co Agency Directory & Lead Attributes Scraper",
    "description": "B2B agency leads from Clutch.co with the attributes buyers filter on: minimum project size, hourly rate, headcount, location, service mix with percentages, rating and reviews, plus each agency's own website URL. Paid placement is labelled, not blended into the rank. No login.",
    "version": "0.0",
    "x-build-id": "zFPg1CWQhA8DpLWyO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fanndev~clutch-agency-directory-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fanndev-clutch-agency-directory-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/fanndev~clutch-agency-directory-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fanndev-clutch-agency-directory-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/fanndev~clutch-agency-directory-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fanndev-clutch-agency-directory-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "directory",
              "profile",
              "reviews",
              "categories",
              "reference"
            ],
            "type": "string",
            "description": "directory = one record per agency from a category listing, with min project size, hourly rate, headcount, location, service mix, rating and website. profile = one agency in full, from the profile page. reviews = one record per client review, with the four sub-ratings, project size and project length. categories = the list of valid directory URLs, taken from the sitemap, so you can find inputs instead of guessing slugs. reference = check the source is live and report what it returns today.",
            "default": "directory"
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Directory slugs or full clutch.co URLs. A slug such as 'web-developers' or 'seo-firms' is the global ranking; 'id/web-developers' is the Indonesian cut and 'web-designers/lagos' the city cut. Run mode=categories to list what exists (roughly 70,000 directory URLs). Used by directory and reference modes.",
            "default": [
              "web-developers"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Max pages per category",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Pages of the listing to walk. A page carries about 50 ranked agencies; /web-developers alone has 1,933 pages. Page 1 is the bare URL - the site's own ?page=1 returns page 2, and this Actor works around that.",
            "default": 3
          },
          "includePinnedRows": {
            "title": "Include pinned blocks (Leaders Matrix and featured)",
            "type": "boolean",
            "description": "Off by default. A category page repeats a 30-row Leaders Matrix and a 14-row featured block on EVERY page - the same agencies, identical markup. They are deduplicated anyway, so turning this on adds those rows once per category rather than once per page.",
            "default": false
          },
          "includePaidPlacements": {
            "title": "Include paid placements (sponsors)",
            "type": "boolean",
            "description": "On by default. Sponsor rows are 43 of the 86 rows on page 1 of a busy category. They are kept but labelled with isPaidPlacement=true, so you can tell a bought slot from an earned rank.",
            "default": true
          },
          "profileUrls": {
            "title": "Profiles",
            "type": "array",
            "description": "Profile slugs or full URLs, e.g. 'imaginovation' or 'https://clutch.co/profile/imaginovation'. Required by the profile and reviews modes.",
            "items": {
              "type": "string"
            }
          },
          "maxReviewPages": {
            "title": "Max review pages per profile",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Reviews mode only. A profile page shows about 10 reviews per page. The run stops early once a page carries no new review.",
            "default": 3
          },
          "categoryFilter": {
            "title": "Category filter",
            "type": "string",
            "description": "Categories mode only. Keep only URLs containing this text, e.g. 'seo' or '/id/'. Leave empty for everything in the shard."
          },
          "maxSitemapShards": {
            "title": "Max sitemap shards",
            "minimum": 1,
            "maximum": 7,
            "type": "integer",
            "description": "Categories mode only. The sitemap is split into 7 shards of 10,000 URLs each. One shard is usually plenty.",
            "default": 1
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on records pushed for the whole run. 0 means no cap beyond the page limits above.",
            "default": 0
          },
          "tlsProfile": {
            "title": "Connection profile override",
            "type": "string",
            "description": "Leave empty. The actor tries several connection profiles and remembers the one the source accepts, which differs between your own network and Apify's. Set this only to force one while debugging."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional, off by default - the source answers direct connections from both your own network and Apify. Turn it on and pick Residential only if a run starts getting refused.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}