{
  "openapi": "3.0.1",
  "info": {
    "title": "Wildberries SKU Enrichment: Composition, Rating, Reviews",
    "description": "Composition, net weight, variants, rating and public reviews for Wildberries article numbers from openly served endpoints. Pet food fields included. Price and stock available via an optional antibot gateway. Fast and cheap by default; the actor itself runs no browser.",
    "version": "0.4",
    "x-build-id": "FfJI814i9Uq9i2BIn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sergeyfaraday~wildberries-sku-enrichment/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sergeyfaraday-wildberries-sku-enrichment",
        "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/sergeyfaraday~wildberries-sku-enrichment/runs": {
      "post": {
        "operationId": "runs-sync-sergeyfaraday-wildberries-sku-enrichment",
        "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/sergeyfaraday~wildberries-sku-enrichment/run-sync": {
      "post": {
        "operationId": "run-sync-sergeyfaraday-wildberries-sku-enrichment",
        "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",
        "required": [
          "nmIds"
        ],
        "properties": {
          "nmIds": {
            "title": "nmIds (article numbers) or product URLs",
            "type": "array",
            "description": "Article numbers or product URLs. Each id ends with exactly one outcome: a product row, or an object_state row saying what is known (not_found, not_returned, unavailable, blocked, not_attempted).",
            "items": {
              "type": "string"
            }
          },
          "includeRating": {
            "title": "Rating aggregate",
            "type": "boolean",
            "description": "Fetch rating and review count from the public feedback endpoint (one request per card group).",
            "default": true
          },
          "includeReviews": {
            "title": "Reviews",
            "type": "boolean",
            "description": "Emit review rows (no buyer names). The public endpoint serves a subset, about 1000 newest rows per card group at most; the manifest reports per requested SKU what was seen and returned.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Newest rows kept per requested SKU, or per card group with review scope \"group\".",
            "default": 100
          },
          "reviewScope": {
            "title": "Review scope",
            "enum": [
              "sku",
              "group"
            ],
            "type": "string",
            "description": "Wildberries serves one review list per card group, for all its variants. \"sku\" delivers each requested SKU its own rows. \"group\" delivers the newest rows of the group once, whatever variant they belong to.",
            "default": "sku"
          },
          "reviewsSince": {
            "title": "Reviews since",
            "type": "string",
            "description": "Incremental mode: skip reviews created before this moment. The boundary is inclusive and is compared with the review creation time. A date without a time is UTC midnight."
          },
          "deepBasketScan": {
            "title": "Deep CDN scan",
            "type": "boolean",
            "description": "When a card is not in the window of CDN hosts around the expected one, check the other live hosts before reporting it. Without a full scan a missing card is reported as not_returned, never as not_found.",
            "default": true
          },
          "maxDeepScans": {
            "title": "Max deep scans per run",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "A deep scan costs up to about 55 extra requests per missing id. Ids past this limit are reported as not_returned.",
            "default": 10
          },
          "antibotGatewayUrl": {
            "title": "Antibot gateway URL",
            "type": "string",
            "description": "Optional. Base URL of an antibot gateway that solves the wbaas JS challenge. When set together with the gateway API key, price and stock are fetched from card.wb.ru through the gateway. Without it, price and stock stay null with a reason (the open CDN does not serve them). The gateway is a separate service, not part of this actor."
          },
          "antibotApiKey": {
            "title": "Antibot gateway API key",
            "type": "string",
            "description": "Bearer token for the antibot gateway. Required when a gateway URL is set."
          },
          "snapshotId": {
            "title": "Snapshot ID",
            "type": "string",
            "description": "Your id for this snapshot, one per task of one actor. Rows get recordKey = platform:type:id:snapshotId, so a repeat with the same snapshotId gives the same keys, and a new id gives a new observation. A repeat reads the source again: compare provenance.contentChecksum to see whether the values moved. Default: <actor>.<runId>."
          },
          "queryId": {
            "title": "Query profile ID",
            "type": "string",
            "description": "Your search profile id, copied into provenance.queryId."
          },
          "queryVersion": {
            "title": "Query profile version",
            "type": "string",
            "description": "Search profile version, copied into provenance.queryVersion."
          },
          "panelId": {
            "title": "Panel ID",
            "type": "string",
            "description": "Fixed panel id for refresh runs, copied into provenance.panelId."
          },
          "panelVersion": {
            "title": "Panel version",
            "type": "string",
            "description": "Panel composition version; a new composition must get a new version."
          },
          "maxItems": {
            "title": "Max records",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on dataset rows for this run. Separate from the run money cap (maxTotalChargeUsd), which is set on the run itself."
          },
          "maxRunSeconds": {
            "title": "Soft time budget (s)",
            "minimum": 30,
            "type": "integer",
            "description": "Stop starting new units this many seconds after the run started and finish with a partial manifest. The budget belongs to the run: a restart does not renew it, and the time between workers counts."
          },
          "keepRaw": {
            "title": "Keep raw upstream item",
            "type": "boolean",
            "description": "Store the raw upstream item in `raw`. Off by default. provenance.rawChecksum is present on rows built from a raw item; it is null on a state row with no answer behind it and on derived rows.",
            "default": false
          },
          "failOnPartial": {
            "title": "Fail run on partial",
            "type": "boolean",
            "description": "By default a partial result finishes as SUCCEEDED with status=partial in the MANIFEST record. Failed and blocked always finish as FAILED.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy for upstream requests. Not needed for the open CDN in tests; keep off unless WB rate-limits the datacenter IP.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}