{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot Scraper — Reviews, Competitors & Reply Gaps",
    "description": "Scrape Trustpilot reviews with reviewer country, verification level and company replies, plus the company profile and transparency data. Every run also returns the competitors Trustpilot itself lists, their TrustScores and your rank among them.",
    "version": "0.1",
    "x-build-id": "S6kb1BWXYwkbGYQJz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trakk~trustpilot-review-intelligence-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trakk-trustpilot-review-intelligence-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/trakk~trustpilot-review-intelligence-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trakk-trustpilot-review-intelligence-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/trakk~trustpilot-review-intelligence-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trakk-trustpilot-review-intelligence-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": {
          "mode": {
            "title": "Run mode",
            "enum": [
              "AUTO",
              "REVIEWS",
              "SEARCH"
            ],
            "type": "string",
            "description": "AUTO chooses the right flow. REVIEWS scrapes review pages for known companies. SEARCH discovers companies from Trustpilot search and can also scrape their reviews.",
            "default": "AUTO"
          },
          "companyDomains": {
            "title": "Company domain(s)",
            "type": "array",
            "description": "Business domains to scrape on Trustpilot, for example trustpilot.com, amazon.com, apple.com, or shopify.com.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "startUrls": {
            "title": "Trustpilot URL(s)",
            "type": "array",
            "description": "Trustpilot review URLs or search URLs. Use this when you already have exact Trustpilot links.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "businessUnitIds": {
            "title": "Business Unit IDs",
            "type": "array",
            "description": "Trustpilot business unit IDs. A bare ID only resolves for companies that publish a TrustBox widget, so the reliable form is \"<businessUnitId>:<domain>\", for example \"46ad346800006400050092d0:amazon.com\". When in doubt use companyDomains.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "searchQueries": {
            "title": "Search query(s)",
            "type": "array",
            "description": "Company names or keywords to search on Trustpilot.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxResults": {
            "title": "Maximum output items",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Run-wide maximum successfully saved reviews, or companies when review collection is disabled. Duplicates, filtered records and errors do not consume this limit.",
            "default": 100
          },
          "maxReviewsPerCompany": {
            "title": "Reviews per company",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of reviews to collect for each company.",
            "default": 25
          },
          "maxPagesPerCompany": {
            "title": "Max pages per company",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Pagination safety limit for each company. Increase it when you need more reviews than one page can contain.",
            "default": 3
          },
          "sort": {
            "title": "Sort reviews",
            "enum": [
              "recency",
              "relevance"
            ],
            "type": "string",
            "description": "Trustpilot review sort order.",
            "default": "recency"
          },
          "stars": {
            "title": "Rating filter",
            "type": "array",
            "description": "Trustpilot star ratings to keep. Leave empty for all ratings. Example: 1 and 2 for negative reviews.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "verified": {
            "title": "Verified reviews",
            "enum": [
              "",
              "true",
              "false"
            ],
            "type": "string",
            "description": "Filter reviews by Trustpilot verification state when supported.",
            "default": ""
          },
          "scrapeReviews": {
            "title": "Scrape reviews",
            "type": "boolean",
            "description": "Collect reviews when enabled. When disabled, save one full company profile per result instead.",
            "default": true
          },
          "includeCompanyProfile": {
            "title": "Add company profile",
            "type": "boolean",
            "description": "Attach company profile, category hierarchy, rating and language distributions, Trustpilot AI summary, subscription flags, and reply behavior to every review where available.",
            "default": true
          },
          "includeTransparency": {
            "title": "Add Trustpilot transparency metrics",
            "type": "boolean",
            "description": "Fetch public transparency metrics when available: review collection methods, reports, removals, reactivations, reply statistics, and the 12-month star distribution. This adds one public-page request per company.",
            "default": false
          },
          "rawOutput": {
            "title": "Include raw/debug fields",
            "type": "boolean",
            "description": "Keep empty optional fields and selected parser fields. Usually leave this off for cleaner tables.",
            "default": false
          },
          "analyzeAuthenticity": {
            "title": "🔬 Analyze review authenticity ($)",
            "type": "boolean",
            "description": "Optional statistical pattern analysis of saved reviews. At least 50 reviews per company are required for a score. Patterns are not proof of fake reviews. Current billing is $0.05 once per run containing an eligible analysis.",
            "default": false
          },
          "htmlReport": {
            "title": "🖼️ Visual intelligence report",
            "type": "boolean",
            "description": "Build a shareable HTML report (TrustScore, sentiment, rating distribution, top topics, top complaints vs praises, plus a brand comparison for multiple companies) and save it to the key-value store as 'report'.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Maximum parallel HTTP fetches. Keep the default for broad runs; increase after a successful small test.",
            "default": 4
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retry budget for temporary HTTP errors and parse misses.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy settings. Leave disabled for small tests; enable your preferred proxy setup only when your targets require it. Apify Proxy is on by default: without it every request leaves from one IP and Trustpilot starts refusing them. Switch the group to RESIDENTIAL if you still see blocks.",
            "default": {
              "useApifyProxy": true
            }
          },
          "languages": {
            "title": "Review languages",
            "type": "array",
            "description": "ISO language codes such as en, ru, de or fr. Leave empty for all source languages. One code per entry.",
            "items": {
              "type": "string"
            }
          },
          "publishedAfter": {
            "title": "Reviews published after",
            "type": "string",
            "description": "Exclusive cutoff: ISO date/time, Unix seconds or milliseconds. Filters use publication time. Example: 2026-01-01T00:00:00Z."
          },
          "withReplies": {
            "title": "Only reviews with a company reply",
            "type": "boolean",
            "description": "Keep only reviews with a company reply present in the source.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}