Idealo.de - Prices, Offers, Specs & Reviews
Pricing
from $0.90 / 1,000 product results
Idealo.de - Prices, Offers, Specs & Reviews
Scrape Idealo.de products with identity details, GTIN, price ranges, specifications, images, rating breakdowns and customer reviews. Get the complete merchant offer list, including prices, seller details, and offer pros and cons. Search by keyword or paste product URLs.
Pricing
from $0.90 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
10
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
Idealo Scraper: Price Comparisons, Merchant Offers & Reviews
Idealo Scraper turns idealo.de, Germany's largest price-comparison site, into structured product data. Search by keyword or paste your own idealo.de links, and get each product's price range, full merchant offer list, technical specs, images and customer reviews, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.
Why This Scraper?
- Two ways to find products. Search by keyword, or paste your own idealo.de search-result, category or product links. No need to build URLs by hand.
- A real price range, not one merchant's discount. idealo.de compares merchants rather than selling directly, so a product with full detail fetched carries the low and high price actually offered right now, plus the number of merchants listing it.
- Full merchant offer comparison on demand. Switch on detail fetching and get every listed merchant's price, shipping cost and total for a product, not just the cheapest one.
- The category's own spec table. Technical specifications come back exactly as idealo.de exposes them for that product's category, not a fixed set of fields.
- Customer reviews with a rating breakdown. Overall rating, review count, the star-by-star histogram, and the individual reviews themselves.
- Handles pagination automatically. Point it at a whole category or a saved search and it walks the result pages for you, recognizing product links and listing links on its own.
- Clear failures, not silent gaps. If the site refuses every request, the run stops with a message telling you to retry, instead of quietly returning an empty dataset that looks like a real "no results" answer.
Use Cases
- Price monitoring and repricing: track a product's lowest offer, highest offer and merchant count over time to react to competitors.
- Comparison shopping and content sites: pull specs, images and price ranges to power your own product pages or comparison widgets.
- Market and assortment research: collect category or keyword results in bulk to see which merchants and brands show up for a given search term.
- Review and sentiment analysis: gather ratings and review text per product to spot quality issues or trending complaints.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
Every record is pushed as one flat JSON object. For a search or category link, with full detail fetching off, only the lean search-result fields are populated (id, url, title, lowPrice, previewImage, offerCount); the full merchant offers list, specs, reviews, description and complete image gallery all require detail fetching to be switched on. A pasted product link always fetches and returns the full record, regardless of the detail-fetching setting. idealo.de is a price-comparison site: it shows a range across merchant offers rather than one merchant's own "was" price, so this actor does not emit a strikethrough or list-price field; lowPrice, highPrice and the offers list are the accurate representation of what idealo.de actually shows.
| Field | Example |
|---|---|
id | "512345" |
url | idealo.de link to the product |
title | "Sample Product 128GB Black" |
brand | "Sample Brand" |
category | "Sample Category/Sample Subcategory" |
gtin | "0000000000000" |
lowPrice / highPrice | 199.00 / 249.90 |
currency | "EUR" |
offerCount | 7 |
rating / reviewCount | 4.3 / 128 |
reviewBreakdown | {"5": 80, "4": 30, "3": 10, "2": 5, "1": 3} |
previewImage | preview image link |
images | full image gallery (detail mode; lean mode carries only the preview image) |
description | the product's own description text, when idealo.de shows one |
specs | the full spec table for that category, as label/value pairs (detail mode) |
offers[].merchant / offers[].price | "Sample Shop" / 199.00 (detail mode) |
offers[].shipping / offers[].total | "kostenloser Versand" / 199.00 (detail mode) |
offers[].pros / offers[].cons | [] / [] (not currently populated) |
offers[].url | merchant redirect link (detail mode) |
reviews[].author / reviews[].date | "Jane D." / "01.01.2026" (detail mode) |
reviews[].text / reviews[].rating | the reviewer's own text / 5.0 (detail mode) |
How to Use
- Pick a mode: Direct URLs (paste your own idealo.de search-result, category or product links) or Search by keyword.
- Fill in the field for that mode,
urlsorsearchQuery, and switch on Fetch full product detail if you need merchant offers, specs, the full gallery or reviews. - Set Maximum items and Maximum pages to control run size and cost, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
Search by keyword:
{"mode": "search","searchQuery": "iphone 15","fetchDetails": true,"maxItems": 20}
A category page, with full detail:
{"mode": "url","urls": ["https://www.idealo.de/preisvergleich/ProductCategory/5292.html"],"fetchDetails": true,"maxItems": 20}
A single product page (always returns full detail):
{"mode": "url","urls": ["https://www.idealo.de/preisvergleich/OffersOfProduct/512345_-sample-product.html"]}
A wider keyword search across several result pages:
{"mode": "search","searchQuery": "waschmaschine","maxPages": 3,"maxItems": 100}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/idealo-de-price-comparison-scraper").call(run_input={"mode": "search", "searchQuery": "iphone 15", "fetchDetails": True, "maxItems": 20})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["title"], product["lowPrice"], product["offerCount"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/idealo-de-price-comparison-scraper').call({mode: 'search',searchQuery: 'iphone 15',fetchDetails: true,maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
How multiple URLs and pages combine
Each entry in URLs is handled on its own. A product link is fetched once as a single product, with its full detail always included. A search-result or category link is treated as a paginated listing: if the link already carries a page number, that page becomes the starting point, and the actor reads up to Maximum pages pages in total counting that starting page (leave it empty or 0 to walk every page). All entries share one Maximum items cap and the run stops as soon as it's reached.
No stored state between runs
This actor does not remember a previous run: each run scrapes independently from the inputs you give it. To collect only new or changed products on a schedule, run it periodically from the Schedules tab and compare each run's dataset against the previous one yourself, for example by id.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | url | search (find products by keyword) or url (use your own links). Fields belonging to the other mode are ignored. |
searchQuery | string | none (prefill: "iphone 15") | Keyword to search for. Search mode only. |
urls | array | none (prefill: sample category URL) | Your own idealo.de search-result, category or product links. URL mode only; if left empty in URL mode, the actor falls back to the built-in sample category URL. |
fetchDetails | boolean | true | Fetch the full product detail page: merchant offers, specs, full image gallery, description and reviews. Applies only to search-result and category links; off returns only their lean search-result fields. A pasted product link always returns full detail regardless of this setting. |
maxItems | integer | 10 | Stop after this many products across the whole run. |
maxPages | integer | none (empty or 0 walks every result page) | Maximum number of result pages to read per search or category entry. |
proxyConfiguration | object | none (prefill: Residential, Germany) | Only the country you set is used (Germany if left empty); the actor picks the connection tier itself. |
mcpConnectors | array | none | Optional: send a summary of each product to apps you authorized under Integrations. |
notionParentPageUrl | string | none | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. Does not affect the dataset. |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"id": "512345","url": "https://www.idealo.de/preisvergleich/OffersOfProduct/512345_-sample-product.html","title": "Sample Product 128GB Black","brand": "Sample Brand","category": "Sample Category/Sample Subcategory","gtin": "0000000000000","lowPrice": 199.00,"highPrice": 249.90,"currency": "EUR","offerCount": 7,"rating": 4.3,"reviewCount": 128,"reviewBreakdown": { "5": 80, "4": 30, "3": 10, "2": 5, "1": 3 },"previewImage": "https://cdn.example.com/512345.jpg","images": ["https://cdn.example.com/512345.jpg"],"description": "The product's own description text appears here when present.","specs": { "Sample Spec Label": "Sample value" },"offers": [{"merchant": "Sample Shop","price": 199.00,"priceFormatted": "199,00 €","shipping": "kostenloser Versand","total": 199.00,"totalFormatted": "199,00 €","pros": [],"cons": [],"url": "https://www.idealo.de/relocator/relocate?sample"}],"reviews": [{"author": "Jane D.","date": "01.01.2026","title": null,"text": "The reviewer's own text appears here.","rating": 5.0}]}
Plan Requirement
The default connection country is Germany. If a page is refused on every retry, the actor switches the rest of the run to a stronger connection tier, billed at a higher rate on your own Apify plan. On this site that is common, so keep Maximum items tight while testing.
FAQ
How much does it cost?
You pay per product returned, plus a separate detail-enrichment charge for every product that gets full detail: search and category results when Fetch full product detail is switched on, and pasted product links always, since those already return full detail regardless of that setting. There is also a one-time charge when the run starts. The Pricing tab shows the current rates. Use Maximum items to cap the cost of any run.
Is it legal to scrape idealo.de?
This actor collects only publicly available product and price information. You are responsible for how you use it: follow idealo.de's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product prices and specs are generally facts, but images and review text may be subject to third-party rights.
Can I run it on a schedule to catch new or changed products?
Yes, from the Schedules tab, but each run scrapes independently and does not remember what an earlier run returned. To find only new or changed products, compare consecutive runs' datasets yourself, for example by id.
Why did my URL mode run use the sample category page instead of my search?
mode decides which fields are used: URL mode reads only urls and ignores searchQuery, and search mode reads only searchQuery and ignores urls. If URL mode is selected and urls is left empty, the actor falls back to its built-in sample category link rather than failing the run.
Why did my run fail instead of returning an empty dataset?
If idealo.de refuses every request, the run stops with a clear message so a genuinely empty search (a keyword that matches nothing) is never confused with the site being unreachable. If any page could still be read, you get what was found; only a run that never reached the site raises an error. Retry it again in a few minutes.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push a summary of each product into Notion, Linear or Airtable.
🔗 Want more e-commerce data?
Pair this actor with these related scrapers from the same team:
| 👗 OTTO.de Scraper Scrape OTTO.de products by search or URL. Extract prices, discounts, variants... | 🔌 MediaMarkt Germany Scraper Scrape MediaMarkt.de products by keyword or URL. Extract current and original prices... |
| 🛒 OBI.de Scraper Scrape OBI (obi.de) DIY/home-improvement products: current + strike-through original... | 🛒 HORNBACH Products, Prices & Reviews Scraper Scrape HORNBACH (hornbach.de) DIY, building & garden products: current + strike-through... |
| 🥦 Kaufland.de Scraper Scrape Kaufland.de, Germany's hypermarket and online marketplace: keyword/category/brand... | 🚗 mobile.de From $0.8/1K. Scrape mobile.de vehicle listings with 30+ structured fields including... |
💬 Support & custom scrapers
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.