PriceRunner Competitor Price & Rating Monitor avatar

PriceRunner Competitor Price & Rating Monitor

Pricing

from $1.75 / 1,000 results

Go to Apify Store
PriceRunner Competitor Price & Rating Monitor

PriceRunner Competitor Price & Rating Monitor

Track what every merchant charges for a product. Search PriceRunner by keyword or monitor product IDs on a schedule, and get each seller's price, shipping, stock and delivery window, plus the min/max spread, rating, review count and full specs. UK, SE, DK and NO.

Pricing

from $1.75 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Track what every merchant charges for a product, not just the headline price. Search by keyword to discover competitors, or monitor product IDs on a schedule to watch prices move.

What you get

One row per product (recordType: PRODUCT):

GroupFields
ProductproductId, productName, productUrl, brandName, categoryName, categoryRank, imageUrl, condition, outOfStock
Headline pricelowestPriceAmount, cheapestOfferAmount, cheapestOfferMerchantId, merchantCount
Competitor spreadoffers[] — every merchant's priceAmount, shippingCostAmount, stockStatus, availability, deliveryMinDays/deliveryMaxDays, labels, gotoStoreUrl
Spread summaryofferCount, offerMinPriceValue, offerMaxPriceValue, offerSpreadValue, offerMinPriceInStockAmount
Merchantsmerchants[] — id, name, PriceRunner profile URL, rating, verification labels
ReputationratingAverage, ratingCount, reviewAverage, reviewCount
Specsspecifications — the full attribute table, flattened to "Group / Attribute": value

Plus a SEARCH_SUMMARY per query and an ERROR row per failed input, so every input maps to at least one row.

Measured on a real run: iphone 15 in the UK returned 25 products carrying 49–107 merchant offers each, with price spreads from £20.99 to £925.55.

Two entry points, one row shape

{ "searchQueries": ["iphone 15"], "includeOffers": true, "country": "UK" }
{ "productIds": ["3208336570", "3472630395"], "country": "UK" }

They are not modes — they are two ways of naming the same thing, and both produce identical PRODUCT rows. The normal workflow uses both: discover competitors by keyword once, then track those IDs on a schedule. productIds always fetches offers, since that is the whole point of tracking one.

Known limits — read before you buy

  • ~1,100 products per query. Upstream rejects a paging offset above 1,000 with offset must be less than 1000, so one query reaches at most 1,000 + one page. upstreamTotalHits routinely reports far more (7,942 for laptop), and the summary carries both numbers side by side plus a resultWindowShorterThanTotal flag. Split into narrower queries to go further.
  • Review text is not available. PriceRunner's public endpoints expose the rating average and count (4.25 from 3,692 ratings), not individual review bodies. This actor ships what exists rather than an empty column.
  • Four markets: UK, SE, DK, NO. Germany is deliberately absent — pricerunner.de answers 404 and redirects to klarna.com with no product data. Prices, merchants and stock all differ by market.
  • includeOffers costs 2 requests per product. Off by default. 25 products with offers = 52 requests.

How it works

No API key, no login, no browser. Two internal REST endpoints:

GET /{locale}/api/search-edge-rest/public/search/v6/{COUNTRY}
?q=…&facetsSize=10 → first 20 products + facets
GET /{locale}/api/search-edge-rest/public/search/v6/products/{COUNTRY}
?q=…&size=100&offset=… → subsequent pages
GET /{locale}/api/product-detail-edge-rest/public/product-detail/v0/initial/{COUNTRY}/{cat}/{id}
GET /{locale}/api/product-detail-edge-rest/public/product-detail/v0/offers/{COUNTRY}/{id}

The URL bar will not page this site. The search results page is infinite-scroll, and every plausible parameter — offset, page, p, from, start, skip, pageNumber, o — is silently ignored: HTTP 200 with the identical first 20 products every time. A scraper that trusted ?offset= would loop forever on page 1 and report success. The real endpoint came out of the route bundle, which names both fetchers literally.

WAF and TLS

None enforced. chrome124, chrome131, chrome136, firefox133, safari18_0 and chrome99_android all returned the full 1.6 MB document. The page does reference a Klarna bot-challenge script (__WAF_CHALLENGE_SCRIPT__owp.klarna.com/…/challenge.js), so the capability exists and simply is not being served — block detection stays in the client for the day that changes.

Datacenter proxy is the default, pinned to the selected country. That pin is a correctness setting, not an anti-blocking one: PriceRunner serves prices and merchant availability per market.

Policy

www.pricerunner.com/robots.txt names no AI crawler group at all — no ClaudeBot, anthropic-ai, GPTBot or CCBot — and /search, /results, /pl/ and /ri/ are allowed for User-agent: *.

Only public product and price listings are read. No login, no user data, no personal profiles.