{
  "openapi": "3.0.1",
  "info": {
    "title": "Wildberries Scraper: Products, Reviews, Niche & Resale",
    "description": "Scrape Wildberries — products, reviews, seller INN/OGRN, niche HHI, scheduled price/rank monitor with off-SERP flags, and C2C resale (condition + origin SKU). Live prices, stock, specs, weekly price history. One actor. JSON/CSV/Excel. No browser.",
    "version": "0.0",
    "x-build-id": "sLxvXPtSyt38Ux08f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~wildberries-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-wildberries-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/memo23~wildberries-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-wildberries-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/memo23~wildberries-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-wildberries-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "products",
              "reviews",
              "sellers",
              "niche",
              "monitor",
              "resale"
            ],
            "type": "string",
            "description": "What to scrape: product listings, reviews, seller profiles, niche concentration, scheduled price/rank monitor, or C2C resale.",
            "default": "products"
          },
          "queries": {
            "title": "Search queries (products)",
            "type": "array",
            "description": "Keyword searches, one per line — Russian or English, e.g. `iphone 15`, `кроссовки nike`. Products: listing search. Reviews: find products then scrape reviews. Sellers: discover sellers. Niche: one market-summary row per keyword. Monitor: rank those keywords. Resale: search Ресейл (leave empty to browse the whole C2C catalog).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Any wildberries.ru URLs — auto-classified. Products/niche: search (`?search=...`), category leaf (`/catalog/elektronika/smartfony-i-telefony/vse-smartfony`), brand (`/brands/apple`), seller (`/seller/12345`), or product (`/catalog/123456/detail.aspx`) URLs. Top-level containers like `/catalog/elektronika` are auto-resolved to the first listable leaf underneath. Reviews: product URLs. Sellers: seller URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "productIds": {
            "title": "Product IDs (артикулы)",
            "type": "array",
            "description": "Raw Wildberries product ids (nm / артикул), one per line, e.g. `1210207492`. Used by products, reviews, and monitor modes.",
            "items": {
              "type": "string"
            }
          },
          "scrapeProductDetails": {
            "title": "Scrape full product details",
            "type": "boolean",
            "description": "Fetch each product's full card: description, grouped specs, composition, contents, color-variant ids, weekly price history, seller legal identity, review aggregates (star histogram / photo-text-video counts), and Q&A. Slower — extra requests per product.",
            "default": false
          },
          "scrapeReviews": {
            "title": "Also scrape reviews (products mode)",
            "type": "boolean",
            "description": "Push review rows for every scraped product, capped by `maxReviewsPerProduct`. Review rows count toward Max items.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 1,
            "type": "integer",
            "description": "Cap on review rows per product (reviews mode and the scrapeReviews toggle).",
            "default": 50
          },
          "maxQuestionsPerProduct": {
            "title": "Max questions per product",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "How many Q&A items to attach on a product-detail row. Set 0 to skip questions. Only used with Scrape full product details.",
            "default": 20
          },
          "sellerIds": {
            "title": "Seller IDs (sellers mode)",
            "type": "array",
            "description": "Raw supplier ids, one per line, e.g. `250121764`. Sellers mode only.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "popular",
              "priceup",
              "pricedown",
              "newly",
              "rate",
              "benefit"
            ],
            "type": "string",
            "description": "Result order for search/category/brand/seller listings.",
            "default": "popular"
          },
          "lowPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only products at or above this price, in the selected currency's main unit (e.g. RUB). Leave empty for no lower bound."
          },
          "topPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only products at or below this price. Leave empty for no upper bound."
          },
          "discount": {
            "title": "Minimum discount (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep only products discounted by at least this percentage. Leave empty to include all."
          },
          "inStockOnly": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Drop products with zero stock for the chosen delivery city.",
            "default": false
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Products mode: drop products rated below this. Reviews mode: keep only reviews at or above this star rating."
          },
          "brand": {
            "title": "Brand contains",
            "type": "string",
            "description": "Keep only products whose brand name contains this text (case-insensitive)."
          },
          "maxRating": {
            "title": "Maximum review rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews at or below this star rating."
          },
          "reviewsWithTextOnly": {
            "title": "Reviews with text only",
            "type": "boolean",
            "description": "Skip rating-only reviews that have no text, pros, or cons.",
            "default": false
          },
          "reviewsWithPhotoOnly": {
            "title": "Reviews with photos only",
            "type": "boolean",
            "description": "Keep only reviews that include buyer photos.",
            "default": false
          },
          "dateFrom": {
            "title": "Reviews from date",
            "type": "string",
            "description": "Keep reviews created on or after this date (YYYY-MM-DD)."
          },
          "dateTo": {
            "title": "Reviews to date",
            "type": "string",
            "description": "Keep reviews created on or before this date (YYYY-MM-DD)."
          },
          "maxProductsPerSeller": {
            "title": "Max products scanned per seller",
            "minimum": 20,
            "maximum": 2000,
            "type": "integer",
            "description": "How many catalog products to scan per seller when computing stats. Higher is more accurate and slower.",
            "default": 200
          },
          "maxSellersPerSearch": {
            "title": "Max sellers per keyword",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Sellers mode: how many distinct sellers to profile from each search query.",
            "default": 25
          },
          "maxProductsPerNiche": {
            "title": "Products sampled per niche",
            "minimum": 50,
            "maximum": 2000,
            "type": "integer",
            "description": "How many listings to sample per keyword or category when computing HHI, price band, and top sellers.",
            "default": 300
          },
          "nicheTopN": {
            "title": "Top sellers / brands to keep",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many leading sellers and brands to include on each niche row.",
            "default": 5
          },
          "monitorStateName": {
            "title": "Monitor state store name",
            "type": "string",
            "description": "Named persistent key-value store. Use the same name on every scheduled run so price/rank changes can be compared. Default KV is per-run and will not persist.",
            "default": "wb-monitor-default"
          },
          "monitorOutput": {
            "title": "Monitor output",
            "enum": [
              "snapshot",
              "snapshot_with_changes",
              "changes_only"
            ],
            "type": "string",
            "description": "What to write to the dataset. Snapshot is current values only; snapshot with changes adds deltas vs the last run; changes only keeps rows that moved.",
            "default": "snapshot_with_changes"
          },
          "maxRankPages": {
            "title": "Max rank pages per keyword",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Monitor mode: how many search pages (100 products each) to scan per keyword when recording rank.",
            "default": 5
          },
          "targetNmIds": {
            "title": "Watch only these product IDs (optional)",
            "type": "array",
            "description": "Monitor mode: when ranking a keyword, keep only these артикулы. Leave empty to snapshot every product found on the scanned pages. Watched ids that drop off the scanned pages are still emitted with searchPosition null and isMissing true.",
            "items": {
              "type": "string"
            }
          },
          "resaleConditions": {
            "title": "Resale condition grades",
            "type": "array",
            "description": "Resale mode: keep only listings whose condition is one of these when Wildberries exposes it (New, Perfect, Good, Refurbished, Used, Has defects). Listings with no condition are dropped if this filter is set.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many dataset rows (all modes combined). You are only charged for rows actually delivered.",
            "default": 1000
          },
          "maxImages": {
            "title": "Max image URLs per product",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "How many full-size image URLs to include per product row. Set 0 to skip images.",
            "default": 5
          },
          "deliveryCity": {
            "title": "Delivery city",
            "enum": [
              "moscow",
              "saint_petersburg",
              "novosibirsk",
              "yekaterinburg",
              "kazan",
              "nizhny_novgorod",
              "chelyabinsk",
              "samara",
              "rostov_on_don",
              "ufa",
              "krasnoyarsk",
              "voronezh",
              "perm",
              "volgograd",
              "krasnodar",
              "saratov",
              "tyumen",
              "omsk"
            ],
            "type": "string",
            "description": "City used for localized prices, stock, and delivery times. Overridden only if you set a custom Destination id below.",
            "default": "moscow"
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "rub",
              "byn",
              "kzt",
              "amd",
              "uzs",
              "kgs"
            ],
            "type": "string",
            "description": "Currency for all price fields.",
            "default": "rub"
          },
          "dest": {
            "title": "Destination id (override)",
            "type": "string",
            "description": "Raw Wildberries dest id. Leave as `-1257786` (Moscow) unless you need a specific warehouse dest; the Delivery city picker is enough for most runs.",
            "default": "-1257786"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel product-processing slots (capped at 20).",
            "default": 10
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Traffic is direct-first and automatically fails over to a proxy if Wildberries rate-limits the datacenter IP. Set this only to force a specific proxy for the whole run."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}