{
  "openapi": "3.0.1",
  "info": {
    "title": "Billiger.de Scraper",
    "description": "Scrape billiger.de, the German price comparison: lowest price, every shop offer with shipping and delivery, EAN, specs, test scores, 6 month price history and price rating. Search or categories, 11 filters, variants, price change monitoring. Fast, no proxy.",
    "version": "1.0",
    "x-build-id": "ajtoqWKOxLR7RGx7r"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/normdata~billiger-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-normdata-billiger-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/normdata~billiger-scraper/runs": {
      "post": {
        "operationId": "runs-sync-normdata-billiger-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/normdata~billiger-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-normdata-billiger-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": {
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many products in total (over every search and category). Leave empty for no limit. The Apify Free plan is always capped at 10."
          },
          "searchTerms": {
            "title": "Search",
            "type": "array",
            "description": "Search words, like \"iphone 17\", \"airpods pro\" or \"lego technic\". Words the site knows as a category (like \"kaffeemaschine\") open that category.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Category names in German, like \"Fernseher\", \"Notebooks\", \"Kaffeevollautomaten\" or \"Sneaker\", a category ID (4373) or a category link. Lists of more than 1,440 products (the most the site shows at once) are read in price slices, so every product is reached.",
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Product details (offers, EAN, specs, tests, price history)",
            "type": "boolean",
            "description": "Open every product page and add: every shop offer (shop, seller, price, shipping, total, delivery time, returns, shop rating, link), cheapest shop, EAN, color and size, all specs, test score and pros and cons, bestseller rank, used (B-Ware) offers, the 6 month daily price history with 30, 90 and 180 day lows, and the site's price rating (low, normal, high). One extra request per product, charged as an add-on only for rows saved with it."
          },
          "expandVariants": {
            "title": "One row per variant",
            "type": "boolean",
            "description": "Product families (like \"Apple iPhone 17\" with every color and storage) become one row per variant, each with its own price, offer count and link (and EAN, color and size with Product details). Without it, a family is one row with its lowest price."
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Only these brands, like \"Apple\", \"Samsung\" or \"Sony\".",
            "items": {
              "type": "string"
            }
          },
          "shops": {
            "title": "Shops",
            "type": "array",
            "description": "Only products sold by these shops, like \"amazon.de\", \"OTTO\", \"MediaMarkt\" or \"Cyberport\".",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (€)",
            "minimum": 0,
            "type": "number",
            "description": "Lowest price at least this much."
          },
          "maxPrice": {
            "title": "Maximum price (€)",
            "minimum": 0,
            "type": "number",
            "description": "Lowest price at most this much."
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only products rated at least this much by users (1 to 5)."
          },
          "minReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Only products with at least this many user reviews."
          },
          "minOffers": {
            "title": "Minimum offers",
            "minimum": 0,
            "type": "integer",
            "description": "Only products with at least this many shop offers."
          },
          "minDiscount": {
            "title": "Minimum discount (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only products with a price drop mark of at least this much (the site's \"- 24%\" badge)."
          },
          "onlyInStock": {
            "title": "Only available now",
            "type": "boolean",
            "description": "Only products a shop can deliver right away (\"sofort lieferbar\")."
          },
          "onlyDeals": {
            "title": "Only deals",
            "type": "boolean",
            "description": "Only products the site marks as deals (\"Deals & Schnäppchen\")."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "popularity",
              "price",
              "price_desc"
            ],
            "type": "string",
            "description": "Order of the results."
          },
          "onlyNew": {
            "title": "Only new products",
            "type": "boolean",
            "description": "Skip products saved by earlier runs with the same monitor name."
          },
          "onlyPriceChanges": {
            "title": "Only price changes",
            "type": "boolean",
            "description": "Save only products whose lowest price changed since the last run with the same monitor name (plus products not seen before), with the previous price and the change. The first run saves everything."
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Runs with the same name share their history. Use a different name for each schedule."
          },
          "startUrls": {
            "title": "Links",
            "type": "array",
            "description": "Category pages (https://www.billiger.de/show/kategorie/2060.htm, with any filters and sort set on the site), search pages (https://www.billiger.de/search?searchstring=airpods) or product pages (https://www.billiger.de/products/... or /baseproducts/...).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}