{
  "openapi": "3.0.1",
  "info": {
    "title": "Clutch Scraper | Companies, Reviews & Buyer Leads",
    "description": "Scrape Clutch.co company profiles, project reviews and buyer-company details. Export agency data for vendor research and lead qualification. Requested reviews and deterministic insights share one company-bundle fee.",
    "version": "0.1",
    "x-build-id": "FGlfRqaP74zLrYre1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/peerless_columbine~clutch-companies-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-peerless_columbine-clutch-companies-reviews-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/peerless_columbine~clutch-companies-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-peerless_columbine-clutch-companies-reviews-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/peerless_columbine~clutch-companies-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-peerless_columbine-clutch-companies-reviews-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 directories or company profiles",
            "type": "array",
            "description": "Clutch profile or directory URLs. Accepts URL strings and objects with a url field in the same array. Each directory has its own company limit."
          },
          "includeCompanyReviews": {
            "title": "Include company reviews",
            "type": "boolean",
            "description": "Include review text and rating dimensions. Missing later pages are reported as partial.",
            "default": false
          },
          "extractBuyerLeads": {
            "title": "Include buyer company and project records",
            "type": "boolean",
            "description": "Preserve buyer company and project details published in reviews. Missing values remain null.",
            "default": false
          },
          "maxItems": {
            "title": "Companies per start URL",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum company attempts per directory. Requested counts are ceilings.",
            "default": 10000
          },
          "maxPages": {
            "title": "Maximum pages per directory or review thread",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop pagination at this ceiling and report remaining coverage.",
            "default": 2000
          },
          "maxReviewsPerCompany": {
            "title": "Maximum reviews per company",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Review cap per company after review-ID deduplication.",
            "default": 10000
          },
          "maxConcurrency": {
            "title": "Profile request concurrency",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Optional maximum profile concurrency. Omitted:5 in balanced mode,100 in competitor mode. Starts at minConcurrency, grows after successful profiles and reduces its target after partial/errors; already-running requests finish normally."
          },
          "maxRequestRetries": {
            "title": "Transient request retries",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Optional transient retry ceiling. Omitted:2 in balanced mode,100 in competitor mode. Permanent403 is not repeatedly retried; retry ceiling does not imply every failure is retried."
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional explicit proxy settings override the mode. Omitted:off in balanced mode; Apify RESIDENTIAL in competitor mode. Provider traffic adds to total customer costs."
          },
          "reviewInsights": {
            "title": "Review insights",
            "type": "boolean",
            "description": "Requires includeCompanyReviews. Deterministic rating distribution, negative-review keyword themes with linked evidence, and request snippets. Reports analyzed coverage; no AI interpretation.",
            "default": false
          },
          "enrichEmails": {
            "title": "Find public contact emails",
            "type": "boolean",
            "description": "Scan the company website and up to two contact/about pages. Return published emails with source URLs. No inferred addresses; website failures are reported.",
            "default": false
          },
          "qualifyByPayment": {
            "title": "Identify online payment integrations",
            "type": "boolean",
            "description": "Requires enrichEmails. Detect supported payment integration URLs on fetched pages. Unknown when no integration is visible; detection does not prove revenue or active transactions.",
            "default": false
          },
          "maxCostUsd": {
            "title": "Company event budget (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Cap company-bundle result fees across all inputs using the effective event price. Zero means no extra cap. Platform compute, proxy, storage and external AI costs are additional. Apify Maximum total charge also limits event charges; it is not an all-inclusive spending ceiling. Company-bundle pricing is configured; see Pricing for current rates.",
            "default": 0
          },
          "painPointAnalysis": {
            "title": "AI pain-point analysis",
            "type": "boolean",
            "description": "Requires includeCompanyReviews. Analyze up to 200 reviews, first 1,500 characters each. Choose Apify-managed or direct OpenRouter with your own key. Provider charges are separate from maxCostUsd. Failures retain raw reviews.",
            "default": false
          },
          "compatibilityMode": {
            "title": "Default configuration mode",
            "enum": [
              "balanced",
              "competitor"
            ],
            "type": "string",
            "description": "Balanced uses maxConcurrency5, minConcurrency1, retries2 and no proxy. Competitor uses maxConcurrency100, minConcurrency1, retries100 and Apify RESIDENTIAL proxy. Explicit values override the mode. Residential traffic incurs platform proxy costs.",
            "default": "balanced"
          },
          "minConcurrency": {
            "title": "Minimum profile concurrency",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Initial and minimum target concurrency, not exceeding maxConcurrency. Available work can be smaller than this number.",
            "default": 1
          },
          "aiProvider": {
            "title": "AI provider",
            "enum": [
              "apify",
              "openrouter"
            ],
            "type": "string",
            "description": "Used only when painPointAnalysis is enabled. Apify service requires account entitlement. Direct OpenRouter charges your OpenRouter account and requires the encrypted key below; no automatic fallback.",
            "default": "apify"
          },
          "openrouterApiKey": {
            "title": "Your OpenRouter API key",
            "type": "string",
            "description": "Optional encrypted input. Required for enabled AI analysis with aiProvider=openrouter. Sent only to the fixed official OpenRouter API endpoint; never placed in output by this Actor. No developer key is shared."
          },
          "aiModel": {
            "title": "AI model",
            "enum": [
              "google/gemini-2.5-flash-lite",
              "nex-agi/nex-n2.5-mini:free"
            ],
            "type": "string",
            "description": "Free variant requires aiProvider=openrouter and your encrypted OpenRouter key. Free availability and rate limits are provider-controlled. No fallback to paid models. Apify scraping resource/result fees still apply. Free live inference not yet verified.",
            "default": "google/gemini-2.5-flash-lite"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}