Skip to content
Prisjakt
Price comparison

Prisjakt feed for Shopify

Prisjakt is the Swedish flagship of the Schibsted price-comparison network: one product with thirteen local front ends, from prisjakt.nu and prisjakt.no through hintaopas.fi to pricespy.co.uk. One specification, one vocabulary and one required set serve them all; only the currency, language and market differ. Feedflock renders your Shopify catalog on a template written against the developer portal's own field pages and regenerates the file on your schedule, as often as every hour, on a stable public URL.

01 · ShopifyProduct in the catalog
Linen shirt SandNordlin · Men's shirtsSKU-2048 · S–XL
Price
549 kr
In stock
0 pcs
When out of stock
02 · prisjakt.xmlUpdated just now
<item>
<g:id>SKU-2048</g:id>
<g:item_group_id>8236409175213</g:item_group_id>
<g:title>Linen shirt Sand</g:title>
<g:description>Nordlin Linneskjorta Sand, en luftig linneskjorta med avslappnad passform, kort krage och bröstficka.</g:description>
<g:link>https://butik.example/products/linneskjorta-sand?variant=44718293450817</g:link>
<g:image_link>https://cdn.butik.example/img/linneskjorta-sand.jpg</g:image_link>
<g:availability>out_of_stock</g:availability>
<g:condition>new</g:condition>
<g:price>549.00 SEK</g:price>
<g:brand>Nordlin</g:brand>
<g:gtin>7350012345673</g:gtin>
<g:mpn>SKU-2048</g:mpn>
<g:google_product_category>Apparel &amp; Accessories &gt; Clothing &gt; Shirts &amp; Tops</g:google_product_category>
<g:product_type>Kläder &gt; Herrkläder &gt; Skjortor</g:product_type>
<g:size>M</g:size>
<g:size_system>eu</g:size_system>
<g:shipping_weight>0.30 kg</g:shipping_weight>
</item>
Category mapping

Your product types. The channel's categories.

The channel files offers under its own category tree. Feedflock suggests a category for each Shopify product type and you just confirm. One mapping covers every product of that type, including products you add later.

Full category path in the feed
One mapping per product type
Override per individual product
Shopify typeproducts
Channel category
Pánské košile
Catalog coverage79 %
−20% off compare-at
Productg:price (regular)g:sale_​price
Linen shirt Sand549.00 kr439.20 kr
Mug Fjord 350 ml169.00 kr135.20 kr
Backpack Ridge 28 l849.00 kr679.20 kr
Soy candle Les159.00 kr127.20 kr
Wool scarf Fjell329.00 kr263.20 kr
411.00 krsaved across these products
5 / 5products with an active g:sale_price
Sale prices

A sale offer is two prices, never one.

While a product is on sale, g:price carries the regular price and g:sale_price the discounted one, always lower, or the value is dropped. Feedflock derives both from Shopify's compare-at price, so the pair can never invert. And if you schedule the sale with g:sale_price_effective_date, both ends must fall within one year of today, or the sale price silently leaves the listing.

Feed health

Catch feed issues before Prisjakt does.

Before every generation Feedflock checks that every field the channel requires is filled, and, on templates verified against the channel's own spec, that the values fit its rules. Most problems are fixed with one click, without editing products in Shopify.

Feed quality · prisjakt.xml
73 / 100
To review: 4
Title without the manufacturer on 9 offersThe title is the single most important attribute for indexing, and the spec asks for the manufacturer name alongside the product name: “Nordlin Linneskjorta Sand”, not just “Linneskjorta Sand”.
Price not in “NN.NN SEK” form on 6 offersg:price is required and must be a dot-decimal number, a space and an uppercase ISO code, VAT included. A missing or invalid price drops the whole offer.
Availability written “in stock” on 5 offersg:availability is a closed underscored enum: in_stock, out_of_stock, preorder, backorder, download. The Google spelling with a space is an invalid value, and the offer is omitted.
GTIN with 11 digits on 7 variantsg:gtin must be exactly 8, 12, 13 or 14 digits with a correct check digit; 9, 10 and 11 digits are not GTIN lengths, and an invalid identifier is silently omitted.

Setup

Live in five steps

From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.

  1. Register with Prisjakt Business Center

    Every site of the network is run through the shared Prisjakt Business Center. That is where you add your feed URL as an offer feed, where the validation report lives, and where all shipping is configured.

  2. Install Feedflock

    Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API, and with Shopify Markets also your Swedish or Norwegian prices and translations.

  3. Pick the Prisjakt template

    One <item> per variant with the six required fields mapped from the start: SKU as g:id, brand + product name as g:title, the price as “549.00 SEK” with your shop's market currency appended, a variant deep link, availability from the underscored enum and condition new.

  4. Map categories and check identifiers

    Match your product types to the Google product taxonomy. Prisjakt has no tree of its own, and the numeric Google id is the preferred form. Fill GTIN and MPN; together with the title they are what indexes your offer onto the right product page.

  5. Paste the feed URL

    Copy the hosted URL into Business Center. Prisjakt reads it periodically (the frequency depends on your agreement), and Feedflock regenerates the file every hour on the same address, so each read sees current prices and stock.

    https://feedflock.appfleece.com/f/demo-prisjakt/prisjakt.xml

