European Price Comparison - Compare Prices Across EU Engines avatar

European Price Comparison - Compare Prices Across EU Engines

Pricing

Pay per usage

Go to Apify Store
European Price Comparison - Compare Prices Across EU Engines

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

Pay per usage

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

European Price Comparison

Compare product prices across ten European price-comparison engines in a single run. This actor searches each engine in parallel, groups the results by EAN/GTIN barcode (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 10 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

  1. 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, or dyson v15.
  2. Optionally restrict the run to certain countries with the Countries field (for example ["AT", "CZ"]). Leave it empty to query every engine.
  3. 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.
  4. Run the actor. Each engine is queried in parallel, the results are grouped by EAN, and prices are converted to EUR.
  5. Open the dataset. Each row is one product with the prices found at every engine that carries it.

Input

FieldTypeDescription
searchQuerystringProduct to search for across all engines. Defaults to iphone 15.
countriesarrayOptional country filter (TR, PL, RO, AT, CZ, FR, BG, SE). Empty means all.
maxItemsPerSourceintegerMax products to fetch from each engine (1–100, default 10).
timeoutPerSourceSecsintegerMax seconds to wait for each engine (30–600, default 120).
proxyConfigurationobjectProxy 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"
}
FieldDescription
productNameCanonical product name from the most detailed source.
eanEAN/GTIN barcode used for matching, or null if name-matched.
lowestPriceEurLowest price across all sources, in EUR.
highestPriceEurHighest price across all sources, in EUR.
priceDifferencePercentage spread between highest and lowest EUR price.
sourceCountHow many engines carry this product.
pricesPer-source price entries with native currency and EUR conversion.
scrapedAtISO 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.