{
  "openapi": "3.0.1",
  "info": {
    "title": "VseInstrumenti.ru Scraper",
    "description": "Scrape VseInstrumenti.ru - Russia's largest tools & equipment e-tailer. Discover product/category/brand URLs for free via the sitemap, search products, browse a category, or fetch full product details: price, discount, rating, reviews, images, specifications.",
    "version": "1.0",
    "x-build-id": "kQkuEfyRNL01gYv0j"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~vseinstrumenti-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-vseinstrumenti-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/crawlerbros~vseinstrumenti-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-vseinstrumenti-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/crawlerbros~vseinstrumenti-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-vseinstrumenti-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "discoverUrls",
              "search",
              "byCategory",
              "productDetails"
            ],
            "type": "string",
            "description": "What to fetch. `discoverUrls` scans the site's sitemap for product/category/brand URLs and needs no proxy in the common case (it automatically falls back to the residential proxy only if the free sitemap path gets blocked). The other three modes need the Russian residential proxy to bypass the site's anti-bot protection.",
            "default": "discoverUrls"
          },
          "discoverUrlType": {
            "title": "URL type to discover (mode=discoverUrls)",
            "enum": [
              "product",
              "category",
              "brand"
            ],
            "type": "string",
            "description": "Which kind of URL to pull from the sitemap.",
            "default": "product"
          },
          "discoverKeyword": {
            "title": "URL keyword filter (mode=discoverUrls)",
            "type": "string",
            "description": "Only keep discovered URLs containing this text (case-insensitive), e.g. `makita` or `drel`. Leave empty for no filter."
          },
          "searchQuery": {
            "title": "Search query (mode=search)",
            "type": "string",
            "description": "Free-text keyword search, e.g. `дрель`, `bosch`."
          },
          "categoryUrls": {
            "title": "Category or brand URLs (mode=byCategory)",
            "type": "array",
            "description": "Full VseInstrumenti.ru category or brand URLs to browse, e.g. `https://www.vseinstrumenti.ru/category/klejkaya-lenta-6535/` or `https://www.vseinstrumenti.ru/brand/makita-1/`. Use mode=discoverUrls to find more.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "productUrls": {
            "title": "Product URLs (mode=productDetails)",
            "type": "array",
            "description": "Full product page URLs (`https://www.vseinstrumenti.ru/product/...`). Bare numeric IDs are not supported for this site — use mode=discoverUrls to collect full URLs first.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort order (mode=search / byCategory)",
            "enum": [
              "",
              "popular",
              "priceAsc",
              "priceDesc",
              "rating",
              "discount",
              "new"
            ],
            "type": "string",
            "description": "How to sort results. Only applies to search and category browsing.",
            "default": ""
          },
          "minPrice": {
            "title": "Min price (RUB)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Drop products cheaper than this (in Russian rubles)."
          },
          "maxPrice": {
            "title": "Max price (RUB)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Drop products more expensive than this (in Russian rubles)."
          },
          "minRating": {
            "title": "Min rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Drop products rated below this (1-5 scale)."
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only emit products that currently have a discount applied.",
            "default": false
          },
          "includeReviews": {
            "title": "Include customer reviews (mode=productDetails)",
            "type": "boolean",
            "description": "When enabled, also visits each product's review page and attaches a `reviews` array (author, rating, date, text) to the record. Adds one extra page load per product.",
            "default": false
          },
          "maxReviews": {
            "title": "Max reviews per product (mode=productDetails)",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Only used when `includeReviews` is enabled. Caps how many reviews are attached per product.",
            "default": 10
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on emitted records.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Used by search / byCategory / productDetails modes (VseInstrumenti.ru blocks non-Russian IPs at the WAF with a ServicePipe rotate-image CAPTCHA — a Russian residential proxy is required for those). For mode=discoverUrls this is only used as an automatic fallback if the free sitemap path gets blocked.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "RU"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}