{
  "openapi": "3.0.1",
  "info": {
    "title": "Business Reviews Aggregator - 6 Review Sites, One API",
    "description": "Every review of any business or brand from six review sites in one run and one schema: TripAdvisor, Trustpilot, Sitejabber, ResellerRatings, ConsumerAffairs and PissedConsumer. Type a domain or paste a page URL. Full history, not just page one. Re-runs bill only what is new. Failures are free.",
    "version": "1.0",
    "x-build-id": "xAFyiUKSjxazzsrRn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vonsensey~business-reviews-aggregator-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vonsensey-business-reviews-aggregator-scraper-api",
        "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~business-reviews-aggregator-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-vonsensey-business-reviews-aggregator-scraper-api",
        "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~business-reviews-aggregator-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-vonsensey-business-reviews-aggregator-scraper-api",
        "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": {
          "targets": {
            "title": "Businesses to collect reviews for",
            "type": "array",
            "description": "One per line. Two things work here:\n\n• **A domain** — `nike.com` — which fans out automatically across Trustpilot, Sitejabber and PissedConsumer.\n• **A review page URL** from any supported site — TripAdvisor, Trustpilot, Sitejabber, ResellerRatings, ConsumerAffairs or PissedConsumer.\n\nMix both freely. Anything that cannot be used comes back as a free row saying exactly why, so nothing you type is ever dropped in silence.",
            "default": [
              "nike.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "title": "Review sites to read",
            "type": "array",
            "description": "Leave empty for all six. Narrowing this is the cheapest way to control cost when you only care about one platform.",
            "items": {
              "type": "string",
              "enum": [
                "tripadvisor",
                "trustpilot",
                "sitejabber",
                "resellerratings",
                "consumeraffairs",
                "pissedconsumer"
              ],
              "enumTitles": [
                "TripAdvisor - restaurants, hotels, attractions",
                "Trustpilot - companies",
                "Sitejabber - online businesses",
                "ResellerRatings - retailers",
                "ConsumerAffairs - brands",
                "PissedConsumer - brands"
              ]
            },
            "default": []
          },
          "maxReviewsPerBusiness": {
            "title": "Max reviews per business, per site",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "The walk keeps paging until the site runs out or this cap is hit. Set it to 0 for business profiles only - the rating and review count per site, with no review rows and no review charges. Whichever limit stopped the walk is named in the free coverage row, so you always know whether you have everything.",
            "default": 100
          },
          "maxReviewsTotal": {
            "title": "Max reviews for the whole run",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "A hard ceiling across every business and every site in this run.",
            "default": 1000
          },
          "includeBusinessProfiles": {
            "title": "Include a profile row per business, per site",
            "type": "boolean",
            "description": "The business name, its aggregate star rating, how many reviews the site holds in total, and the address and category where the site publishes them. Turn this off and the profile event never fires.",
            "default": true
          },
          "onlyNewSinceLastRun": {
            "title": "Only bill reviews that are new since the last run",
            "type": "boolean",
            "description": "On by default, and the reason a daily schedule is worth running. Reviews already delivered by a previous run of this feed are skipped and never charged again — a re-run over an unchanged business costs nothing.",
            "default": true
          },
          "stateName": {
            "title": "Feed name",
            "type": "string",
            "description": "Names the memory used by 'only new since the last run'. Give two schedules two different names and they track separately; leave it empty to share one feed.",
            "default": ""
          },
          "minRating": {
            "title": "Minimum star rating (1-5)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Filtered-out reviews are never charged. Leave empty for all ratings."
          },
          "maxRating": {
            "title": "Maximum star rating (1-5)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Set this to 2 to get only the complaints. Filtered-out reviews are never charged."
          },
          "newerThan": {
            "title": "Only reviews published on or after",
            "type": "string",
            "description": "An ISO date such as 2026-01-01. Reviews the site publishes without a usable date are excluded rather than guessed in."
          },
          "maxCostUsd": {
            "title": "Stop after this much spend (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "A hard ceiling on what this run can cost. Leave empty for no ceiling."
          },
          "concurrency": {
            "title": "Businesses fetched in parallel",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Lower is gentler on the sites and slower; the default suits almost every run.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}