{
  "openapi": "3.0.1",
  "info": {
    "title": "idealo Scraper: Prices, Offers, Reviews & Shops",
    "description": "Scrape idealo.de by EAN, link or keyword: every shop's offer with price, shipping and delivery, used and B-Ware offers, search and category results, product reviews, and shop profiles with contact details and reviews. Export to Excel, CSV or JSON.",
    "version": "0.0",
    "x-build-id": "vM5IFtpEbWny0RLBT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sourabhbgp~idealo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sourabhbgp-idealo-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/sourabhbgp~idealo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sourabhbgp-idealo-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/sourabhbgp~idealo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sourabhbgp-idealo-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": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "product",
              "search",
              "reviews",
              "shop"
            ],
            "type": "string",
            "description": "Pick what to scrape, then fill the section with the same name below. Other sections are ignored.",
            "default": "product"
          },
          "eans": {
            "title": "EANs / barcodes",
            "type": "array",
            "description": "One EAN, GTIN or UPC barcode per line (8, 12, 13 or 14 digits), for example 0195949821837. A product is returned when idealo lists that barcode for it (eanVerified true). When idealo opens a product that shows no barcode at all, it is returned with eanVerified false. A product showing a different barcode is reported as not found.",
            "items": {
              "type": "string",
              "pattern": "^\\s*(\\d{8}|\\d{12,14})\\s*$"
            }
          },
          "productUrls": {
            "title": "Product links or IDs",
            "type": "array",
            "description": "One idealo.de product link or product ID per line, for example https://www.idealo.de/preisvergleich/OffersOfProduct/204771161_-iphone-16-128gb-schwarz-apple.html or 204771161.",
            "items": {
              "type": "string",
              "pattern": "^\\s*(https?://(www\\.)?idealo\\.de/preisvergleich/OffersOfProduct/\\d{4,10}\\S*|\\d{4,10})\\s*$"
            }
          },
          "maxOffers": {
            "title": "Max offers per product",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop after this many new offers for each product, in idealo's own order (cheapest item price first). The same limit applies to used offers when they are on.",
            "default": 100
          },
          "includeUsedOffers": {
            "title": "Add used and B-Ware offers",
            "type": "boolean",
            "description": "Also add idealo's used, refurbished and B-Ware offers in their own list, with the condition grade. A few extra requests per product.",
            "default": false
          },
          "includeShopDetails": {
            "title": "Add shop details",
            "type": "boolean",
            "description": "Add each shop's address, contact, idealo partner year, payment methods, carriers, return policy and rating breakdown to its offers. One extra request per shop; shops are looked up once per run.",
            "default": false
          },
          "includeInternationalPrices": {
            "title": "Add international prices",
            "type": "boolean",
            "description": "Add the lowest price of the same product on idealo in Austria, Spain, France, Italy and the UK, in euros. One extra request per product.",
            "default": false
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "One keyword per line, as you would type it on idealo.de, for example kaffeevollautomat or iphone 16.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "idealo listing links",
            "type": "array",
            "description": "Category, search, brand or list pages from idealo.de (links with ProductCategory, MainSearchProductCategory, Hersteller or Liste), for example https://www.idealo.de/preisvergleich/ProductCategory/19116.html or https://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=akku. Filters already in the link are kept.",
            "items": {
              "type": "string",
              "pattern": "^\\s*https?://(www\\.)?idealo\\.de/preisvergleich/(ProductCategory|MainSearchProductCategory|Hersteller|Liste|OffersOfProduct)[/.]\\S*\\s*$"
            }
          },
          "maxResults": {
            "title": "Max results per search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many results for each keyword or link. idealo shows at most about 5,000 results for one search; split bigger ones with a price range.",
            "default": 100
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "RELEVANCE_DESC",
              "PRICE_ASC",
              "PRICE_DESC",
              "DISCOUNT_DESC",
              "CREATION_DATE_DESC",
              "BASE_PRICE_ASC"
            ],
            "type": "string",
            "description": "Order of the results. Cheapest unit price is offered on search and brand pages only; elsewhere idealo's own order is used.",
            "default": "RELEVANCE_DESC"
          },
          "includeDetails": {
            "title": "Add full product details",
            "type": "boolean",
            "description": "Also open each product found and add what Product mode returns: offers (up to the limit below), specs, pros and cons, review summary. A few extra requests per product.",
            "default": false
          },
          "detailsMaxOffers": {
            "title": "Max offers per product (with full details)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "With full product details on: stop after this many offers for each product, cheapest first.",
            "default": 20
          },
          "minPrice": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only results at or above this price."
          },
          "maxPrice": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only results at or below this price."
          },
          "excludeUsed": {
            "title": "Exclude used products",
            "type": "boolean",
            "description": "Leave out results that idealo lists as used only.",
            "default": false
          },
          "fastDeliveryOnly": {
            "title": "Fast delivery only",
            "type": "boolean",
            "description": "Only results idealo marks as quickly deliverable.",
            "default": false
          },
          "bargainsOnly": {
            "title": "Bargains only",
            "type": "boolean",
            "description": "Only results idealo marks as a bargain (price below its usual level).",
            "default": false
          },
          "reviewProductUrls": {
            "title": "Product links, IDs or EANs",
            "type": "array",
            "description": "One idealo.de product link, product ID (4 to 10 digits) or EAN barcode (8, 12, 13 or 14 digits; an 8-digit line is tried as a product ID first) per line, for example https://www.idealo.de/preisvergleich/OffersOfProduct/203554857.html, 203554857 or 0195949821837.",
            "items": {
              "type": "string",
              "pattern": "^\\s*(https?://(www\\.)?idealo\\.de/preisvergleich/OffersOfProduct/\\d{4,10}\\S*|\\d{4,10}|\\d{12,14})\\s*$"
            }
          },
          "maxReviews": {
            "title": "Max reviews per product",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many reviews for each product, newest first.",
            "default": 100
          },
          "reviewSource": {
            "title": "Review source",
            "enum": [
              "all",
              "idealo",
              "external"
            ],
            "type": "string",
            "description": "idealo shows two lists: reviews written on idealo (verified, often with pros and cons) and reviews imported from other shops such as Amazon or MediaMarkt (usually with a title). All merges both, newest first.",
            "default": "all"
          },
          "reviewsSince": {
            "title": "Only reviews since",
            "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Only reviews written on or after this date. Leave empty for all reviews."
          },
          "shopUrls": {
            "title": "Shop links or IDs",
            "type": "array",
            "description": "One idealo.de shop page link or shop ID per line, for example https://www.idealo.de/preisvergleich/Shop/26895.html or 26895. The shop link is behind the shop's name on any idealo offer.",
            "items": {
              "type": "string",
              "pattern": "^\\s*(https?://(www\\.)?idealo\\.de/preisvergleich/Shop/\\d{1,9}\\S*|\\d{1,9})\\s*$"
            }
          },
          "maxShopReviews": {
            "title": "Max shop reviews per shop",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Shop reviews to add after each profile row. Use 0 to get only the profile.",
            "default": 100
          },
          "shopReviewSort": {
            "title": "Shop review order",
            "enum": [
              "newest",
              "oldest"
            ],
            "type": "string",
            "description": "Newest or oldest shop reviews first.",
            "default": "newest"
          },
          "includeShopContact": {
            "title": "Add contact details",
            "type": "boolean",
            "description": "Add the shop's email, phone, idealo partner year and return policy, read from the shop info box of one of its offers. For shops whose page shows no address it also fills the address. A few extra requests per shop.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Usually not needed. The scraper uses Apify Proxy and changes IPs by itself when idealo blocks one.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}