{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot $0.75💰 Bypass 200 Limit  [Company & Transparency]",
    "description": "💰$0.75 per 1,000 results – No limits, unlimited extraction. Enterprise-grade Trustpilot scraper that extracts 40+ data points per review with built-in analytics and 100% verified reviews coverage. Bypassing the limit of only the first 10 pages. Perfect for business intelligence and market research.",
    "version": "0.0",
    "x-build-id": "6s9sTYBDQSe8Ikxdn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~trustpilot-scraper-ppe/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-trustpilot-scraper-ppe",
        "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/memo23~trustpilot-scraper-ppe/runs": {
      "post": {
        "operationId": "runs-sync-memo23-trustpilot-scraper-ppe",
        "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/memo23~trustpilot-scraper-ppe/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-trustpilot-scraper-ppe",
        "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": "Enter one item per row. Each value can be a Trustpilot `/review/` or `/users/` URL, a company URL, or a bare slug such as `bankfive`. Wrong `/review/` slugs trigger a Trustpilot search fallback. Localized hosts (e.g. fr.trustpilot.com) normalize to www.trustpilot.com automatically.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Brand names to search",
            "type": "array",
            "description": "One brand name per row, e.g. `nike`, `noom`, `marcovasco`. The scraper resolves each to its canonical business unit and (when 'Expand regional domains' is on) also sweeps every regional sibling on Trustpilot's index.",
            "items": {
              "type": "string"
            }
          },
          "scrapeAllReviews": {
            "title": "Scrape all reviews -> eveything what is available",
            "type": "boolean",
            "description": "When enabled, fetch all available reviews across languages by appending `language=all`. When disabled, the scraper still uses the broader default Trustpilot feed rather than restricting results to the locale in a localized Trustpilot URL.",
            "default": true
          },
          "filterStars": {
            "title": "Star ratings to include",
            "uniqueItems": true,
            "type": "array",
            "description": "Limit reviews to specific star ratings. Leave empty to include all ratings (1–5).",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 ★",
                "2 ★",
                "3 ★",
                "4 ★",
                "5 ★"
              ]
            },
            "default": []
          },
          "filterLanguages": {
            "title": "Languages to include",
            "type": "array",
            "description": "ISO 639-1 codes (e.g. `en`, `de`, `fr`, or `unknown` for reviews Trustpilot couldn't classify). Leave empty to auto-discover and sweep all languages found on each business unit.",
            "items": {
              "type": "string"
            }
          },
          "filterDateRange": {
            "title": "Review date range",
            "enum": [
              "all",
              "last30days",
              "last3months",
              "last6months",
              "last12months"
            ],
            "type": "string",
            "description": "Server-side rolling date window. Equivalent to the iOS app's 'Date posted' filter. The gateway only accepts these enums; anything else returns HTTP 400. For an exact cutoff, use the 'Only scrape reviews newer than' field below — they compose (the more restrictive one wins).",
            "default": "all"
          },
          "filterVerifiedOnly": {
            "title": "Verified reviews only",
            "type": "boolean",
            "description": "Equivalent to the iOS app's 'Verified reviews' toggle. Sent server-side as `onlyVerified=true`, so the gateway prunes non-verified reviews before responding — no wasted requests. The canonical output's `isVerified` reflects truth (derived from `verificationLabel.type === 'verified'`; the raw response boolean is misleading).",
            "default": false
          },
          "filterRepliesOnly": {
            "title": "Reviews with company replies only",
            "type": "boolean",
            "description": "Equivalent to the iOS app's 'Reviews with replies' toggle. Sent server-side as `onlyWithReplies=true`, so the gateway prunes reviews without replies before responding.",
            "default": false
          },
          "filterCountries": {
            "title": "Reviewer countries to include",
            "type": "array",
            "description": "ISO 3166-1 alpha-2 country codes to keep, e.g. `US`, `GB`, `DE`. Matched against the reviewer's profile country (`consumer.countryCode`). Leave empty to keep all countries. The gateway has no server-side country filter, so this is applied client-side — non-matching reviews still cost a request and the drop count is logged in the per-URL summary.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "auto",
              "relevancy",
              "recent"
            ],
            "type": "string",
            "description": "How each review stream is ordered. `auto` picks `recent` whenever a start date is set (so the cutoff actually short-circuits pagination) and `relevancy` otherwise.",
            "default": "auto"
          },
          "expandRegionalDomains": {
            "title": "Expand regional domains",
            "type": "boolean",
            "description": "After resolving each input, also fetch every regional sibling on Trustpilot's index that matches the same brand (e.g. `nike` → `nike.com`, `nike.uk`, `nike.de`, `nike.dk`, …). Strict displayName matching keeps unrelated brands out. Shared `maxItems` budget across siblings.",
            "default": true
          },
          "startDate": {
            "title": "Only scrape reviews newer than [date]",
            "type": "string",
            "description": "Format YYYY-MM-DD, e.g., 2022-02-20. Used as a hard chronological cutoff: when set, the scraper switches to `sort=createdAt:desc` and short-circuits pagination as soon as it crosses the date."
          },
          "includeCompanyDetails": {
            "title": "Include company details in output",
            "type": "boolean",
            "description": "When enabled, each review item is enriched with the `company` block (display name, identifying domain, country, total review count, …).",
            "default": false
          },
          "includeStats": {
            "title": "Include statistics in output",
            "type": "boolean",
            "description": "When enabled, each review item is enriched with the `stats` block (total review count, per-star rating distribution, …).",
            "default": false
          },
          "includeTransparency": {
            "title": "Include transparency page data",
            "type": "boolean",
            "description": "When enabled, each review item is enriched with the `transparency` block (collecting method distribution, stars breakdown by method, monthly data, etc.).",
            "default": false
          },
          "includeCompanyAdditionalFields": {
            "title": "Include extra company fields (consumerAlert, hasCollectedIncentivisedReviews, basiclinkRate)",
            "type": "boolean",
            "description": "On-demand enrichment. When enabled, each review's `company` block is augmented with `consumerAlert`, `consumerAlerts`, `hasCollectedIncentivisedReviews`, and (when still exposed by Trustpilot) `basiclinkRate`. Costs one extra HTTP request per unique business unit. Has no effect unless 'Include company details in output' is also enabled.",
            "default": false
          },
          "maxItems": {
            "title": "Limit the number of reviews per URL or search filter",
            "type": "integer",
            "description": "Per-input cap. With 3 inputs and `maxItems=30`, you can collect up to 90 reviews total (30 per input). When 'Expand regional domains' is on, this budget is shared across the primary BU and all its regional siblings.",
            "default": 10000
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum number of inputs being processed in parallel (each input runs many sequential page fetches).",
            "default": 10
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum number of inputs that will be processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "type": "integer",
            "description": "Number of times the scraper will retry a failed mobile-gateway request before giving up.",
            "default": 100
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy servers used for outbound requests. Trustpilot's mobile gateway is generally not blocked, so proxy is optional but recommended for high-volume runs.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}