{
  "openapi": "3.0.1",
  "info": {
    "title": "Planeo.cz Scraper: Prices, Discount Codes & EAN",
    "description": "Scrape Planeo.cz (Czech electronics & appliances chain) by category, search, product code, EAN or URL: price, price before discount, discount codes, stock per store in 100+ stores, delivery date, energy class, EAN and parameters. Site filters, monitoring mode. Unofficial.",
    "version": "0.0",
    "x-build-id": "1zKDfTN7dbayafH5K"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tsutseisoftware~planeo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tsutseisoftware-planeo-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~planeo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tsutseisoftware-planeo-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~planeo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tsutseisoftware-planeo-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 or product URLs",
            "type": "array",
            "description": "Planeo.cz category URLs (e.g. https://www.planeo.cz/televize), product URLs (e.g. https://www.planeo.cz/tcl-65c69k) or search URLs (e.g. https://www.planeo.cz/vyhledavani?q=samsung). Tip: set filters and sorting on the website and paste the URL (e.g. …/televize?znacka=samsung&sort=PRICE_ASC); the actor keeps them.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "Optional. Searched with the website's own search, in its order (e.g. \"lg oled\", \"iphone 17\"). Up to 10 terms per run; \"Max pages per search\" limits each. Sorting by price works for searches too.",
            "items": {
              "type": "string"
            }
          },
          "productCodes": {
            "title": "Product codes",
            "type": "array",
            "description": "Optional. Planeo product codes (the number after \"ID:\" on the product page, the end of the id field, e.g. 35063830). Each is looked up with the website's search; only an exact code match is returned.",
            "items": {
              "type": "string"
            }
          },
          "eans": {
            "title": "EANs",
            "type": "array",
            "description": "Optional. EAN barcodes (check digit verified). The website's search finds the product and the product page confirms the EAN (one product page per EAN, so EAN and parameters are included). Up to 500 codes and EANs per run.",
            "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 URL",
            "minimum": 0,
            "type": "integer",
            "description": "Limit for each start URL separately, so one large category doesn't use up the whole Max products. 0 = no limit.",
            "default": 0
          },
          "includeDetails": {
            "title": "Add EAN and parameters",
            "type": "boolean",
            "description": "Open each product page to add the EAN (barcode), the technical parameters and the exact rating. Slower: one extra request per product.",
            "default": false
          },
          "includeDescription": {
            "title": "Add a short description excerpt",
            "type": "boolean",
            "description": "Add the first ~200 characters of the product description (\"Description length\" allows up to 1 000). Reads the product page (like \"Add EAN and parameters\"), so it is slower.",
            "default": false
          },
          "descriptionMaxLength": {
            "title": "Description length",
            "minimum": 50,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum characters of the description excerpt (with \"Add a short description excerpt\"). Default 200; up to 1 000.",
            "default": 200
          },
          "includeStoreAvailability": {
            "title": "Add stock per store",
            "type": "boolean",
            "description": "Stock in each of the ~100 PLANEO stores as the website's \"availability in stores\" window shows it: store, address, region, pieces, pickup time. One extra request per product (none for products sold online only).",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recommended",
              "bestsellers",
              "cheapest",
              "mostExpensive",
              "bestRated"
            ],
            "type": "string",
            "description": "Order of products, as on the website. Sorting is done by the shop, so it's free and fast.",
            "default": "recommended"
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Only these brands, e.g. 'Samsung', 'LG'. Case doesn't matter.",
            "items": {
              "type": "string"
            }
          },
          "siteAvailability": {
            "title": "Available",
            "type": "array",
            "description": "Only products that ship now from the e-shop and/or are available in a store, as in the website's filter.",
            "items": {
              "type": "string",
              "enum": [
                "in_stock_online",
                "in_store"
              ],
              "enumTitles": [
                "Ready for shipment (Ihned k odeslání)",
                "In a store (Na prodejně)"
              ]
            }
          },
          "stores": {
            "title": "Available in store",
            "type": "array",
            "description": "Only products in stock in these stores, e.g. 'Brno', 'PLANEO Plzeň'. A town selects all its stores. Several values = any of them. With searches or lookups the actor reads the stock per store to check it.",
            "items": {
              "type": "string"
            }
          },
          "labels": {
            "title": "Labels",
            "type": "array",
            "description": "Only products with these website labels (the 'Štítky' filter of the category), e.g. 'Sleva na další produkt'. With searches and lookups the actor checks the labels shown on the product tiles.",
            "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 or a list of values (any of them). Example for TVs: {\"Typ obrazovky\": [\"OLED\", \"QLED\"], \"Operační systém\": \"Google TV\", \"Rozlišení\": \"4K\"}. 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 in stock for shipping (in the central warehouse). Store-only products are skipped.",
            "default": false
          },
          "availability": {
            "title": "Availability",
            "type": "array",
            "description": "Keep only products with these availability states.",
            "items": {
              "type": "string",
              "enum": [
                "in_stock",
                "in_store_only",
                "on_order",
                "preorder",
                "out_of_stock",
                "unknown"
              ],
              "enumTitles": [
                "In stock",
                "Store pickup only",
                "On order",
                "Pre-order",
                "Out of stock",
                "Unknown"
              ]
            }
          },
          "onlyDiscounted": {
            "title": "Only discounted products",
            "type": "boolean",
            "description": "Keep only products shown with a crossed-out price and 'Ušetříte' (you save).",
            "default": false
          },
          "minDiscountPercent": {
            "title": "Min discount (%)",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "Keep only products discounted by at least this many percent (as shown by the shop)."
          },
          "onlyWithCoupon": {
            "title": "Only products with a discount code",
            "type": "boolean",
            "description": "Keep only products with a cheaper price with a discount code ('Koupit s kuponem'). 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. Tip: combine with Sort by: Cheapest first."
          },
          "excludeBrands": {
            "title": "Exclude brands",
            "type": "array",
            "description": "Skip products of these brands, e.g. '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'.",
            "items": {
              "type": "string"
            }
          },
          "excludeNameKeywords": {
            "title": "Name must not contain",
            "type": "array",
            "description": "Skip products whose name contains any of these words, e.g. 'držák'.",
            "items": {
              "type": "string"
            }
          },
          "minRating": {
            "title": "Min rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep only products rated at least this (0–5 stars). Products without ratings are skipped when set."
          },
          "minReviewCount": {
            "title": "Min number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only products with at least this many ratings."
          },
          "energyClasses": {
            "title": "Energy classes",
            "type": "array",
            "description": "Only these energy classes (from the energy label in the listing, or the parameters with details).",
            "items": {
              "type": "string",
              "enum": [
                "A+++",
                "A++",
                "A+",
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            }
          },
          "onlyWithEan": {
            "title": "Only products with EAN",
            "type": "boolean",
            "description": "Skip products without an EAN (barcode). Reads the product pages (like \"Add EAN and parameters\").",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Monitoring: only new or changed products",
            "type": "boolean",
            "description": "Return only products that are new or whose price, availability, price before 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": "Adds rows with changeType \"removed\" for products that disappeared since the previous run (only after a run that read everything) and \"reappeared\" when they are back.",
            "default": false
          },
          "fastMode": {
            "title": "Fast mode (small extra charge)",
            "type": "boolean",
            "description": "Reads Planeo.cz about 4x faster: at most 120 requests per minute and 4 at a time instead of 30 per minute and 2 at a time. It stays polite: the moment the website answers \"too many requests\", \"service unavailable\", \"forbidden\", shows a challenge or slows down, the run switches back to the normal speed for the rest of the run; it waits when the website asks it to wait and never changes IP address to get around a limit. Extra charge \"Fast mode\" ($0.01 per 1 000 products, see the Pricing tab) only for products saved while the fast speed was on.",
            "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": 20,
            "type": "integer",
            "description": "Result pages (24 products each) read per search term. The website's search also lists loosely matching products further down.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed: Planeo.cz works without a proxy. You can use Apify Proxy or your own proxies if you prefer.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}