The feed

What the channel receives

prisjakt.xml
<item>
  <g:id>SKU-2048</g:id>
  <g:item_group_id>8236409175213</g:item_group_id>
  <g:title>Nordlin Linneskjorta Sand</g:title>
  <g:description>Nordlin Linneskjorta Sand, en luftig linneskjorta med avslappnad passform, kort krage och bröstficka.</g:description>
  <g:link>https://butik.example/products/linneskjorta-sand?variant=44718293450817</g:link>
  <g:image_link>https://cdn.butik.example/img/linneskjorta-sand.jpg</g:image_link>
  <g:availability>in_stock</g:availability>
  <g:condition>new</g:condition>
  <g:price>549.00 SEK</g:price>
  <g:brand>Nordlin</g:brand>
  <g:gtin>7350012345673</g:gtin>
  <g:mpn>SKU-2048</g:mpn>
  <g:google_product_category>Apparel &amp; Accessories &gt; Clothing &gt; Shirts &amp; Tops</g:google_product_category>
  <g:product_type>Kläder &gt; Herrkläder &gt; Skjortor</g:product_type>
  <g:size>M</g:size>
  <g:size_system>eu</g:size_system>
  <g:shipping_weight>0.30 kg</g:shipping_weight>
</item>
Live preview
Linen shirt Sand

Nordlin

Linen shirt Sand

549 kr

Feed fields

g:id

SKU-2048

g:item_group_id

8236409175213

g:title

Nordlin Linneskjorta Sand

g:description

Nordlin Linneskjorta Sand, en luftig linneskjorta med avslappnad passform, kort krage och bröstficka.

g:link

https://butik.example/products/linneskjorta-sand?variant=44718293450817

g:availability

in_stock

g:condition

new

g:price

549.00 SEK

g:brand

Nordlin

g:gtin

7350012345673

g:mpn

SKU-2048

g:google_product_category

Apparel & Accessories > Clothing > Shirts & Tops

g:product_type

Kläder > Herrkläder > Skjortor

g:size

M

g:size_system

eu

g:shipping_weight

0.30 kg

The channel

One network, thirteen local sites

Prisjakt is the Swedish original; the same product runs prisjakt.no, hintaopas.fi, pricespy.co.uk and nine more sites. One feed specification covers all of them; what changes is the currency, the language and the market.

Indexing runs on the title

Prisjakt indexes your offer by its title, helped by GTIN, MPN and brand, and a pj:prisjakt_id from a metafield overrides everything when you already know the product match. Get these right and your offer lands on the product page your competitors share.

Paid per click, nothing else

The network's pricing is cost per click: you pay for the clicks your offers generate, with rates that vary by product category, with no startup fee and no monthly subscription.

The feed

  • A template written against the developer portal's own field pages: the g: vocabulary for shared fields, the pj: namespace for prisjakt_id, member_price and affiliate_link, and the version 3.0 root
  • The six required fields mapped from the start: SKU as a permanent g:id, brand + product name as g:title, the price as “549.00 SEK”, a variant deep link, the underscored availability enum and condition new
  • The title defaults to the spec's own indexing form, manufacturer + product name, with title + variant a one-click switch where sizes and colours need separate offers
  • Sale offers carry the compare-at price in g:price and the current price in g:sale_price, derived from Shopify, so the pair can never invert and the sale price never exceeds the regular one
  • The price format, the five availability values, the GTIN lengths and the size_system rule are checked live while you edit mappings, before Prisjakt's validation report ever sees the file
  • Every variant its own <item> grouped by g:item_group_id, the variant weight as g:shipping_weight, and an hourly regeneration on a stable URL that Prisjakt polls

Deep dive

01

One feed format, thirteen markets

  • prisjakt.nu, prisjakt.no, hintaopas.fi, ledenicheur.fr, pricespy.co.uk and eight more: one spec, one namespace, one required set
  • The GLOBAL template sets no currency: it appends your shop's own ISO code into every price, so the feed matches whichever market you sell in
  • Prisjakt localises one feed per market; currency and language follow the site you list on
  • France is the single exception: there g:shipping and g:is_bundle are required in the feed itself
Technical details

Prisjakt runs its price-comparison network as one product with many local front ends. The spec itself says “PriceSpy” is a placeholder for your local site. The vocabulary of 42 fields, the six required ones and the namespace are identical on every site; the difference between prisjakt.nu and pricespy.co.uk is the shop's currency, language and market, not the format.

That is why the template is global: it appends your shop's own currency into g:price, so “549.00 SEK” for Sweden and the same catalog in NOK for Norway need no format change. With Shopify Markets, each market feed carries its own prices and translations. The one market that genuinely differs is France, where shipping and the bundle flag are required in the feed itself.

02

