{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot Reviews Scraper - All Languages & Replies",
    "description": "Scrape Trustpilot reviews for any company.",
    "version": "1.0",
    "x-build-id": "CCIDDqzhIuoqKuH2H"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vonsensey~trustpilot-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vonsensey-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/vonsensey~trustpilot-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-vonsensey-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/vonsensey~trustpilot-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-vonsensey-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",
        "required": [
          "companyUrls"
        ],
        "properties": {
          "companyUrls": {
            "title": "Companies",
            "type": "array",
            "description": "Trustpilot company pages or plain domains, one per line. All of these work: https://www.trustpilot.com/review/www.amazon.com, uk.trustpilot.com/review/monzo.com, or just monzo.com. Companies with no Trustpilot profile come back as a free error row instead of failing the run.",
            "default": [
              "https://www.trustpilot.com/review/www.currys.co.uk"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerCompany": {
            "title": "Max reviews per company",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many reviews for each company. Set 0 for every review this Actor can reach — it automatically works around Trustpilot's 200-per-search ceiling by splitting the history by rating and language. Each run reports exactly what it reached and what it could not.",
            "default": 1000
          },
          "maxReviews": {
            "title": "Max reviews in total",
            "minimum": 0,
            "type": "integer",
            "description": "Hard ceiling across every company in the run. 0 means no overall limit.",
            "default": 0
          },
          "includeCompanyProfile": {
            "title": "Include the company profile",
            "type": "boolean",
            "description": "Add one company intelligence row per company: TrustScore, the full 1-5 star spread, review counts by language, categories, published contact details, claimed and verification status, consumer alerts, and how much of its negative feedback the company actually answers. Turn this off and it is never charged.",
            "default": true
          },
          "companyProfilesOnly": {
            "title": "Company profiles only, no reviews",
            "type": "boolean",
            "description": "Return just the company intelligence row for each company and skip the reviews entirely. One request per company, and no review charges. Use it when you want TrustScore, the star spread, contact details and reply behaviour across a list of companies.",
            "default": false
          },
          "ratings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Only return reviews with these star ratings. Leave empty for all of them. Picking ratings also makes deep history cheaper and more complete, because it is one of the axes used to get past the 200-per-search ceiling.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ]
            },
            "default": []
          },
          "languages": {
            "title": "Review languages",
            "type": "array",
            "description": "Two-letter language codes such as en, de, fr, da, nl. Leave empty to collect every language — which is what this Actor does by default, unlike a scraper that silently returns only the English reviews Trustpilot shows first.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "reviewsSince": {
            "title": "Only reviews published since",
            "type": "string",
            "description": "A date such as 2026-01-31. Reviews published before it are skipped and never charged. Ideal on a schedule: point it at your last run."
          },
          "publishedBefore": {
            "title": "Only reviews published before",
            "type": "string",
            "description": "Upper bound on the publication date, for pulling a fixed historical window. Applied after fetching, unlike the star and language filters which Trustpilot applies itself."
          },
          "searchTerm": {
            "title": "Keyword",
            "type": "string",
            "description": "Only keep reviews whose title or text contains this word, for example refund, delivery, or cancelled."
          },
          "sort": {
            "title": "Order reviews by",
            "enum": [
              "recency",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first is what a monitor wants. Most relevant is Trustpilot's own ordering. On a large company both are used anyway, because the two orderings surface different reviews and that is one of the ways this Actor reaches past the 200-per-search ceiling.",
            "default": "recency"
          },
          "onlyVerified": {
            "title": "Only verified reviews",
            "type": "boolean",
            "description": "Keep only reviews Trustpilot marks as verified.",
            "default": false
          },
          "onlyWithReplies": {
            "title": "Only reviews the company replied to",
            "type": "boolean",
            "description": "Keep only reviews that carry a company reply.",
            "default": false
          },
          "onlyNewSinceLastRun": {
            "title": "Only reviews I have not had before",
            "type": "boolean",
            "description": "Remember which reviews were already delivered and skip them next time, so a daily or weekly schedule only ever charges for genuinely new feedback. Needs a tracking label below.",
            "default": false
          },
          "stateLabel": {
            "title": "Tracking label",
            "type": "string",
            "description": "A name for this watch list, for example uk-competitors. Reuse exactly the same label on every run so the Actor knows which history to compare against. Different label means a separate, independent memory."
          },
          "maxCostUsd": {
            "title": "Stop after this much (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "A hard spending ceiling for this run. The run stops delivering once it would exceed it. Leave empty for no ceiling."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave this off. Trustpilot is reached directly from Apify's own network, which is both faster and more reliable here — routing through a proxy was measured to fail. Only change it if you have a specific reason.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}