{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot Reviews & Company Scraper",
    "description": "Scrape Trustpilot reviews, company ratings and public contact details (email, phone, address). Discover companies by category and country for lead generation. Handles the language filter that hides most reviews of non-English companies. No login, no cookies.",
    "version": "0.1",
    "x-build-id": "91fFfGffBqQuKxmK2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alexmorain~trustpilot-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alexmorain-trustpilot-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/alexmorain~trustpilot-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alexmorain-trustpilot-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/alexmorain~trustpilot-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alexmorain-trustpilot-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": {
          "companyDomains": {
            "title": "Company domains",
            "type": "array",
            "description": "One company per line. Two accepted forms, freely mixed:<br>• the <b>domain</b> as Trustpilot knows it: <code>www.qonto.com</code>, <code>keobiz.fr</code><br>• the full <b>Trustpilot profile URL</b>: <code>https://www.trustpilot.com/review/www.qonto.com</code><br><br><b>Getting the domain right matters:</b> Trustpilot keys profiles on the exact domain, and <code>qonto.com</code> and <code>www.qonto.com</code> can be two different pages. The safe move is to search the company on Trustpilot and paste the profile URL straight from your browser; the Actor extracts the domain from it.<br><br>Leave empty if you are discovering companies by category instead.",
            "items": {
              "type": "string"
            }
          },
          "categorySlugs": {
            "title": "Category slugs",
            "type": "array",
            "description": "Trustpilot category slugs to discover companies from, one per line: <code>accountant</code>, <code>bank</code>, <code>insurance_agency</code>.<br><br><b>Where to find a slug:</b> browse the Trustpilot categories, open the one you want, and take the last part of the URL, <code>trustpilot.com/categories/<b>accountant</b></code>. Underscores are part of the slug.<br><br>You get one row per company, with name, domain, score and review count: a ready-made prospect list for an industry. Combine with the country filter below to make it local.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country (category discovery only)",
            "type": "string",
            "description": "ISO country code used to filter category results: <code>FR</code>, <code>GB</code>, <code>US</code>, <code>DE</code>.<br><br>Only applies to category discovery, and ignored when you scrape company reviews. Leave empty to get the companies of every country."
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "auto",
              "company",
              "category"
            ],
            "type": "string",
            "description": "<b>Leave this on Auto.</b> Auto picks the job from what you filled in: company domains means reviews, category slugs means discovery. It only has to be set by hand if you keep both fields filled in a saved task and want to switch between them without clearing one, in which case Auto refuses to guess and asks you to choose.",
            "default": "auto"
          },
          "maxReviewsPerCompany": {
            "title": "Max reviews per company",
            "minimum": 1,
            "type": "integer",
            "description": "Upper bound on reviews collected per company.<br><br><b>Read this before setting a big number.</b> Trustpilot serves at most 200 reviews for any single request, however many thousands it advertises on the page. Above 200 this Actor splits the profile into disjoint rating and language cells and walks each one, which typically brings a 4,500-review profile to 700 or 800 rather than 200. It cannot return the full corpus, because Trustpilot does not serve it, and no scraper can.<br><br>So: <code>200</code> is one fast pass, <code>1000</code> triggers the segmentation and takes noticeably longer for roughly three to four times more reviews. The run log always states what was collected against the advertised total.",
            "default": 200
          },
          "maxCompaniesPerCategory": {
            "title": "Max companies per category",
            "minimum": 1,
            "type": "integer",
            "description": "Upper bound on companies returned per category, paged 20 at a time. Only applies to category discovery.<br><br>Trustpilot caps its own category listings, so a category often holds a few dozen to a few hundred companies whatever you ask for. The log states the total it found.",
            "default": 100
          },
          "languages": {
            "title": "Review languages",
            "type": "string",
            "description": "Which review languages to collect. <code>all</code>, the default, returns every review whatever its language. A single code such as <code>fr</code> or <code>en</code> returns only that one.<br><br><b>Leave it on <code>all</code> unless you have a specific reason.</b> Trustpilot's own default hides reviews written in other languages, and that quietly guts the result: a French company with 200 reviews can show a single one. Restrict this only when you feed a downstream tool that handles one language.",
            "default": "all"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "<b>Keep residential proxies on.</b> Trustpilot rate-limits by IP and challenges suspicious ones; residential proxies spread the load and keep the success rate high. This is the one Actor here where the proxy setting genuinely matters.<br><br>Switching to datacenter proxies, or to no proxy at all, will get large runs blocked. A company that stays blocked is skipped with an explanation and never stops the rest of the run.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}