How Prisjakt reads your feed

  • One UTF-8 XML file on one URL. Prisjakt reads it periodically, on a schedule that depends on your agreement
  • No item cap published; a single file is recommended up to 250,000 offers, a delta setup above that
  • A feed that stays unreachable or empty gets auto-disabled until a human re-enables it
  • Dropping more than the safeguard share of offers (30% by default) aborts the whole import instead of shrinking the listing
Technical details

Delivery is a plain pull: you register the feed URL in Business Center as an offer feed, and Prisjakt reads it periodically. The frequency depends on the feed type and your agreement, with changes propagating within hours. Encodings are a closed list with UTF-8 recommended, and gzip or brotli is welcomed.

Two protections are worth knowing. A feed that stays unreachable or empty over an extended period is automatically disabled, and someone has to re-enable it after the fix. And a safeguard aborts any import that would remove more than 30% of your offers by default. A filter change that drops a third of the catalog shrinks nothing; it stops the whole run. Feedflock hosts the file on a stable URL and regenerates it every hour, so every read sees data at most an hour old.

03

Six required fields, silent omission for the rest

  • Required: g:id, g:title, g:price, g:link, g:availability, g:condition; any missing one omits the whole offer
  • Everything else is optional, including image_link, description and brand
  • An invalid optional value is silently omitted and only shows up in the Business Center validation report
  • Nothing is ever truncated: an over-long or malformed value drops the field
Technical details

The required set is exactly six fields: id, title, price, link, availability and condition. If any of them is missing, the whole offer is omitted. Everything else (even the image, the description and the brand) is optional, with the same sentence on every field page: omitting it may leave out functionality.

What makes this channel unforgiving is the failure mode. An invalid optional value is not rejected or corrected; it is omitted, the offer goes live without it, and the only place you ever see it is the validation report in Business Center. Nothing is truncated, so an over-long title or a malformed price loses the field entirely. Feedflock checks the declared formats live while you edit mappings, so the report has nothing to surprise you with.

04

Shipping lives in Business Center

  • The template sends no <g:shipping> block, because feed entries and Business Center services are never merged
  • One valid feed entry would ignore your entire Business Center shipping configuration
  • Free-above-an-order-value rules live in Business Center and are evaluated against the offer's current selling price
  • g:shipping_weight is sent: a service with a weight condition can only match an offer whose weight is known
Technical details

Shipping can come from two sources (the feed and Business Center), and the two are never combined: a single valid feed entry switches off your whole Business Center shipping configuration for that offer. The template therefore sends no <g:shipping> at all, and your shipping is built from the services you configure in Business Center, where free-delivery-above-X rules live and are recalculated against the offer's current selling price, so a sale can move an offer into free delivery automatically.

The one logistics field the template does send is g:shipping_weight, from the Shopify variant weight. It is not decoration: a Business Center service with a weight condition can only ever match an offer whose weight is known. If every service has one, an offer without a weight is published with no shipping information at all.

The takeaway

One URL, an hourly refresh and an XML offer that follows the Prisjakt field pages element for element: the required six always present, the optional ones checked before Business Center's validation report ever sees them. Your Shopify catalog stays the single source of truth for your listings across the whole Prisjakt network.

Claude · ChatGPT

Or set up your Prisjakt feed in chat

Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Prisjakt's own tree and tells you what is still missing. You approve every change.

feedflock · mcp

Create a Prisjakt feed for my store and map my categories.

I'll create it as a draft and show you each change before I make it.

FAQ

Periodically, from the URL you register in Business Center. The frequency depends on the feed type and your agreement, and changes propagate within hours. Feedflock regenerates the file every hour on the same address, so whatever the schedule, each read picks up current prices and stock.
The format is identical: one specification covers every site of the network. What differs is market data: Prisjakt localises one feed per market, so you run a feed per market with its own currency and language. The template appends your shop's own ISO currency into every price, and with Shopify Markets each market feed carries the right prices and translations. France is the only exception, requiring shipping and is_bundle in the feed.
A number, a space and an uppercase ISO 4217 code: “549.00 SEK”. At most two decimals with a dot separator, VAT included, no thousands separator, and zero is rejected. Shipping is never folded into the price. Feedflock's priceTemplate writes exactly this from your Shopify prices.
They stay in the feed, marked out_of_stock, one of the five underscored availability values. What you may not do is use out_of_stock to hide a product or to retire a discontinued one; that is what feed filters are for. Prisjakt treats availability as a stock state, not a delete switch.
Indexing runs on the title, helped by GTIN, MPN and brand. The usual causes are a title without the manufacturer name, a missing or malformed GTIN (exactly 8, 12, 13 or 14 digits, correct check digit), or no Google category. When you know the exact Prisjakt product, a pj:prisjakt_id metafield pins the match directly.
No, and deliberately so. A single <g:shipping> entry would switch off your entire Business Center shipping configuration for that offer, because the two sources are never merged. Shipping is configured in Business Center, including free-above-an-order-value rules; the template sends only g:shipping_weight, because a service with a weight condition cannot match an offer whose weight is unknown.

Get on every marketplace that matters this afternoon.

Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.

.myshopify.com