{
  "openapi": "3.0.1",
  "info": {
    "title": "Trustpilot Leads Finder",
    "description": "Find businesses that got a 1-star Trustpilot review in the last 60 days (or any window, any star rating), with their email or phone, website and the review itself. Scans every Trustpilot company, no list needed. Filter by country, industry or TrustScore. Run daily for only new leads.",
    "version": "0.1",
    "x-build-id": "Eg61weDHu8X0YCmGB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alkausari_mujahid~trustpilot-leads-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alkausari_mujahid-trustpilot-leads-finder",
        "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/alkausari_mujahid~trustpilot-leads-finder/runs": {
      "post": {
        "operationId": "runs-sync-alkausari_mujahid-trustpilot-leads-finder",
        "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/alkausari_mujahid~trustpilot-leads-finder/run-sync": {
      "post": {
        "operationId": "run-sync-alkausari_mujahid-trustpilot-leads-finder",
        "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": {
          "lookbackDays": {
            "title": "Negative review within the last (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "A company is a lead if it received a negative review in this many days. 60 = the last two months.",
            "default": 60
          },
          "starRatings": {
            "title": "Which star ratings count as negative",
            "type": "array",
            "description": "Review ratings that make a company a lead. Pick several to include, for example, 1★ and 2★.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            },
            "default": [
              "1"
            ]
          },
          "maxLeads": {
            "title": "Maximum number of leads",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many leads. Set to 0 for no limit (a first full run can return 100,000+ leads).",
            "default": 500
          },
          "contactRequirement": {
            "title": "Only leads with",
            "enum": [
              "emailOrPhone",
              "email",
              "phone",
              "emailAndPhone",
              "any"
            ],
            "type": "string",
            "description": "Which contact details a company must list on its Trustpilot profile to count as a lead. Every lead also has its website and Trustpilot page.",
            "default": "emailOrPhone"
          },
          "onlyNewLeads": {
            "title": "Only new leads (skip companies from earlier runs)",
            "type": "boolean",
            "description": "Remember delivered companies and skip them in later runs, so a daily schedule only returns companies you haven't seen. Turn off to get every matching company again.",
            "default": true
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Only companies based in these countries, as 2-letter codes (US, GB, DE, …). Leave empty for all countries.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Industries / categories",
            "type": "array",
            "description": "Only companies whose Trustpilot category contains one of these words, for example \"electronics\", \"travel\", \"insurance\" or a category id like \"car_dealer\". Leave empty for all industries.",
            "items": {
              "type": "string"
            }
          },
          "minTotalReviews": {
            "title": "Minimum total reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Only companies with at least this many Trustpilot reviews in total. Useful to skip tiny businesses.",
            "default": 0
          },
          "maxTrustScore": {
            "title": "Maximum TrustScore",
            "type": "string",
            "description": "Only companies with a TrustScore at or below this value (0–5, e.g. 3.5). Leave empty for any score."
          },
          "claimedStatus": {
            "title": "Profile claimed by the company",
            "enum": [
              "any",
              "claimed",
              "unclaimed"
            ],
            "type": "string",
            "description": "Claimed profiles are managed by the business on Trustpilot; unclaimed ones aren't.",
            "default": "any"
          },
          "includeClosedBusinesses": {
            "title": "Include businesses marked as closed",
            "type": "boolean",
            "description": "Trustpilot marks some businesses as closed. They're skipped by default.",
            "default": false
          },
          "redeliverAfterDays": {
            "title": "Send a company again after (days)",
            "minimum": 0,
            "type": "integer",
            "description": "With \"Only new leads\" on, a company already delivered can come back once this many days have passed AND it has received a newer negative review. 0 = never send the same company twice.",
            "default": 0
          },
          "memoryName": {
            "title": "Memory name",
            "type": "string",
            "description": "Name of the key-value store that remembers delivered companies. Use a different name per client or campaign to keep their lead lists separate. Leave empty to disable memory.",
            "default": "trustpilot-leads-memory"
          },
          "includeReviewText": {
            "title": "Include the review title and text",
            "type": "boolean",
            "description": "Add the newest negative review's title and text to each lead — handy for personalised outreach.",
            "default": true
          },
          "maxCompaniesToCheck": {
            "title": "Maximum companies to check",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on how many companies are checked in one run. Each check is one request and carries the small per-company fee, so this also caps that part of the cost. 0 = no cap.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Parallel sessions",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "How many browser sessions check companies at the same time. Each session uses its own proxy IP and checks roughly one company per second.",
            "default": 5
          },
          "sitemapLocales": {
            "title": "Trustpilot sites to discover companies from",
            "type": "array",
            "description": "Each Trustpilot language site lists a different set of companies. Leave empty to use all of them.",
            "items": {
              "type": "string",
              "enum": [
                "en-us",
                "de-de",
                "fr-fr",
                "nl-nl",
                "da-dk",
                "it-it",
                "es-es",
                "sv-se",
                "pt-pt",
                "pl-pl",
                "fi-fi",
                "nb-no",
                "ja-jp"
              ],
              "enumTitles": [
                "English",
                "German",
                "French",
                "Dutch",
                "Danish",
                "Italian",
                "Spanish",
                "Swedish",
                "Portuguese",
                "Polish",
                "Finnish",
                "Norwegian",
                "Japanese"
              ]
            }
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy datacenter IPs work well. Each parallel session gets its own IP.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}