Skip to content
Frank Spin
Menu

BricksDeal.com 2025–now

Compare LEGO prices.

My role
Founder, designer and developer
The problem
Prices and availability vary between shops.
The result
A price comparison site with price history and alerts.

Stack

  • Laravel
  • SQLite
  • Python
  • Affiliate APIs
BricksDeal homepage with search, live catalogue counts and a featured deal.
67
retailers compared
17,221
sets tracked
2× daily
price and stock refresh

Figures from 20 July 2026

Prices need context.

I wanted to compare LEGO prices across shops and see whether a set had been cheaper before. I designed and built BricksDeal to bring retailer offers, stock and price history together.

So this could not be a list of affiliate links. Every set needed one fixed record, with a history of offers moving around it.

The set stays fixed
Number, name and product details hold still while the offers around them change.
Offers keep moving
Price, stock and the time of the last check each drift on their own schedule.
Country changes the market
A comparison is only useful with the retailers and prices that region can actually buy from.
Commission cannot set the order
Affiliate revenue pays for the thing. It does not get to pick what ranks first.

Offers and price history, together.

Each set page lists retailer prices, stock and the last update. The price chart shows earlier offers, and shoppers can set an alert for their target price.

BricksDeal set page comparing retailer offers for LEGO set 75367.
LEGO 75367 Venator-Class Republic Attack Cruiser · captured 20 July 2026
€469.99
lowest current offer
€649.99
recommended retail price
8
retailers compared
28%
below RRP

Find, compare, follow.

Search for a set, filter deals or compare two sets side by side. Price alerts and the browser extension help shoppers keep track.

  1. 01 Find a set Search by set, browse a theme or start from a collecting interest.
  2. 02 Narrow the list Sort current deals and filter by price, availability or theme.
  3. 03 Check the history See retailer offers, stock, earlier prices and the latest update in one place.
  4. 04 Compare candidates Compare the price and details of two sets side by side.
  5. 05 Keep watching Set an alert or keep BricksDeal nearby through the browser extension.
BricksDeal theme index for browsing LEGO sets by theme.
01 Find a set Search by set, browse a theme or start from a collecting interest.
BricksDeal deal list sorted by savings with filtering controls.
02 Narrow the list Sort current deals and filter by price, availability or theme.
BricksDeal price history, price alert and forecast for LEGO set 75367.
03 Check the history See retailer offers, stock, earlier prices and the latest update in one place.
BricksDeal comparison showing LEGO sets 75367 and 75192 side by side.
04 Compare candidates Compare the price and details of two sets side by side.
BricksDeal browser extension product page.
05 Keep watching Set an alert or keep BricksDeal nearby through the browser extension.

Prices first on smaller screens.

On mobile, I put the current offer first, followed by set details and price history. Desktop has room for comparisons side by side.

BricksDeal homepage at a 430 pixel mobile viewport.
BricksDeal deal list at a 430 pixel mobile viewport.
BricksDeal Venator set page at a 430 pixel mobile viewport.

Collecting prices and serving pages.

I built the site with Laravel and SQLite. A separate Python pipeline collects retailer data and publishes updates through an API. Price collection runs separately from page requests.

  1. 01 Collect Python pipeline

    Retailer scraping, translation and SEO jobs run outside the storefront.

  2. 02 Publish Protected API

    Workers hand prepared data to Laravel instead of writing straight into the live database.

  3. 03 Render Laravel + SQLite

    The public app renders the catalogue on the server from a compact local database.

  4. 04 Cache by risk Public / private

    Catalogue pages can use shared caching. Accounts, sessions and alerts are always no-store.

One catalogue serves seven market and language combinations across the Netherlands, Germany and Belgium.

Product cards were the easy part.

The hard part was deciding what a price actually means. A set record that stays put. An offer recent enough to trust. Stock you can see. A history I have not quietly tidied up. And a ranking that money cannot move.

Coverage is the part I can already show. Whether the thing is useful, I know less about. Do price alerts get set after someone looks at the history? Does comparing two sets change which retailer gets the click? I would rather find that out than add another retailer.