{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot Reviews Scraper & Trustpilot API: No 200 Cap",
    "description": "Trustpilot reviews API and scraper, no login: scrape every Trustpilot review of a business by domain or URL, past the 200 cap; rating, text, dates, reviewer, reply; export the company's TrustScore, star split, AI summary and a completeness verdict. All languages, star, topic and keyword filters.",
    "version": "0.1",
    "x-build-id": "g3CoGzkiqzLQj56gI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hyperbach~trustpilot-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hyperbach-trustpilot-reviews-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/hyperbach~trustpilot-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hyperbach-trustpilot-reviews-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/hyperbach~trustpilot-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hyperbach-trustpilot-reviews-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": {
          "business": {
            "title": "Business (domain or Trustpilot review URL)",
            "maxLength": 4000,
            "type": "string",
            "description": "One business: its domain (`pipedrive.com`) or its Trustpilot review URL on any country host (`https://www.trustpilot.com/review/pipedrive.com`, `https://uk.trustpilot.com/review/pipedrive.com?stars=1&languages=en`: the URL's own filters apply). Not read when `businesses` has an item: the list is then the whole run, and the filters here are its defaults.",
            "default": ""
          },
          "businesses": {
            "title": "Businesses (domains, URLs or objects)",
            "maxItems": 500,
            "type": "array",
            "description": "Many businesses in one run: a list of domains or Trustpilot review URLs as strings, or objects with their own filters and your own id: `{\"business\": \"pipedrive.com\", \"language\": \"en\", \"stars\": \"1,2\", \"dateRange\": \"last12months\", \"publishedAfter\": \"2026-09-01\", \"verifiedOnly\": false, \"withRepliesOnly\": false, \"topics\": [\"customer_service\"], \"keyword\": \"refund\", \"sort\": \"recency\", \"maxReviewsPerBusiness\": 500, \"id\": \"my-ref-17\"}` (the run's fields are the defaults). Up to 500 a run; a value that is no business is a free `invalid` row, and a business given twice with the same filters a free `duplicate` row.",
            "default": []
          },
          "maxReviewsPerBusiness": {
            "title": "Reviews per business",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop a business after this many review rows. 0 = every review reachable logged out: the asked view's 200 newest (Trustpilot serves 10 pages of 20 a view), then the slices past the cap (languages, stars, topics, keywords learned from the reviews read), every review once. The free business row says how many Trustpilot counts in the asked view and whether the walk was COMPLETE, TRUNCATED or CAPPED. Up to 200 the rows are the newest in the asked order (`rank` 1 to 200).",
            "default": 0
          },
          "language": {
            "title": "Language",
            "pattern": "^(all|[a-z]{2,3}(-[A-Za-z]{2,4})?)$",
            "maxLength": 8,
            "type": "string",
            "description": "`all` (the default: every language the business has reviews in) or one language code as Trustpilot's language filter uses it (`en`, `de`, `fr`, `pt-BR`). One language per view: list several businesses with their own `language` for several. A code Trustpilot does not know (it would answer with every language) gives a free `invalid` row that lists the business's languages.",
            "default": "all"
          },
          "stars": {
            "title": "Stars",
            "pattern": "^([1-5](,[1-5]){0,4})?$",
            "maxLength": 9,
            "type": "string",
            "description": "Keep reviews of these star ratings only, comma-separated (`1`, `1,2`, `4,5`). Empty = every rating. Applied by Trustpilot; each row's `rating` is the review's own.",
            "default": ""
          },
          "dateRange": {
            "title": "Date range (Trustpilot's presets)",
            "enum": [
              "",
              "last30days",
              "last3months",
              "last6months",
              "last12months"
            ],
            "type": "string",
            "description": "Keep reviews published in Trustpilot's own date window. Empty = any date. For an exact cutoff use `publishedAfter`.",
            "default": ""
          },
          "publishedAfter": {
            "title": "Published after (exact cutoff)",
            "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2}([T ][0-9]{2}:[0-9]{2}(:[0-9]{2})?(\\.[0-9]+)?(Z|[+-][0-9]{2}:?[0-9]{2})?)?)?$",
            "maxLength": 32,
            "type": "string",
            "description": "Keep reviews published after this date or datetime (`2026-09-01`, `2026-09-01T12:00:00Z`, `2026-09-01T14:00:00+02:00`; no offset = UTC): the walk reads each view newest first and stops at the first review at or before it, so a scheduled run given the newest `published_at` of its last run delivers only what is new. Needs `sort` recency.",
            "default": ""
          },
          "verifiedOnly": {
            "title": "Verified reviews only",
            "type": "boolean",
            "description": "Keep the reviews Trustpilot's own verified filter keeps (verification level `verified`, such as a verified purchase; invited reviews that are not verified are not in it). Applied by Trustpilot.",
            "default": false
          },
          "withRepliesOnly": {
            "title": "Reviews with a company reply only",
            "type": "boolean",
            "description": "Keep reviews the business replied to. Applied by Trustpilot.",
            "default": false
          },
          "topics": {
            "title": "Topics",
            "maxItems": 25,
            "type": "array",
            "description": "Keep reviews Trustpilot tags with these topics (several = all of them at once, as the page does): `user_experience`, `customer_service`, `service`, `delivery_service`, `price`, `refund`, `website`, `app`, `payment`, `staff`, `quality`, `order`, `subscription`, `cancellation`, `product`, `value_for_money`, `warranty`, `response_time`, `location`, `return_policy`, `delivery`, `privacy`, `software`, `billing`, `experience`. Empty = every review.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword in the review",
            "maxLength": 100,
            "type": "string",
            "description": "Keep reviews whose text matches this word or phrase (Trustpilot's own review search). Empty = every review.",
            "default": ""
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "recency",
              "relevance"
            ],
            "type": "string",
            "description": "The page's order: `recency` (newest first, the default; `rank` 1 to 200 are the newest) or `relevance` (Trustpilot's own ranking of the same 200). A view holds 200 reviews either way; the slices past them read in recency order.",
            "default": "recency"
          },
          "includeReviews": {
            "title": "Read the reviews",
            "type": "boolean",
            "description": "On (the default): the review rows and a free business row per business. Off: one business row per business only (TrustScore, stars, counts, the star and language split, categories, the contact block, the reply behaviour, Trustpilot's AI summary and topic summaries, similar businesses), charged as a `business` row.",
            "default": true
          },
          "includeTransparency": {
            "title": "Transparency page",
            "type": "boolean",
            "description": "One more call per business: Trustpilot's transparency page into the business row's `transparency` column (how the reviews were collected, the monthly counts per star over 12 months, the reports and their outcomes, the reply rate). No extra charge.",
            "default": false
          },
          "maxItems": {
            "title": "Max review rows (the whole run)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop the run after this many review rows across every business (0 = no limit; `maxReviewsPerBusiness` caps each business). Business rows are free and not counted. A business left unread at the cap gets a free `not_read` row.",
            "default": 0
          },
          "proxyUrl": {
            "title": "Proxy URL",
            "type": "string",
            "description": "Empty (recommended): Trustpilot is read through the Actor's own exits at no extra cost to you. Your own proxy URL (scheme://user:pass@host:port) carries the browser and every call instead. The word none runs without any proxy, from the Apify worker's own IP (for tests)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}