European Price Comparison - Compare Prices Across EU Engines
Pricing
from $2.00 / 1,000 result scrapeds
European Price Comparison - Compare Prices Across EU Engines
Search 10 European price-comparison engines at once and compare prices for any product. Groups by EAN barcode, converts to EUR. No login or cookies required.
Pricing
from $2.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Share
European Price Comparison
Compare product prices across eight European price-comparison engines in a single run. This actor searches each engine in parallel, groups the results by product name (and by EAN/GTIN barcode where an engine exposes one — most do not) (with a fuzzy product-name fallback), and converts every price to EUR using live ECB rates so you can see the cheapest source across borders.
No login. No cookies. No account. You give it a product, it gives you a side-by-side comparison.
What it does
- Searches 8 European price engines at once: Akakçe (TR), Cimri (TR), Ceneo (PL), Compari (RO), Geizhals (AT), Heureka (CZ), Kelkoo (FR), Pazaruvaj (BG), PriceRunner (SE), Zboží (CZ).
- Matches the same product across engines by EAN barcode, then falls back to fuzzy name matching when no barcode is present.
- Converts all prices to EUR with live European Central Bank rates, so a Turkish lira price and a Polish złoty price are directly comparable.
- Returns the lowest price, highest price, and the percentage spread for each matched product.
- Sorts results so products found in the most engines appear first.
How to scrape European price comparison data
- Enter a product in the Search Query field. Use the brand and model for the best cross-engine matching, for example
iphone 15,sony wh-1000xm5, ordyson v15. - Optionally restrict the run to certain countries with the Countries field (for example
["AT", "CZ"]). Leave it empty to query every engine. - Set Max Items Per Source to control how many products are pulled from each engine. More items means more potential matches but a longer, costlier run.
- Run the actor. Each engine is queried in parallel, the results are grouped by EAN, and prices are converted to EUR.
- Open the dataset. Each row is one product with the prices found at every engine that carries it.
Input
| Field | Type | Description |
|---|---|---|
searchQuery | string | Product to search for across all engines. Defaults to iphone 15. |
countries | array | Optional country filter (TR, PL, RO, AT, CZ, FR, BG, SE). Empty means all. |
maxItemsPerSource | integer | Max products to fetch from each engine (1–100, default 10). |
timeoutPerSourceSecs | integer | Max seconds to wait for each engine (30–600, default 120). |
proxyConfiguration | object | Proxy settings passed to the underlying scrapers. Residential recommended. |
Example input
{"searchQuery": "sony wh-1000xm5","countries": ["AT", "CZ", "PL"],"maxItemsPerSource": 10,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Output
Each item in the dataset is one matched product:
{"productName": "Sony WH-1000XM5 Wireless Headphones","ean": "4548736141537","lowestPriceEur": 289.0,"highestPriceEur": 349.99,"priceDifference": "21.1%","sourceCount": 4,"prices": [{ "source": "Geizhals", "country": "AT", "price": 289.0, "currency": "EUR", "priceEur": 289.0, "url": "https://...", "inStock": true },{ "source": "Heureka", "country": "CZ", "price": 7290, "currency": "CZK", "priceEur": 291.6, "url": "https://...", "inStock": true }],"scrapedAt": "2026-06-15T18:00:00.000Z"}
| Field | Description |
|---|---|
productName | Canonical product name from the most detailed source. |
ean | EAN/GTIN barcode used for matching, or null if name-matched. |
lowestPriceEur | Lowest price across all sources, in EUR. |
highestPriceEur | Highest price across all sources, in EUR. |
priceDifference | Percentage spread between highest and lowest EUR price. |
sourceCount | How many engines carry this product. |
prices | Per-source price entries with native currency and EUR conversion. |
scrapedAt | ISO 8601 timestamp of the comparison. |
A final __SUMMARY__ item lists which sources answered, which failed, and the total number of comparisons.
How matching works
Products are grouped first by EAN/GTIN barcode, which is an exact identifier and the most reliable signal. Products without a barcode are matched to existing groups by name similarity (Jaccard word overlap, threshold 0.6) and otherwise start a new group. This keeps false merges low while still consolidating items that lack barcodes.
Currency conversion
Prices arrive in each engine's local currency. The actor fetches live EUR reference rates from the European Central Bank at the start of every run and converts each price to EUR for comparison. If the rate service is unreachable, it falls back to a built-in rate table so the run still completes. Native price and currency are always preserved alongside the EUR value.
Use cases
- Cross-border price monitoring for electronics and consumer goods.
- Finding the cheapest EU source for a specific product before buying.
- Feeding a price-intelligence dashboard with normalized, EUR-denominated data.
- Spotting arbitrage between countries where the same product sells at very different prices.
Notes
- This is a meta-actor. It orchestrates our individual country price-engine scrapers and runs them in parallel, so a single run can touch many sites at once.
- Results depend on each underlying engine carrying the product and returning it for your query. Generic queries match more broadly; specific brand+model queries match more accurately.
- Use residential proxies for the most reliable results, since some engines are sensitive to datacenter traffic.
Cost and performance
This actor charges $0.02 per run (start fee, based on its 4 GB memory allocation) plus $0.002 per result scraped. 100 results costs about $0.22; 1,000 results about $2.02. A run's usage cost only settles after it reports SUCCEEDED.
Tips and tricks
- Start small: test with
maxItemsPerSource: 5before running large scrapes. - Use proxies: residential proxies give the best success rates for European Price Comparison.
- Schedule runs: set up recurring runs to keep your data fresh automatically.
- Integrate via API: use the Apify API or client libraries to fetch results programmatically.
- No login required: this actor scrapes publicly available data without needing an account.
Limitations
- Data is scraped from the public website and may change without notice.
- Some products or listings may not be available in all regions.
- Very large scraping jobs may be slower due to proxy rotation and rate limiting.
- Respect the website's terms of service and use responsibly.
Features
- No login required — scrapes publicly available data from European Price Comparison without needing credentials or cookies.
- Structured output — results are returned as clean JSON objects, ready for processing.
- Proxy support — configurable proxy settings for reliable, large-scale scraping.
- Scheduled runs — run on a schedule to keep your dataset up to date automatically.
- API access — integrate results into your workflow using the Apify API or webhooks.
FAQ
Is it legal to scrape European Price Comparison? Web scraping of publicly available data is generally permitted. This actor only accesses information that is publicly visible to any website visitor. Always review the website's terms of service before scraping.
How ofeight should I run this scraper? For price monitoring or competitive intelligence, daily or weekly runs are common. Set up a schedule in Apify Console to automate this.
Can I export the data to Google Sheets or Excel? Yes. After each run, you can download results in CSV, JSON, or Excel format directly from Apify Console. You can also connect results to Google Sheets using Apify integrations.
What if the scraper stops working? Websites change their structure occasionally. If you notice issues, please open an issue on the actor's page. We actively maintain this scraper and fix issues promptly.
Pricing and cost
This actor charges its own start fee and a small per-result fee (the summary row included). The price-engine scrapers it launches each bill their own pricing to your account on top, exactly as if you ran them directly.
Matching honesty
Cross-engine matching is fuzzy name matching. sourceCount counts distinct engines carrying the product; rows with sourceCount: 1 are single-engine listings, not cross-border comparisons. Most engines do not expose EAN barcodes, so exact barcode matching is only possible where they do.