{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot Reviews Scraper: Coverage Per Company",
    "description": "Scrape Trustpilot reviews and company profiles for any domain, no login. Rating, title, text, dates, verification, reviewer country, company reply. Splits filters by star, language, date and topic to get past the 200 review wall and reports coverage per company. Pay per review.",
    "version": "0.1",
    "x-build-id": "jMH5aT8icPGLEJMYi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~trustpilot-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-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/automation_craft~trustpilot-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-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/automation_craft~trustpilot-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-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": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "reviews",
              "companies"
            ],
            "type": "string",
            "description": "Reviews of specific companies (give their domains below), or find companies by search keyword or Trustpilot category and get one company row each.",
            "default": "reviews"
          },
          "companies": {
            "title": "Companies (domains or Trustpilot URLs)",
            "type": "array",
            "description": "One company per line: a domain as Trustpilot writes it (www.amazon.com, wise.com) or any Trustpilot review page URL. Non canonical domains are followed to the canonical page. Up to 200 per run.",
            "default": [
              "www.amazon.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerCompany": {
            "title": "Max reviews per company",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many reviews for each company. 0 means no limit (bounded only by what Trustpilot serves). You pay per review delivered.",
            "default": 200
          },
          "maxTotalReviews": {
            "title": "Max reviews in the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "Hard stop for the run across all companies. 0 means no limit.",
            "default": 0
          },
          "fullCoverage": {
            "title": "Full coverage (split filters past the 200 review wall)",
            "type": "boolean",
            "description": "When a filter combination has more than 200 reviews, split it by star rating, then language, then date window, then topic, and collect each part. Turn off to read only the first 10 pages of your filter (fastest, at most 200 reviews per company).",
            "default": true
          },
          "stars": {
            "title": "Star ratings",
            "type": "array",
            "description": "Only reviews with these ratings. Empty means all ratings.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            },
            "default": []
          },
          "languages": {
            "title": "Review languages",
            "type": "array",
            "description": "ISO codes such as en, de, fr, es, it, nl, da, sv, pt. Empty means every language (Trustpilot's own default of English only is NOT applied).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "dateRange": {
            "title": "Published within",
            "enum": [
              "all",
              "last30days",
              "last3months",
              "last6months",
              "last12months"
            ],
            "type": "string",
            "description": "Trustpilot's date filter. Only these windows exist on the site.",
            "default": "all"
          },
          "verifiedOnly": {
            "title": "Verified reviews only",
            "type": "boolean",
            "description": "Only reviews Trustpilot marks as verified (invitation based).",
            "default": false
          },
          "withRepliesOnly": {
            "title": "Only reviews with a company reply",
            "type": "boolean",
            "description": "Skip reviews the company has not answered.",
            "default": false
          },
          "topics": {
            "title": "Topics",
            "type": "array",
            "description": "Trustpilot topic ids, for example customer_service, delivery_service, product, refund, price. Empty means all topics.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchText": {
            "title": "Text search inside reviews",
            "type": "string",
            "description": "Only reviews whose text matches this word or phrase (Trustpilot's own search box, server side)."
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "recency",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first (recency) or Trustpilot's relevance ranking.",
            "default": "recency"
          },
          "includeCompanyProfile": {
            "title": "Include a company profile row",
            "type": "boolean",
            "description": "Adds one company row per company: TrustScore, stars, review counts per rating and language, categories, contact details, claim status, reply behaviour, Trustpilot's AI summary and similar companies. Charged as one Company profile event per company."
          },
          "includeReviewerDetails": {
            "title": "Include reviewer name",
            "type": "boolean",
            "description": "Keep the reviewer's display name on each row. Reviewer country and review count are always included. Turn off to drop names for privacy.",
            "default": true
          },
          "dedupMemoryName": {
            "title": "Dedup memory name (only new reviews across runs)",
            "type": "string",
            "description": "Give a name such as 'amazon-weekly' and later runs with the same name skip every review already delivered, free of charge. Ideal for a scheduled monitor. Leave empty for no cross run memory."
          },
          "resetDedupMemory": {
            "title": "Reset the dedup memory",
            "type": "boolean",
            "description": "Forget everything the named memory has seen and start over on this run.",
            "default": false
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Company search terms such as 'car insurance', 'web hosting' or a brand name. Each returns up to 560 companies (56 pages of 10).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories (ids or Trustpilot category URLs)",
            "type": "array",
            "description": "Trustpilot category ids such as electronics_technology, insurance_agency, or a category page URL. Up to 10,000 companies per category (500 pages of 20).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country (category browse)",
            "type": "string",
            "description": "Two letter country code that filters category listings, for example US, GB, DE. Empty means Trustpilot's default for the category."
          },
          "minTrustScore": {
            "title": "Minimum TrustScore",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Skip companies below this TrustScore (0 to 5). Categories support 3, 4 and 4.5 server side; other values are applied after fetching."
          },
          "claimedOnly": {
            "title": "Claimed profiles only",
            "type": "boolean",
            "description": "Only companies that have claimed their Trustpilot profile.",
            "default": false
          },
          "maxCompanies": {
            "title": "Max companies",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many company rows. 0 means no limit.",
            "default": 100
          },
          "enrichCompanyProfiles": {
            "title": "Enrich each company from its profile page",
            "type": "boolean",
            "description": "Fetch every company's Trustpilot page to add the rating distribution, review languages, reply behaviour, claim date, AI summary and similar companies. Same Company profile price, one extra request per company.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel companies",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many companies are scraped at the same time (1 to 5).",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify's automatic datacenter pool is enough: the access token is not tied to the exit IP. Residential proxies only add cost.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}