{
  "openapi": "3.0.1",
  "info": {
    "title": "Lidl Scraper",
    "description": "Scrape Lidl products and prices from 32 country sites: price, normal price, unit price, Lidl Plus price, discounts, stock, ratings, category and images. Full catalog or keyword search, with price-change monitoring.",
    "version": "1.0",
    "x-build-id": "GcoY8XLVOhhhUpAc1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parsebird~lidl-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parsebird-lidl-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/parsebird~lidl-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parsebird-lidl-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/parsebird~lidl-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parsebird-lidl-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": {
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Pick one or more Lidl country sites. Each product row is tagged with its country code. Germany, France, Poland, Spain, the Netherlands, Belgium, Czechia and Slovakia run full online shops; the other sites list their in-store weekly offers and assortment.",
            "items": {
              "type": "string",
              "enum": [
                "DE",
                "FR",
                "GB",
                "PL",
                "IT",
                "ES",
                "NL",
                "BE",
                "AT",
                "CH",
                "CZ",
                "SK",
                "HU",
                "PT",
                "IE",
                "XI",
                "SE",
                "DK",
                "FI",
                "BG",
                "RO",
                "HR",
                "SI",
                "GR",
                "CY",
                "MT",
                "LT",
                "LV",
                "EE",
                "RS",
                "LU",
                "US"
              ],
              "enumTitles": [
                "Germany (lidl.de)",
                "France (lidl.fr)",
                "United Kingdom (lidl.co.uk)",
                "Poland (lidl.pl)",
                "Italy (lidl.it)",
                "Spain (lidl.es)",
                "Netherlands (lidl.nl)",
                "Belgium (lidl.be)",
                "Austria (lidl.at)",
                "Switzerland (lidl.ch)",
                "Czechia (lidl.cz)",
                "Slovakia (lidl.sk)",
                "Hungary (lidl.hu)",
                "Portugal (lidl.pt)",
                "Ireland (lidl.ie)",
                "Northern Ireland (lidl-ni.co.uk)",
                "Sweden (lidl.se)",
                "Denmark (lidl.dk)",
                "Finland (lidl.fi)",
                "Bulgaria (lidl.bg)",
                "Romania (lidl.ro)",
                "Croatia (lidl.hr)",
                "Slovenia (lidl.si)",
                "Greece (lidl-hellas.gr)",
                "Cyprus (lidl.com.cy)",
                "Malta (lidl.com.mt)",
                "Lithuania (lidl.lt)",
                "Latvia (lidl.lv)",
                "Estonia (lidl.ee)",
                "Serbia (lidl.rs)",
                "Luxembourg (lidl.lu)",
                "United States (lidl.com)"
              ]
            },
            "default": [
              "DE"
            ]
          },
          "query": {
            "title": "Search keyword",
            "type": "string",
            "description": "Search product names and brands, in the site's language, such as <code>milch</code>, <code>kaffee</code> or <code>parkside</code>. Leave empty to scrape the whole catalog of each country."
          },
          "maxResults": {
            "title": "Max products per country",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum products to save from each country. Use <code>0</code> for no limit (a full catalog is a few hundred to about 13,000 products). In incremental mode this limits how many changed products one run outputs per country; the rest follow in the next runs.",
            "default": 200
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Only return products from this category, in the site's language, such as <code>Essen &amp; Trinken</code> on lidl.de or <code>Food &amp; Drink</code> on lidl.co.uk. A main category or one level below works by name; use a path like <code>Essen &amp; Trinken/Wein, Bier &amp; Spirituosen</code> to go deeper. Unknown names are reported in the log with the main categories of that site."
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Only return products from these brands, such as <code>PARKSIDE</code> or <code>SILVERCREST</code>. Several brands are combined with OR.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "number",
            "description": "Only return products at or above this price, in the country's currency."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "Only return products at or below this price, in the country's currency."
          },
          "onlyOffers": {
            "title": "Offers only",
            "type": "boolean",
            "description": "Only return products with a current discount (a struck-through normal price or recommended retail price).",
            "default": false
          },
          "inStockOnly": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Leave out products flagged as sold out online.",
            "default": false
          },
          "newOnly": {
            "title": "New products only",
            "type": "boolean",
            "description": "Only return products the site marks as new. Sites that don't flag new products (lidl.com in the US) are skipped when this is on.",
            "default": false
          },
          "assortment": {
            "title": "Sales channel",
            "enum": [
              "all",
              "store",
              "online"
            ],
            "type": "string",
            "description": "Keep only products sold in Lidl stores (now or in an announced in-store week), or only products orderable in the online shop. Most country sites outside DE, FR, PL, ES, NL, BE, CZ and SK list store products only.",
            "default": "all"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "newest",
              "rating",
              "bestseller",
              "discount"
            ],
            "type": "string",
            "description": "Order in which products are read. It decides which products you get when Max products cuts the list short.",
            "default": "relevance"
          },
          "language": {
            "title": "Language",
            "enum": [
              "default",
              "fr",
              "it",
              "el",
              "nl",
              "de",
              "en"
            ],
            "type": "string",
            "description": "Language of names, categories and descriptions for multilingual sites: Belgium (Dutch or French), Switzerland (German, French or Italian) and Cyprus (English or Greek). Other countries always use their own language.",
            "default": "default"
          },
          "compact": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Keep only the shopping essentials: country, product ID, name, brand, price, normal price, unit price, currency, offer flag, discount, Lidl Plus price, stock, image and product link. Same number of rows, same price.",
            "default": false
          },
          "incrementalMode": {
            "title": "Incremental mode (price monitoring)",
            "type": "boolean",
            "description": "Read the whole selection and output only products that are NEW, UPDATED (price, offer, stock or unit price changed) or REAPPEARED since the previous run with the same state key. With an empty search keyword, products that disappeared can also be reported as EXPIRED. State is kept per country.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name of the saved state to compare against, such as <code>lidl-de-tracker</code>. Use a different key for each monitor. Leave empty to derive one from your search and filters."
          },
          "emitUnchanged": {
            "title": "Also output unchanged products",
            "type": "boolean",
            "description": "Also output products that did not change, with changeType UNCHANGED.",
            "default": false
          },
          "emitExpired": {
            "title": "Output expired products",
            "type": "boolean",
            "description": "Output products that were in the previous run but are gone now, with changeType EXPIRED. Only works when the search keyword is empty.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The actor works without a proxy and switches to Apify Proxy by itself if Lidl starts refusing requests.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}