{
  "openapi": "3.0.1",
  "info": {
    "title": "Clutch Scraper — Agency Leads, Rates & Reviews",
    "description": "Clutch.co agency and IT firm lists for B2B leads: company name, website, phone, HQ address, hourly rate, min project size, team size, rating, review count and service mix from any directory URL. Add full profiles (offices, industries, social links) and verified client reviews. No login.",
    "version": "0.1",
    "x-build-id": "7aYsdbIzP5qKiqiLH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~clutch-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-clutch-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/tortuga~clutch-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-clutch-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/tortuga~clutch-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-clutch-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Clutch.co pages to scrape: directory pages (https://clutch.co/agencies/digital-marketing, https://clutch.co/us/web-developers, https://clutch.co/it-services/msp), filtered directory URLs copied from the site (any ?filters), or company profile pages (https://clutch.co/profile/ignite-visibility). Directory pages are paginated automatically (50 companies per page). Optional when Search terms are given.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords as you would type them into clutch.co's search box, for example 'shopify developers', 'seo agency' or 'mobile app development'. Each term is matched to the Clutch directory that fits it best (the one whose title matches the most words, the largest one on a tie, e.g. 'seo london' gives Top SEO Agencies in London) and its companies are saved exactly like a directory URL. A company name such as 'Ignite Visibility' finds that company. Use instead of or together with Start URLs.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location (for search terms)",
            "type": "string",
            "description": "Optional city, state or country added to every search term, for example 'London', 'New York' or 'Germany'. Only Clutch directories for that location are used ('seo' + 'London' gives Top SEO Agencies in London); if Clutch has none, the run says so in its log. Leave empty to search worldwide."
          },
          "directoriesPerSearch": {
            "title": "Directories per search term",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many matching Clutch directories to save per search term, best match first (1 when empty). 'shopify' matches both Top Shopify Designers & Developers and Top Shopify SEO Agencies; 2 saves both. Companies listed in several directories are saved once."
          },
          "includeNameMatches": {
            "title": "Add companies whose name matches",
            "type": "boolean",
            "description": "Also save the companies whose name contains a search term (up to 4 per term, Clutch's 'Profiles' search results). They are read from their profile page, like profile URLs, so each one also counts as a Profile details event. When Clutch finds no directory for a term (e.g. a company name), these name matches are used automatically."
          },
          "maxItems": {
            "title": "Max companies",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many companies (across all start URLs). Keeps cost predictable.",
            "default": 100
          },
          "includeProfileDetails": {
            "title": "Open each company profile",
            "type": "boolean",
            "description": "Fetch every company's profile page for the full picture: description, all service lines with percentages, focus areas, industries, client sizes, all office locations, languages, timezones, founding year, rating breakdown, verified-business data, social links. One extra request per company (charged as a `detail` event).",
            "default": false
          },
          "includeWebsiteContacts": {
            "title": "Add emails, phones and social links from company websites",
            "type": "boolean",
            "description": "Visit each company's own website (its homepage plus up to 3 pages such as Contact and About) and add the email addresses, phone numbers and social profile links published there, plus the contact page URL. Nothing is guessed or built from names: only what the company's own pages show. Charged as one Website contacts event per company where at least one email or phone number was found; companies without one are free. Websites are fetched through Apify's datacenter proxy (or without proxy when the proxy is off), not the residential proxy used for Clutch."
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Nest verified client reviews inside each company (rating, title, summary, project size and length, reviewer name as shown on Clutch, role, industry and company size, date). Implies opening the profile; reviews are included in the `detail` price.",
            "default": false
          },
          "maxReviewsPerCompany": {
            "title": "Max reviews per company",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Upper limit of nested reviews per company when Include reviews is on. The profile page carries ~11 reviews; every further 10 reviews cost one more page request.",
            "default": 20
          },
          "reviewsNewerThan": {
            "title": "Only reviews newer than",
            "type": "string",
            "description": "Only reviews newer than: a date (YYYY-MM-DD) or a period such as '7 days' or '24 hours'. Nested reviews older than this are left out and review paging stops once a page ends with an older review (Clutch lists reviews newest first). Turns on Include reviews. Clutch shows review dates by day, so the whole cutoff day is included."
          },
          "includeFeatured": {
            "title": "Include featured (ad) listings",
            "type": "boolean",
            "description": "Also save the 'Featured' paid placements shown at the top of every directory page (listingType = featured, no rank). Off by default because they repeat on every page and may sit outside the directory's location.",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new items or items whose price/status changed. Use with a Schedule; unchanged items are not charged. Compared: hourly rate, minimum project size, rating and review count (a new review raises the count, so combine with 'Only reviews newer than' to get just the new reviews). With this on, Max companies is the number of companies checked each run (the watched window), and profile pages are opened only for new or changed companies.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Clutch now blocks datacenter IPs, so residential Apify Proxy is the default. Proxy usage is billed to your account. Company websites (Website contacts option) are fetched through Apify's datacenter proxy instead, never 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}