{
  "openapi": "3.0.1",
  "info": {
    "title": "Clutch Agencies Scraper — Ratings, Services & Pricing",
    "description": "Scrape public Clutch.co agency directories for B2B leads and vendor research. Get validated agency names, profiles, websites, ratings, review counts, services, locations, pricing, team sizes, verification, sponsorship, and rank. Listing cards only; no full review text. $0.004/agency + usage.",
    "version": "1.0",
    "x-build-id": "OM3t1SFvby5GaFx2w"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~clutch-listings-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-clutch-listings-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/khadinakbar~clutch-listings-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-clutch-listings-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/khadinakbar~clutch-listings-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-clutch-listings-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": {
          "searchUrls": {
            "title": "Agency directory URLs",
            "type": "array",
            "description": "Use this when you want to scrape one or several Clutch category, service, or location directory pages in the same run. Supply public listing pages rather than individual /profile/ pages. This list takes precedence over One agency directory URL. Leave the list empty to use that single-URL field or the built-in digital-marketing fallback.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "categoryUrl": {
            "title": "One agency directory URL",
            "type": "string",
            "description": "Use this when you have one Clutch listing page and prefer a simple URL field. A full URL or path such as /it-services works. It is ignored whenever Agency directory URLs contains at least one entry. Omit both URL fields to use the built-in digital-marketing agencies directory."
          },
          "location": {
            "title": "Clutch geolocation",
            "type": "string",
            "description": "Use this when Clutch should narrow every supplied directory URL server-side. The value is added through Clutch's geolocation query parameter. Values such as United States or London are useful starting points. Leave it empty for the directory's default geography.",
            "default": ""
          },
          "maxResults": {
            "title": "Maximum agencies",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Use this to cap both returned agencies and scraped-listing event charges. The crawler stops after this many validated rows. A lower Apify run charge limit always takes precedence. Start with 20 to 50 agencies when testing a new directory.",
            "default": 50
          },
          "maxPages": {
            "title": "Maximum pages per URL",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Use this to put a hard pagination boundary on each supplied directory URL. The limit applies independently to every starting URL. Lower it for quick samples. Raise it when a narrow client-side filter needs more source pages.",
            "default": 20
          },
          "minRating": {
            "title": "Minimum agency rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Use this when you only want agencies whose listing card has at least this Clutch star rating. Values from zero through five are accepted. Agencies without a visible rating are excluded when this filter is set. Leave the field unset to keep rated and unrated agencies."
          },
          "minReviews": {
            "title": "Minimum agency reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Use this when an agency must have at least a specific number of visible Clutch reviews. Zero and positive integers are accepted. Agencies without a visible review count are excluded when this filter is set. Leave the field unset to keep agencies regardless of review count."
          },
          "verifiedOnly": {
            "title": "Require verified badge",
            "type": "boolean",
            "description": "Use this when your shortlist should contain only listing cards where a Clutch verification badge is visible. Verification is detected from the directory card rather than inferred from other fields. Keep it off to include verified and unverified agencies. Combine it with other filters to make a stricter shortlist.",
            "default": false
          },
          "excludeSponsored": {
            "title": "Remove sponsored agencies",
            "type": "boolean",
            "description": "Use this when you want an organic agency shortlist without sponsored or featured listing cards. Sponsored status is detected from the card and its tracked links. Keep it off when paid placements should remain in their displayed order. The output always includes is_sponsored for independent auditing.",
            "default": false
          },
          "serviceKeyword": {
            "title": "Required service keyword",
            "type": "string",
            "description": "Use this when at least one service shown on the listing card must contain a phrase such as mobile app or SEO. Matching is case-insensitive and uses substring logic. This filters collected cards; it is not a Clutch search query. Leave it empty to accept every visible service mix.",
            "default": ""
          },
          "locationKeyword": {
            "title": "Required location keyword",
            "type": "string",
            "description": "Use this when the location displayed on each agency card must contain a phrase such as New York or India. Matching is case-insensitive and uses substring logic. This filter runs after the cards are collected. For Clutch's server-side geography, use Clutch geolocation instead.",
            "default": ""
          },
          "maxConcurrency": {
            "title": "Parallel directory requests",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Use this advanced control to set how many Clutch directory requests run in parallel. Two is the reliability-oriented default. Higher values may finish faster but can trigger stricter rate limiting. Keep the default unless runtime matters more than conservative request pacing.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}