{
  "openapi": "3.0.1",
  "info": {
    "title": "Business Reviews Aggregator - 6 Review Sites, One API",
    "description": "Every review of any business from six review sites in one run, one schema: TripAdvisor, Trustpilot, Sitejabber, ResellerRatings, ConsumerAffairs and PissedConsumer. Domain or page URL in, full history out. With change tracking on, each review is billed once per feed and listing. Failures are free.",
    "version": "1.0",
    "x-build-id": "kYJplgizrKAUapKeB"
  },
  "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 business per site, with its rating and review count wherever the site publishes them, 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": 30
          },
          "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 per site, with its aggregate star rating, how many reviews the site holds in total, its address and its category wherever the site publishes them. Some sites list reviews under a business name with no rating and no count, and that profile carries the name alone. 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 is not free, though: each business found on a site still bills its profile while profiles are on, or, where this listing's pricing carries a business check, one check per business and site read that billed nothing else. A business a site does not carry is never billed. The Pricing section has the prices and the date of any scheduled change.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}