{
  "openapi": "3.0.1",
  "info": {
    "title": "idealo Scraper — Prices, Shop Offers & Specs, 6 Countries",
    "description": "Scrape idealo price comparison in 6 countries (DE, AT, UK, FR, IT, ES): lowest price, offer count, cheapest shop, specs, rating and bestseller rank per product, plus brand, GTIN/EAN, variants and every shop's offer with item price, total and delivery. Paste category or product URLs, or search.",
    "version": "0.0",
    "x-build-id": "nvHPiG6AgKVFaTakQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~idealo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-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/memo23~idealo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-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/memo23~idealo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "idealo URLs to scrape. Category pages (e.g. https://www.idealo.de/preisvergleich/ProductCategory/19116F1827447.html or https://www.idealo.fr/cat/19116F1828062/smartphones.html) return one row per product. Product pages (e.g. https://www.idealo.de/preisvergleich/OffersOfProduct/207644441_-iphone-17-pro-apple.html, or /compare/, /prix/, /confronta-prezzi/, /precios/ on the other sites) return one full product row: brand, GTIN/EAN, price range, rating, variants with their GTINs, and the shop offers. The site is taken from each URL's domain. Leave empty to use Search query instead.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL",
                  "description": "An idealo category or product URL"
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Used only when Start URLs is empty. The keyword is matched through idealo's own search suggestions: a general term ('laptop', 'waschmaschine') scrapes the first 5 matching categories; a product term ('iphone 16') that matches only products scrapes those products as full product rows. Runs on the site picked in Country site."
          },
          "country": {
            "title": "Country site",
            "enum": [
              "DE",
              "AT",
              "UK",
              "FR",
              "IT",
              "ES"
            ],
            "type": "string",
            "description": "Which idealo site Search query runs on: DE = idealo.de, AT = idealo.at, UK = idealo.co.uk, FR = idealo.fr, IT = idealo.it, ES = idealo.es. Pasted Start URLs ignore this and use their own domain. Default DE.",
            "default": "DE"
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of rows to output across the whole run. Category pages hold 36 products each, so 100 results reads 3 pages. Default 100.",
            "default": 100
          },
          "maxPages": {
            "title": "Max pages per URL",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum category pages to read per start URL or resolved category (36 products per page). 0 = no page limit; the run still stops at Max results. Default 0.",
            "default": 0
          },
          "fetchOffers": {
            "title": "Fetch shop offers",
            "type": "boolean",
            "description": "Open each product's page and add its brand, GTIN/EAN, highest price, rating and variants, plus an offers array: each shop's name, item price, total price including shipping, delivery estimate, payment methods and offer position (up to 20 offers per product, idealo's default sort). Costs one extra request per product, so runs take longer. Product URLs always get this. On the free Apify plan only the first 3 rows include offers. Default off.",
            "default": false
          },
          "fetchMode": {
            "title": "Fetch mode",
            "enum": [
              "geonode",
              "unblocker"
            ],
            "type": "string",
            "description": "How pages are fetched past idealo's bot protection. 'geonode' (default) uses a scraping API that solves the challenge on its side and needs no proxy setup. 'unblocker' uses Apify's Unblocker proxy instead, configured in Proxy configuration. Switch only if the default starts failing.",
            "default": "geonode"
          },
          "geonodeProxyType": {
            "title": "Scraping API proxy type",
            "enum": [
              "datacenter",
              "residential"
            ],
            "type": "string",
            "description": "Only used when Fetch mode is 'geonode'. 'datacenter' (default) works for idealo; 'residential' is an alternative if datacenter requests start failing.",
            "default": "datacenter"
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Only used when Fetch mode is 'unblocker'. Defaults to the Apify UNBLOCKER proxy group. Plain datacenter and residential proxies are refused by idealo, so change this only if you know what you are doing."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}