Most Nordic retailers reach for the price slider first. A product sinks on Prisjakt or PriceRunner, and the reflex is to shave a few percent off a margin that was already thin. I have sat next to people while they did it: drop five percent, refresh, wait. Nothing moves. The price was never the problem. The feed was.
Comparison engines don't shop, they read a file
Prisjakt (dominant in Sweden, international as PriceSpy) and PriceRunner (big in Sweden and Denmark, owned by Klarna since April 2022 for around €93M) never open your product page the way a shopper does. They ingest a file. XML or CSV, refreshed daily if you're serious about it. The title a buyer reads, the image they see, the category the product falls into, whether you even show up beside a competitor at all: every bit of that comes from a field in that file.
So the real question isn't "is my price the lowest." It's whether the engine understood the product well enough to place it right, match it to the correct listing, and show it in a way someone actually clicks. Data, all the way down. The same file also feeds marketplaces and Google Shopping, so getting it right pays off in more than one place.
And it bites harder here than almost anywhere, because Nordic shoppers genuinely live on these sites. This is where the decision gets made, and it gets made off a file. Feed quality is visibility. No ad budget buys you out of a broken one.
Where it breaks: GTIN, attributes, matching
Let me run one product through the whole thing. A running shoe, model Trail 220, seven sizes.
Matching.PriceRunner uses your EAN/GTIN to pin your offer to the right product page, the one where every seller sits side by side. No barcode, or the wrong one, and the engine can't attach you with any confidence. You become an orphan listing, or you just don't appear. Here's the part people miss. That shoe in seven sizes is seven rows in the feed, each needing its own EAN and its own SKU. Reuse one barcode across all seven (supplier data does this constantly) and the match breaks. Keeping that barcode-to-variant structure intact is exactly what makes merging supplier data into a golden record worth doing carefully.
Category.This is the single biggest reason offers get rejected, across every engine I've worked with. PriceSpy and Prisjakt need your category to land on theirtaxonomy, not the tree you built in your own shop. "Herrskor" in your backend means nothing to them unless it resolves to their node. Kelkoo will bin a product outright if the URL doesn't start with http:// or https://. Dumb, mechanical failures. And they pull products off the board without a peep.
Required fields.PriceSpy asks for nine mandatory fields: product ID, title (keep it under 150 characters), description, price with a currency code, availability, an image URL that's HTTPS and at least 500×500 px, product URL, brand, and that mapped category. PriceRunner wants around eight, including manufacturer, stock status and delivery time, with static image URLs, no timestamps, no HTML in the fields. Miss a single required field and the row doesn't publish. Nobody emails you about it while there's still time to fix it.
A quick gut check for the Trail 220 before it ever leaves your system:
- One unique EAN/GTIN per size, each tied to its own SKU. Seven rows, seven barcodes.
- Category mapped to the engine's taxonomy, not your shop's.
- Title under 150 characters, the real brand in the brand field.
- Image URL HTTPS, at least 500×500, static, no cache tokens hanging off the end.
- Price with currency and the right decimals. Any sale price genuinely below the regular one.
- Availability and delivery time actually filled in, not left blank.
None of it is glamorous. All of it decides whether you exist on the page.
The real question isn't whether your price is the lowest. It's whether the engine understood the product well enough to place it, match it, and show it.
The fix is upstream, not per-channel
The mistake I keep seeing is fixing this one platform at a time. Somebody hand-patches the Prisjakt feed, then does it again for PriceRunner, then again for CDON, and a week later it's stale because a supplier changed a barcode and nobody noticed. Nordic sellers run five to seven channels on average. Every error you leave in your data multiplies by the number of places it lands, which is exactly the case for guarding data quality at the gate rather than after the fact.
The fix is one clean, structured source that every feed is built from. Get the product right once, then let each channel pull from it in the exact shape that channel demands. That's where our days go at SyncRefine: reading whatever a supplier throws over the wall, filling the holes, mapping categories, and keeping the barcode-to-variant structure intact so the matching holds.
A word on how, because this is the honest part. AI does the heavy lifting: the enrichment, the category mapping, the localized descriptions across Swedish, Norwegian, Danish and Finnish. But it works with people, never on its own. Finnish alone justifies that. Different language family from the Scandinavian three, and models tuned for Swedish and Norwegian trip over it all the time, so a person stays in the loop. Your source data is never overwritten either. It's layered, one click back to the original, always. When a supplier's odd "Fleece" label or a mistyped EAN comes through, you want to see exactly what changed and undo it in a second. That is the same principle behind enriching product data with AI and writing and translating descriptions: the machine proposes, a person stays in the loop, and the source stays untouched.
The Prisjakt reminder nobody planned for
One more argument against leaning on a single engine. Prisjakt raised its fees at the start of 2026, a jump the CDON CEO pegged at around 20 percent, and a real merchant revolt followed. Inet, Cyberphoto, Jollyroom and CDON, among others, walked. The IPO planned for March 2026 got postponed. The lesson isn't "avoid Prisjakt." It's that your leverage lives in clean, portable product data you can aim at any channel on short notice, not in being tied to one whose economics can shift under you overnight.
So before you touch the price on your next slow seller, pull its feed row and read it the way the engine will. Does it carry its own GTIN? Does the category resolve to the engine's tree? Is the image actually reachable over HTTPS? Nine times out of ten, that's where the visibility went. What does your Trail 220 row actually say?
Tell us in half an hour how your product data travels today, from your suppliers all the way to the comparison engines, and we'll tell you honestly which required fields derive cleanly and which need real editing. If your data still lives in spreadsheets, start with from Excel chaos to a clean catalogue. Wondering whether you need a heavy system for any of this? See do I need a PIM. And if sharp product photos are part of your listing quality, there's optimising product images. To see how every source comes into one clean structure, look at the catalogue.

