{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot Business Leads Scraper — Email, Phone & TrustScore",
    "description": "Trustpilot business profiles as leads by category + country or domain list: published email, phone, street address, website, TrustScore, reviews, star distribution, claimed/verified flags, reply rate. Filter by TrustScore band. Only rows with a contact are charged. $0.18 per 1,000 businesses.",
    "version": "0.1",
    "x-build-id": "y0YpGEa8ftEI4MGea"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~trustpilot-business-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-trustpilot-business-leads-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/scrapersdelight~trustpilot-business-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-trustpilot-business-leads-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/scrapersdelight~trustpilot-business-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-trustpilot-business-leads-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": {
          "categories": {
            "title": "Trustpilot categories",
            "type": "array",
            "description": "Category ids exactly as they appear in the Trustpilot URL trustpilot.com/categories/<id> — e.g. \"electronics_store\", \"plumber\", \"car_dealer\", \"web_design_agency\", or a whole branch such as \"home_garden\" or \"electronics_technology\". A full category URL is accepted too. When Trustpilot caps a listing at 10,000 businesses the actor walks its sub-categories instead. Leave empty to use only the Domains list.",
            "default": [
              "electronics_store"
            ],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "2-letter ISO country codes. Trustpilot scopes every category listing to one country, so each category is walked once per country: \"GB\", \"US\", \"DE\", \"FR\", \"ES\", \"IT\", \"NL\", \"DK\", \"SE\", \"NO\", \"AU\", \"CA\", \"IE\", …",
            "default": [
              "GB"
            ],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "City (optional)",
            "type": "string",
            "description": "Narrow each category listing to a city, as Trustpilot's own location filter does (e.g. \"London\", \"Manchester\", \"Berlin\"). Leave empty for the whole country."
          },
          "domains": {
            "title": "Domains or Trustpilot profile URLs (optional)",
            "type": "array",
            "description": "Look up specific businesses instead of (or as well as) walking categories: a website domain (\"thriftbooks.com\", \"https://www.zalando.de\") or a Trustpilot profile URL (\"https://www.trustpilot.com/review/www.thriftbooks.com\"). A domain with no Trustpilot profile is reported in the run summary and never charged.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithContact": {
            "title": "Only businesses with an email or phone",
            "type": "boolean",
            "description": "On (default): deliver — and charge — only businesses whose Trustpilot profile publishes an email address or a phone number. Businesses without either are skipped and never charged. Turn off to also receive businesses that publish no contact (still with website, TrustScore, reviews and flags).",
            "default": true
          },
          "requireEmail": {
            "title": "Require an email address",
            "type": "boolean",
            "description": "Deliver only businesses that publish an email address.",
            "default": false
          },
          "requirePhone": {
            "title": "Require a phone number",
            "type": "boolean",
            "description": "Deliver only businesses that publish a phone number.",
            "default": false
          },
          "minTrustScore": {
            "title": "Minimum TrustScore",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only businesses with a TrustScore at or above this value (0–5). Leave at 0 for no lower bound.",
            "default": 0
          },
          "maxTrustScore": {
            "title": "Maximum TrustScore",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only businesses with a TrustScore at or below this value (0–5) — e.g. 3.5 to target businesses with a weak rating for reputation-management outreach. Leave at 5 for no upper bound.",
            "default": 5
          },
          "minReviews": {
            "title": "Minimum number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Only businesses with at least this many Trustpilot reviews. 0 = no lower bound.",
            "default": 0
          },
          "maxReviews": {
            "title": "Maximum number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Only businesses with at most this many reviews — e.g. 50 to find businesses that are barely collecting reviews. 0 = no upper bound.",
            "default": 0
          },
          "claimedOnly": {
            "title": "Only claimed profiles",
            "type": "boolean",
            "description": "Deliver only profiles the business has claimed on Trustpilot (read from the profile page).",
            "default": false
          },
          "includeProfileDetails": {
            "title": "Open each business profile (claimed flag, star distribution, reply rate, recent reviews)",
            "type": "boolean",
            "description": "On (default): each business's Trustpilot profile page is read for its claimed flag and claim date, verification, star distribution (1–5), reviews in the last 12 months, reply rate to negative reviews, last review date, recent reviews, country code and Facebook page. Off: rows come from the category listing alone (name, website, email, phone, address, TrustScore, review count, categories) and the run is faster. Domain look-ups always read the profile.",
            "default": true
          },
          "recentReviews": {
            "title": "Recent reviews per business",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "How many of the business's most recent reviews to include (date, star rating, title, whether the business replied) — a quick read of how active and how well-rated it is right now. 0–20.",
            "default": 3
          },
          "maxResults": {
            "title": "Maximum businesses",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after delivering this many businesses in total. 0 = no limit (a full category walk can be tens of thousands of rows).",
            "default": 50
          },
          "maxPagesPerListing": {
            "title": "Maximum listing pages per category and country",
            "minimum": 0,
            "type": "integer",
            "description": "Trustpilot lists 20 businesses per page. 0 = walk every page.",
            "default": 0
          },
          "splitCappedCategories": {
            "title": "Walk sub-categories when a listing is capped",
            "type": "boolean",
            "description": "Trustpilot shows at most 10,000 businesses (500 pages) per category listing. On (default): when a listing hits that cap, the actor walks the category's sub-categories instead, so large branches are covered past the cap. A business in two sub-categories is delivered once.",
            "default": true
          },
          "concurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "How many Trustpilot pages are read at once (1–12).",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Not needed: Trustpilot answers Apify's network directly once the actor's browser has passed its connection check. Set a proxy only if your runs start reporting blocked pages.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}