{
  "openapi": "3.0.1",
  "info": {
    "title": "TSBOHEMIA.CZ Scraper: Prices, EAN, Discount Codes",
    "description": "Scrape TSBOHEMIA.CZ (Czech IT & electronics shop) by category, search, order code, EAN or URL: price, lowest price in 30 days, discount codes, e-shop and store availability, EAN, part number. Site filters, sorting, monitoring incl. removed products. Unofficial.",
    "version": "0.0",
    "x-build-id": "J90YLTkCqhEzaYRRc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tsutseisoftware~tsbohemia-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tsutseisoftware-tsbohemia-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/tsutseisoftware~tsbohemia-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tsutseisoftware-tsbohemia-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/tsutseisoftware~tsbohemia-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tsutseisoftware-tsbohemia-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": "Category, product or search URLs",
            "type": "array",
            "description": "TSBOHEMIA.CZ category URLs (e.g. https://www.tsbohemia.cz/televize_c5622), product URLs (…_d582529) or search URLs (https://www.tsbohemia.cz/search?query=…). Tip: set filters on the website and paste the URL including the part after # (e.g. …_c5622#brands=109&par-0-6399=Android); the actor applies them. Parent categories that only list subcategories are scraped through their subcategories.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchQueries": {
            "title": "Search",
            "maxItems": 10,
            "uniqueItems": true,
            "type": "array",
            "description": "Search terms, e.g. 'samsung qled', 'notebook lenovo' or a part number. Results come in the shop's relevance order. At most 10 terms per run; for large or scheduled runs prefer category URLs. To find exact products, use the order code, EAN or part number fields below.",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 100,
              "pattern": "[0-9A-Za-zÀ-ž].*[0-9A-Za-zÀ-ž]"
            }
          },
          "productCodes": {
            "title": "Order codes (Objednací kód)",
            "type": "array",
            "description": "Look up products by the shop's order code, the number after 'Objednací kód' on the product page (e.g. 198737). One product per code. Together with EANs and part numbers at most 200 per run. Codes that are not valid are skipped with a warning.",
            "items": {
              "type": "string"
            }
          },
          "eans": {
            "title": "EANs",
            "type": "array",
            "description": "Look up products by EAN barcode (8, 12, 13 or 14 digits, e.g. 8806097118541). The check digit is verified. All products with this EAN are returned (e.g. a product and its EU-version twin).",
            "items": {
              "type": "string"
            }
          },
          "partNumbers": {
            "title": "Part numbers (MPN)",
            "type": "array",
            "description": "Look up products by the manufacturer's part number (e.g. QE50Q7FA EU). Spaces, dots, dashes and case don't matter.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products saved. You pay per saved product. 0 = no limit.",
            "default": 100
          },
          "maxItemsPerStartUrl": {
            "title": "Max products per search or URL",
            "minimum": 0,
            "type": "integer",
            "description": "Limit for each search term and each start URL separately, so one large category doesn't use up the whole Max products. 0 = no limit.",
            "default": 0
          },
          "includeDetails": {
            "title": "Add specifications, warranty and images",
            "type": "boolean",
            "description": "Read each product's detail to add the technical parameters, warranty length, all product images and the exact category path. Slower: one extra request per product (the actor makes at most 12 requests per minute, 60 in fast mode).",
            "default": false
          },
          "includeDescription": {
            "title": "Add a short description excerpt",
            "type": "boolean",
            "description": "Add the first ~200 characters of the product description. Reads the product detail (like \"Add specifications, warranty and images\"), so it is slower.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recommended",
              "bestsellers",
              "cheapest",
              "mostExpensive",
              "biggestDiscount",
              "cheapestWithCode"
            ],
            "type": "string",
            "description": "Recommended and Best sellers are the shop's own order. The other options are sorted by the actor: it reads the whole listing (up to Max pages per category), applies the filters, sorts and saves the first Max products, so the run takes longer and costs more: each listing page read for sorting (24 products) is charged as a 'Sorting page' event (see Pricing). Cheapest incl. discount codes uses the lower of price and price with a code. Search results are sorted too."
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Only these brands, e.g. 'Samsung', 'LG'. Case doesn't matter.",
            "items": {
              "type": "string"
            }
          },
          "stores": {
            "title": "Available in store",
            "type": "array",
            "description": "Only products in stock in these places: 'e-shop' (ships now) and/or store names, e.g. 'Brno', 'Olomouc', 'Ostrava', 'Praha'. Several values = any of them.",
            "items": {
              "type": "string"
            }
          },
          "labels": {
            "title": "Labels",
            "type": "array",
            "description": "Only products with these website labels, e.g. 'Výprodej' (clearance: last pieces, used, sale), 'Poslední kusy', 'Rozbaleno zlevněno', 'Novinka', 'Předobjednávka'. Several values = any of them.",
            "items": {
              "type": "string"
            }
          },
          "parameterFilters": {
            "title": "Parameter filters",
            "type": "object",
            "description": "Filter by the category's parameters, as in the website's filter. Keys are parameter names, values are a value, a list of values (any of them), or {\"min\": number, \"max\": number} for numeric parameters. Example for TVs: {\"Úhlopříčka obrazovky\": [\"139 cm (55\\\")\", \"164 cm (65\\\")\"], \"Smart TV\": \"ano\", \"Hmotnost [kg]\": {\"max\": 15}}. Available names and values are listed in the log when a name isn't found."
          },
          "onlyInStock": {
            "title": "Only products in stock",
            "type": "boolean",
            "description": "Keep only products marked 'Skladem' (in stock in the e-shop or in a store).",
            "default": false
          },
          "availability": {
            "title": "Availability",
            "type": "array",
            "description": "Keep only products with these availability states.",
            "items": {
              "type": "string",
              "enum": [
                "in_stock",
                "on_order",
                "on_request",
                "preorder",
                "out_of_stock",
                "unknown"
              ],
              "enumTitles": [
                "In stock",
                "On order",
                "On request",
                "Pre-order",
                "Out of stock",
                "Unknown"
              ]
            }
          },
          "onlyDiscounted": {
            "title": "Only discounted products",
            "type": "boolean",
            "description": "Keep only products whose price is below the lowest price of the last 30 days (the website shows a % discount).",
            "default": false
          },
          "minDiscountPercent": {
            "title": "Min discount (%)",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "Keep only products discounted by at least this many percent against the 30-day low."
          },
          "onlyWithCoupon": {
            "title": "Only products with a discount code",
            "type": "boolean",
            "description": "Keep only products that have a cheaper price with a discount code ('s kódem'). The code is in couponCode.",
            "default": false
          },
          "minPrice": {
            "title": "Min price (CZK)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only products with price (incl. VAT) at least this."
          },
          "maxPrice": {
            "title": "Max price (CZK)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only products with price (incl. VAT) at most this."
          },
          "excludeBrands": {
            "title": "Exclude brands",
            "type": "array",
            "description": "Skip products of these brands, e.g. 'Hyundai', 'Sencor'. Case and diacritics don't matter.",
            "items": {
              "type": "string"
            }
          },
          "nameKeywords": {
            "title": "Name must contain",
            "type": "array",
            "description": "Keep only products whose name contains at least one of these words (case and diacritics don't matter), e.g. 'OLED', 'QLED'.",
            "items": {
              "type": "string"
            }
          },
          "excludeNameKeywords": {
            "title": "Name must not contain",
            "type": "array",
            "description": "Skip products whose name contains any of these words.",
            "items": {
              "type": "string"
            }
          },
          "excludeUsedOrOpenBox": {
            "title": "Exclude used and open-box products",
            "type": "boolean",
            "description": "Skip products labelled 'Použité' (used) or 'Rozbaleno zlevněno' (opened, discounted).",
            "default": false
          },
          "onlyWithEan": {
            "title": "Only products with EAN",
            "type": "boolean",
            "description": "Skip products without an EAN (barcode), e.g. for matching with other shops.",
            "default": false
          },
          "energyClasses": {
            "title": "Energy classes",
            "type": "array",
            "description": "Keep only products with these energy classes, e.g. 'A', 'B'. Products without an energy label are skipped when set.",
            "items": {
              "type": "string"
            }
          },
          "onlyNewOrChanged": {
            "title": "Monitoring: only new or changed products",
            "type": "boolean",
            "description": "Return only products that are new or whose price, availability, 30-day lowest price, discount or discount-code price changed since the previous run with the same Monitoring key. Unchanged products are free.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring: key",
            "type": "string",
            "description": "Name of the saved state. Use a different key for each tracked set of products (e.g. 'tv-daily').",
            "default": "default"
          },
          "onlyPriceChanges": {
            "title": "Monitoring: only price changes",
            "type": "boolean",
            "description": "With monitoring: return new products and products whose price changed, not availability-only changes.",
            "default": false
          },
          "minPriceDropPercent": {
            "title": "Monitoring: min price drop (%)",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "With monitoring: return only products whose price dropped by at least this many percent (price drop alerts)."
          },
          "includeRemovedProducts": {
            "title": "Monitoring: include removed products",
            "type": "boolean",
            "description": "With monitoring: also return products of the previous run that are no longer listed (changeType 'removed', with removedAt and the last known name, price and URL), and mark products that come back as 'reappeared'. Checked only after a run that read everything it was asked for. Removed rows are saved (and charged) like products.",
            "default": false
          },
          "fastMode": {
            "title": "Fast mode (small extra charge)",
            "type": "boolean",
            "description": "Up to 60 requests per minute (2 at a time) instead of 12 (1 at a time), about 5x faster. Costs a little extra per product saved at the fast speed (see Pricing). The run switches back to the normal speed for the rest of the run as soon as the site answers 'too many requests', 'forbidden', shows a challenge or slows down; products saved after that have no fast-mode charge.",
            "default": false
          },
          "maxPagesPerCategory": {
            "title": "Max pages per category",
            "minimum": 0,
            "type": "integer",
            "description": "Safety limit for each category (24 products per page). 0 = no limit.",
            "default": 50
          },
          "maxSearchPages": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many result pages (24 products each) to read for each search term. At most 5.",
            "default": 2
          },
          "includeSubcategories": {
            "title": "Include subcategories",
            "type": "boolean",
            "description": "When a URL is a parent category that only lists subcategories (e.g. 'Počítače a notebooky'), scrape its subcategories.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "TSBOHEMIA.CZ rejects requests from data-center IP addresses, so the default is Apify Proxy with residential IPs in the Czech Republic. You can also use your own Czech proxies.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "CZ"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}