{
  "openapi": "3.0.1",
  "info": {
    "title": "Bazaarvoice & PowerReviews Reviews + Q&A Scraper",
    "description": "Reviews, Q&A and rating summaries from any shop on Bazaarvoice or PowerReviews: Target, Home Depot, Sephora, Costco, Lowe's, Boots, Argos, MediaMarkt, Ulta and thousands more. Paste a product URL; filter by stars, date, language, photos, verified buyers; only-new mode.",
    "version": "1.0",
    "x-build-id": "N8IEHscavbc5pure0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trev0n~bazaarvoice-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trev0n-bazaarvoice-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/trev0n~bazaarvoice-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trev0n-bazaarvoice-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/trev0n~bazaarvoice-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trev0n-bazaarvoice-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": {
          "startUrls": {
            "title": "🔗 Product page URLs",
            "type": "array",
            "description": "Product pages of any shop or brand site that shows Bazaarvoice or PowerReviews ratings, e.g. Target, Home Depot, Sephora, Costco, Lowe's, Macy's, Sam's Club, JCPenney, Boots, Argos, MediaMarkt, Ulta. The account and product are detected automatically — even when the shop's page itself blocks robots.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "bvClient": {
            "title": "🏪 Bazaarvoice account (instead of URLs)",
            "type": "string",
            "description": "The shop's Bazaarvoice account name, e.g. \"targetcom\", \"homedepot\", \"sephora\", \"boots\", \"argos\", \"mediamarkt\". It is the part after /deployments/ in the page source (apps.bazaarvoice.com/deployments/<account>/…). Use it with Product IDs or Catalogue search."
          },
          "bvLocale": {
            "title": "🌐 Bazaarvoice site locale",
            "type": "string",
            "description": "Locale of the account's site, e.g. en_US (default), en_GB, de_DE, fr_FR, en_CA."
          },
          "bvSite": {
            "title": "🧩 Bazaarvoice site (zone)",
            "type": "string",
            "description": "Deployment zone of the account. Almost always \"main_site\" (default); some brands use another, e.g. \"dxp_site\"."
          },
          "productIds": {
            "title": "🆔 Product IDs",
            "type": "array",
            "description": "Bazaarvoice product IDs within the account above, e.g. Target \"54293362\", Sephora \"P61003\", Sam's Club \"prod21231904\".",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "🔍 Catalogue search",
            "type": "string",
            "description": "Find products in the account's review catalogue by keyword (most-reviewed first) and scrape them, e.g. \"airpods\" in targetcom. Combine with Max products."
          },
          "maxProducts": {
            "title": "📦 Max products from search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many products the catalogue search may return.",
            "default": 10
          },
          "bvPasskey": {
            "title": "🔑 Bazaarvoice passkey (legacy sites only)",
            "type": "string",
            "description": "Only for shops on the older Bazaarvoice display (the run tells you when it is needed). It is the public key in the page source after \"passkey=\". With a passkey, Product IDs work without an account name."
          },
          "bvEnvironment": {
            "title": "🧪 Passkey environment",
            "enum": [
              "production",
              "staging"
            ],
            "type": "string",
            "description": "Production for real shops. Staging only for Bazaarvoice test passkeys.",
            "default": "production"
          },
          "prMerchantId": {
            "title": "🛍️ PowerReviews merchant ID",
            "type": "string",
            "description": "For PowerReviews shops without a product URL: the merchant ID from the page source (\"merchant_id\" / \"prMerchantId\"), e.g. 6406 for Ulta."
          },
          "prApiKey": {
            "title": "🔑 PowerReviews API key",
            "type": "string",
            "description": "The public read key from the page source (\"api_key\" / \"prApiKey\", a UUID)."
          },
          "prLocale": {
            "title": "🌐 PowerReviews locale",
            "type": "string",
            "description": "Locale of the PowerReviews site, e.g. en_US (default), en_CA, en_GB."
          },
          "prPageIds": {
            "title": "🆔 PowerReviews page IDs",
            "type": "array",
            "description": "Product page IDs within the merchant, e.g. \"pimprod2020260\" (Ulta).",
            "items": {
              "type": "string"
            }
          },
          "includeReviews": {
            "title": "⭐ Reviews",
            "type": "boolean",
            "description": "Output one record per review.",
            "default": true
          },
          "includeQuestions": {
            "title": "❓ Questions & answers",
            "type": "boolean",
            "description": "Output one record per customer question, with all its answers (brand answers flagged).",
            "default": false
          },
          "includeProductSummary": {
            "title": "📊 Product rating summary",
            "type": "boolean",
            "description": "Output one summary record per product: average rating, star distribution, review / question counts, recommend %, sub-ratings, EAN/UPC.",
            "default": true
          },
          "maxReviewsPerProduct": {
            "title": "🔢 Max reviews per product",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many reviews per product. 0 = all of them.",
            "default": 100
          },
          "maxQuestionsPerProduct": {
            "title": "🔢 Max questions per product",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many questions per product. 0 = all of them.",
            "default": 50
          },
          "maxResults": {
            "title": "🧮 Max records in total",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on all records of the run (reviews + questions + summaries). 0 = no cap.",
            "default": 0
          },
          "sortBy": {
            "title": "↕️ Sort reviews by",
            "enum": [
              "newest",
              "oldest",
              "highestRating",
              "lowestRating",
              "mostHelpful"
            ],
            "type": "string",
            "description": "Order in which reviews are collected — matters when you cap the number per product.",
            "default": "newest"
          },
          "ratings": {
            "title": "⭐ Star ratings",
            "type": "array",
            "description": "Only reviews with these star ratings, e.g. 1 and 2 for complaints. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "★ 1 star",
                "★★ 2 stars",
                "★★★ 3 stars",
                "★★★★ 4 stars",
                "★★★★★ 5 stars"
              ]
            }
          },
          "reviewsSince": {
            "title": "📅 Reviews since",
            "type": "string",
            "description": "Only reviews and questions submitted on or after this date (YYYY-MM-DD), or a relative period such as \"30 days\", \"6 months\"."
          },
          "contentLocales": {
            "title": "🗣️ Review languages (Bazaarvoice)",
            "type": "array",
            "description": "Only reviews written in these locales, e.g. en_US, fr_CA, or en* for every English variant. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "withPhotosOnly": {
            "title": "📸 Only reviews with photos",
            "type": "boolean",
            "description": "Keep only reviews that include customer photos or videos.",
            "default": false
          },
          "verifiedPurchasersOnly": {
            "title": "✅ Only verified purchasers",
            "type": "boolean",
            "description": "Keep only reviews carrying the shop's verified-purchaser / verified-buyer badge.",
            "default": false
          },
          "includeSyndicated": {
            "title": "🔄 Include syndicated reviews",
            "type": "boolean",
            "description": "Many reviews are written on the brand's own site and shared to the shop. Keep them (default), or turn off to get only reviews written on this shop.",
            "default": true
          },
          "excludeIncentivized": {
            "title": "🎁 Exclude incentivized reviews",
            "type": "boolean",
            "description": "Drop reviews marked as written in exchange for a free product or sweepstakes entry.",
            "default": false
          },
          "includeAuthorNames": {
            "title": "👤 Include reviewer nicknames",
            "type": "boolean",
            "description": "Add the public nickname and location shown next to each review, question and answer.",
            "default": true
          },
          "onlyNewSinceLastRun": {
            "title": "🆕 Only new since last run",
            "type": "boolean",
            "description": "Monitoring mode: remembers the newest review and question of every product and, on the next run, outputs only what was posted since (one request per unchanged product). The first run outputs everything as the baseline.",
            "default": false
          },
          "stateKey": {
            "title": "🗝️ Monitor name",
            "type": "string",
            "description": "Name of the saved state. Leave empty to derive it from the products and filters; set it to share one baseline across runs whose input changes slightly."
          },
          "webhookUrl": {
            "title": "🪝 Webhook URL",
            "type": "string",
            "description": "In monitoring mode, POST the new reviews and questions as JSON to this URL."
          },
          "slackWebhookUrl": {
            "title": "💬 Slack webhook URL",
            "type": "string",
            "description": "In monitoring mode, post a short digest of new reviews to Slack."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord webhook URL",
            "type": "string",
            "description": "In monitoring mode, post a short digest of new reviews to Discord."
          },
          "telegramBotToken": {
            "title": "✈️ Telegram bot token",
            "type": "string",
            "description": "In monitoring mode, send the digest through this Telegram bot (with the chat ID below)."
          },
          "telegramChatId": {
            "title": "✈️ Telegram chat ID",
            "type": "string",
            "description": "Chat that receives the Telegram digest."
          },
          "readProductPages": {
            "title": "📄 Read product pages",
            "type": "boolean",
            "description": "Open each product URL to detect the review widget. Turn off to resolve from the link alone (faster; works for the built-in shops).",
            "default": true
          },
          "maxConcurrency": {
            "title": "⚡ Parallel products",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many products are processed at the same time.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy",
            "type": "object",
            "description": "Not needed: the review sources answer directly. Turn on only if your runs get blocked.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}