Price Battle Map avatar

Price Battle Map

Pricing

Pay per usage

Go to Apify Store
Price Battle Map

Price Battle Map

Shows where every brand sits on the shelf by price band: crowded bands, open bands, and the same model's price across shops. Reads retailer category pages or the results of other shop scrapers.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Easton Kim

Easton Kim

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

17 days ago

Last modified

Categories

Share

See where every brand sits on the shelf, by price band. Find the bands that are crowded, the bands nobody sells in, and the models that cost more in one shop than in another.

What it does

Give it a retailer's category page, or the results of shop scrapers from Apify Store. It reduces every listing to one model, puts each model in a price band, and returns:

  • A dataset: one row per shop and model, with brand, price, list price, coupon code and price band.
  • report.html: a price ladder chart. One row per price band, one coloured block per brand, open bands highlighted. Below it, the same model compared across shops, largest gaps first.
  • SUMMARY: the same result as JSON, ready for an AI agent or a spreadsheet.

Set Your brand and the report also lists the bands where rivals sell and you don't.

Example

Czech phone shelf, 3 to 4 October 2026: 118 models from three shops. Each square is one model, at its lowest shop price.

🟦 Samsung · ⬛ Xiaomi · 🟧 Apple · 🟩 Google · ⬜ other brands

70–75k 🟧🟧 2
65–70k OPEN
60–65k OPEN
55–60k 🟦 1
50–55k OPEN
45–50k 🟦🟦⬜ 3
40–45k 🟦🟦🟦🟧 4
35–40k 🟦🟧🟧⬜ 4
30–35k 🟦🟦🟦🟧🟧🟧🟩🟩⬜ 9
25–30k 🟦🟦🟦🟦🟦⬛🟧🟧🟧🟧🟩🟩 12
20–25k 🟦🟦🟦🟦⬛⬛🟧🟧🟧🟧🟩🟩⬜⬜ 14
15–20k 🟦🟦🟦🟦🟦🟦🟦🟦🟦⬛⬛🟧🟧🟩🟩🟩🟩⬜⬜⬜ 20
10–15k 🟦🟦🟦🟦🟦🟦🟦⬛⬛⬛⬛⬛🟩🟩🟩⬜⬜⬜⬜⬜ 20
5–10k 🟦🟦🟦🟦🟦🟦🟦🟦🟦⬛⬛⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜ 22
0–5k 🟦⬛⬛⬛⬛⬛⬜ 7

Three bands are open, and most of the shelf sits below 20,000 CZK. In report.html the same ladder is drawn as a colour chart, followed by the shop comparison:

Modelalza.czdatart.czmironet.czGap
Samsung Galaxy S26 Ultra 256GB34,01137,79027,99026%
Samsung Galaxy A57 256GB13,99015,99011,99025%
Apple iPhone 16 128GB22,99020,9909%

Why

Sales and pricing teams ask two questions before every launch: where is the gap, and who is undercutting us? Answering them usually means a person copying prices into a spreadsheet. This Actor does it in a minute and can run every week.

Two ways to feed it

  1. Category pages it reads itself. It uses the structured product data (schema.org) that shops publish for search engines, and has a built-in preset for mironet.cz.
  2. Results from other Actors. Run an Alza, Datart or other shop scraper from Apify Store, then pick its dataset under Results from other Actors. Product name, price, brand and coupon price are picked up automatically.

Both can be combined in one run.

Input

FieldWhat it is
Category pagesCategory URLs the Actor reads itself
Results from other ActorsDatasets from shop scrapers
Price band sizeWidth of a band, default 5,000
Ignore products cheaper thanRemoves accessories, default 3,000
Count colours as one modelFive colours count once, at the lowest price
Leave out unboxed and used itemsNew stock only, on by default
Your brandOptional. Shows the bands you are missing from

How models are matched

Shops name the same phone differently. "Mobilní telefon Samsung Galaxy S26 5G 12 GB / 256 GB (SM-S942B) černý" and "SAMSUNG Galaxy S26 5G 12+256GB černá" both become "Samsung Galaxy S26 256GB". Colour, RAM and network labels are dropped; brand, model and storage are kept.

Fair use

For category pages it identifies itself in the user agent, reads public pages only, waits between requests and does not use site search. If a shop refuses the request, the Actor reports it and moves on. Check the retailer's robots.txt and terms before you run it.

Limits

  • Built and tested on Czech mobile phone categories. Other categories may need the CSS selectors under Advanced.
  • Coupon prices are used when the source dataset provides them. Cashback and trade-in bonuses are not applied.
  • Model matching is rule-based and can miss unusual names.
  • One currency per run. No conversion.