{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot Scraper — Company Data & Reviews",
    "description": "Scrape Trustpilot in real time: company search, category browse, full profiles with website, email and phone, plus customer reviews. Export ratings, review counts and lead contacts as JSON, CSV or Excel. Fast, reliable, proxy included — no code needed.",
    "version": "0.0",
    "x-build-id": "AiedYeQQX8pZHa6pr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/b2b_leads~Trustpilot-Real-Time-Data-Scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-b2b_leads-Trustpilot-Real-Time-Data-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/b2b_leads~Trustpilot-Real-Time-Data-Scraper/runs": {
      "post": {
        "operationId": "runs-sync-b2b_leads-Trustpilot-Real-Time-Data-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/b2b_leads~Trustpilot-Real-Time-Data-Scraper/run-sync": {
      "post": {
        "operationId": "run-sync-b2b_leads-Trustpilot-Real-Time-Data-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": {
          "enableCompanySearch": {
            "title": "Company search",
            "type": "boolean",
            "description": "Search Trustpilot by company keyword. Enabled by default. Every match is exported with company name, website, email, phone, rating, review volume and categories.",
            "default": true
          },
          "searchTasks": {
            "title": "Search tasks",
            "type": "array",
            "description": "Primary input. Add one row per keyword. Optional country routes the search to a regional Trustpilot market (e.g. \"uk\", \"de\").",
            "items": {
              "type": "object",
              "properties": {
                "query": {
                  "title": "Keyword",
                  "type": "string",
                  "description": "Company name, brand or service to search for (e.g. \"airbnb\", \"stripe\", \"booking.com\").",
                  "editor": "textfield"
                },
                "country": {
                  "title": "Market",
                  "type": "string",
                  "description": "Optional two-letter market code for a regional Trustpilot site (e.g. \"us\", \"uk\", \"de\", \"fr\"). Leave empty for the global market.",
                  "editor": "textfield"
                },
                "maxResults": {
                  "title": "Max companies",
                  "type": "integer",
                  "description": "Maximum companies for this task. Uses the global value below when omitted.",
                  "minimum": 1,
                  "editor": "number"
                }
              },
              "required": [
                "query"
              ]
            }
          },
          "searchMaxResults": {
            "title": "Default max companies per keyword",
            "minimum": 1,
            "type": "integer",
            "description": "Default maximum companies per search task. Override per task in the list above.",
            "default": 10
          },
          "maxPagesPerTask": {
            "title": "Max result pages per task",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many result pages of the same search or category to collect (safety cap for very large runs).",
            "default": 3
          },
          "enableCompanyDetails": {
            "title": "Company details",
            "type": "boolean",
            "description": "Enrich every company in place with its full profile: verified status, registered address, all categories, response behaviour, and the freshest rating and review volume. Every company is still exported even when a profile has little detail — this adds a little extra time per record.",
            "default": true
          },
          "enableCategoryBrowse": {
            "title": "Category browse",
            "type": "boolean",
            "description": "Discover companies listed under a Trustpilot category (e.g. \"electronics_technology\", \"travel\", \"banking\"). Off by default.",
            "default": false
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Category slugs to browse, one per line (e.g. electronics_technology, travel_vacation, money_insurance).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categoryMaxResults": {
            "title": "Max companies per category",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum companies to collect from each category.",
            "default": 50
          },
          "enableReviews": {
            "title": "Reviews",
            "type": "boolean",
            "description": "Collect customer reviews for specific companies as their own dataset rows (author, rating, title, text, date, language, helpful votes, company reply). off by default because it adds extra records per company.",
            "default": false
          },
          "reviewUrls": {
            "title": "Companies for reviews",
            "type": "array",
            "description": "Trustpilot company links or bare domains to collect reviews from (e.g. https://www.trustpilot.com/review/stripe.com or stripe.com), one per line.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerCompany": {
            "title": "Max reviews per company",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of reviews to collect from each company.",
            "default": 30
          },
          "enableScrapeByUrl": {
            "title": "Scrape By URL",
            "type": "boolean",
            "description": "Collect specific Trustpilot company profiles instead of searching.",
            "default": false
          },
          "scrapeUrls": {
            "title": "Company links",
            "type": "array",
            "description": "Trustpilot company links or bare domains (e.g. https://www.trustpilot.com/review/stripe.com), one per line.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max total items",
            "minimum": 1,
            "type": "integer",
            "description": "Global cap on total dataset rows across all features. Set high for large runs (e.g. 10000+). NOTE: on the Apify free plan this Actor is limited to a 2-result free trial per run; upgrade to a paid Apify plan for full, unlimited output. See the README 'Free plan & paid plans' section.",
            "default": 1000
          },
          "concurrency": {
            "title": "Parallel detail lookups",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many detail lookups to run in parallel (1–8). Higher is faster and uses the same number of requests; 8 is a good default.",
            "default": 8
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. Every record is always saved to the run's dataset — this webhook is an ADDITIONAL real-time push. When set, each new record is also POSTed to this URL (CRM, Slack incoming webhook, Zapier, Make, Google Sheets).",
            "default": ""
          },
          "webhookFormat": {
            "title": "Webhook format",
            "enum": [
              "json",
              "slack"
            ],
            "type": "string",
            "description": "json = full record object; slack = Slack-friendly message payload.",
            "default": "json"
          },
          "proxyConfiguration": {
            "title": "Proxy settings",
            "type": "object",
            "description": "Apify residential proxy (United States) is enabled by default for reliable collection.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}