How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
airpods proin Search queries. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Idealo Price Scraper reads idealo price comparison pages and returns every shop offer for a product: shop, price, shipping, total price, delivery time, shop rating and shop link. It works on idealo.de, idealo.at, idealo.fr, idealo.it, idealo.es and idealo.co.uk.
- Search mode: you type keywords. The Actor takes the products from the first results page of each search, in idealo's order, and reads each product page.
- Products mode: you paste idealo product URLs or product IDs. The Actor reads exactly those products. URLs can come from different countries in one run.
Good for
- Watch the price of your products in several countries every day.
- See all shops that sell a product, with shipping and total price, not only the cheapest one.
- Find a product's GTIN/EAN, brand and category from a keyword.
Not a good fit
- Only the 6 idealo sites above. Other countries and other price comparison sites are not supported.
- Search mode reads only the first results page of each search. Single-shop offers without an idealo price comparison page are skipped.
- Up to 200 products and up to 200 offers per product in one run (20 offers per product by default).
- Prices are what idealo shows at the time of the run. Shops can change prices at any time.
- Used and refurbished offers are not in the offer list (idealo shows them separately).
Who uses it
Online shops
Watch your product prices against other shops every day.
Brands
Compare one product across several countries.
Catalog managers
Find GTIN, brand and category for products from a keyword.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Product with offers | $0.0045 (from $0.0038 on paid Apify plans) | One idealo product saved to the dataset with its first page of shop offers (up to 20). not_found and error rows are not charged as products. |
| Extra offer page | $0.0015 | One more page of up to 20 shop offers for a product (offers 21-40, 41-60, ...). Only when maxOffersPerProduct is above 20 and the page added offers. |
| Search query | $0.002 | One idealo search results page read, also when it lists no products. |
| Product not found | $0.002 | One product ID or URL checked that idealo does not have (not_found row). Invalid inputs and source errors are free. |
| Country site opened | $0.0045 | One idealo country site (idealo.de, .at, .fr, .it, .es or .co.uk) opened in the run, charged once per site after its first successful page read. Opening a site needs a real browser warm-up. |
| Start fee | $0.009 | Charged once per run, one fee per GB of memory. This tool uses 2 GB by default, so $0.018 per run. |
Examples
- One product: about $0.03.
- 1,000 products: about $4.61 (5 runs of up to 200).
- Every day 100 products, for 30 days: about $14.17 a month.
- 200 products once a week (4 runs a month): about $3.69 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 1,000 products.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Is this an official idealo tool?
No. It reads the public idealo pages.
Are used offers included?
No. Used and refurbished offers are not in the list.
Why do I get fewer offers than offerCount?
The tool saves 20 offers per product by default. You can raise it to 200.
Are prices up to date?
They are what idealo shows at run time. Shops can change prices at any time.
Do I need an idealo account or an API key?
No. The Actor reads the public idealo pages. No login, no API key.
Is the output the same as other idealo scrapers?
The prices, shops and product IDs are the same as on idealo, but field names are different (for example title, gtin and a nested offers list). If you move from another Actor, map the fields once.
Why are the rows not in the same order as my URLs?
In products mode the Actor reads all products of one idealo site, then the next site. This keeps the run fast and cheap. Use input to match rows with your list.
Details
Step by step on Apify
- Open the Input tab.
- Keep What to scrape =
Searchand the prefilled queryairpods pro. - Keep idealo site =
idealo.de (Germany)and Max products =10. - Click Start.
- Open the Output tab. The
Productsview shows one row per product; theAll offersview shows one row per shop offer.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Track prices of my product list | mode: products, productUrls | product row | bestPrice, offerCount, offers[].totalPrice | Schedule + Google Sheets or webhook |
| Compare shops for one product | productUrls, maxOffersPerProduct: 100 | offers | offers[].shop, price, shipping, availability | CSV / Excel export |
| Find products and EANs by keyword | mode: search, queries | product row | title, gtin, brand, category | API / JSON |
| Compare one product across countries | the same product ID as URLs on several idealo sites | product row per site | domain, currency, bestPrice | API / JSON |
Tips for better results
- Paste product URLs for exact products. Search reads only the first results page.
- Raise the offers per product from 20 if you need more shops.
- Mix URLs from different countries in one run to compare markets.
Limits and good to know
- Up to 20 search queries and 200 product URLs or IDs per run; at most 200 products saved
- Up to 200 offers per product
- Default timeout is 900 seconds; 200 products with 20 offers take about 5 minutes. With many offers per product (100+), raise the timeout in run options
- Memory is fixed at 2 GB (a real Chrome browser is used)
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"status": "complete",
"productId": "207671730",
"title": "Apple AirPods Pro 3",
"url": "https://www.idealo.de/preisvergleich/OffersOfProduct/207671730_-airpods-pro-3-apple.html",
"domain": "de",
"category": "Kopfhörer",
"categoryId": "2520",
"brand": "Apple",
"gtin": "0195950543650",
"currency": "EUR",
"bestPrice": 193,
"highestPrice": 281.95,
"offerCount": 57,
"offersReturned": 20,
"rating": 4.6,
"ratingCount": 10,
"offers": [
{
"position": 1,
"shop": "kaufland.de",
"shopId": "26895",
"marketplaceSeller": "pricerush",
"price": 193,
"shipping": 9.99,
"totalPrice": 202.99,
"currency": "EUR",
"availability": "Lieferung: bis Sa. 17.10.",
"shopRating": 4.5,
"shopRatingCount": 56444
}
],
"searchQuery": "airpods pro",
"searchPosition": 1,
"input": null,
"error": null,
"source": "idealo"
}Use it from code
Actor ID: cliqtomedia/idealo-price-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/idealo-price-scraper").call(run_input={
"mode": "search",
"queries": [
"airpods pro"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~idealo-price-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "search", "queries": ["airpods pro"]}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/idealo-price-scraper")
result = tool.invoke({"run_input": {"mode": "search", "queries": ["airpods pro"]}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (24)
| Field | Type | Meaning |
|---|---|---|
status | string | complete: product and requested offers read; partial: product read but some offers or fields missing (see error); not_found: no such product; error: invalid input entry. complete and partial rows are charged as products; a not_found row is charged as a cheaper product-not-found check; error rows are free. |
productId | string | idealo product ID, the same across countries. |
title | string | Product name. |
url | string | Product comparison page on idealo (or the input text for invalid entries). |
domain | string | idealo site the product was read from. |
category | string | Product category as named on that site. |
categoryId | string | idealo category ID. |
brand | string | Brand. |
gtin | string | GTIN/EAN when idealo lists one. |
imageUrl | string | Product image. |
currency | string | EUR or GBP. |
bestPrice | number | Lowest offer price on idealo (without shipping). |
highestPrice | number | Highest offer price on idealo. |
offerCount | integer | Total number of offers idealo lists for the product. |
offersReturned | integer | Number of offers in this row (up to maxOffersPerProduct). |
rating | number | Product rating on idealo (1–5 scale as shown); null when unrated. |
ratingCount | integer | Number of product ratings. |
offers | array | Shop offers in idealo default order. |
searchQuery | string | Search query that found the product (search mode). |
searchPosition | integer | Position among products on the first results page (search mode). |
input | string | Product URL or ID as given (products mode). |
error | string | Why the row is partial, not_found or error; null otherwise. |
source | string | Always "idealo". |
fetchedAt | string | When the product page was read (ISO 8601). |
Input settings (7)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| What to scrape | mode | string | "search" |
| Search queries | queries | array | ["airpods pro"] |
| Product URLs or IDs | productUrls | array | |
| idealo site | domain | string | "de" |
| Max products | maxItems | integer | 10 |
| Max offers per product | maxOffersPerProduct | integer | 20 |
| Proxy | proxyConfiguration | object | {"useApifyProxy": false} |
Use cases with this tool
Each guide shows all the steps and the other tools.



