OpenShopGraph
The problem

Shopping search is broken.

Content farms outrank real shops

Pages written for crawlers bury the actual store under "top 10" spam.

AD
AD
the shop you wanted

Dead codes are left up on purpose

Coupon sites earn on your click, not on your checkout working.

SAVE30✕ expired 2023
VIP50✕ never existed
WELCOME10✓ the only one that works

Rankings are sold, not earned

"Best shop" lists are paid placements — the price of the slot is invisible to you.

1
2
3
The database

One record per shop. Checked, not claimed.

Signals, not badges

Trust shows in observable signals — each with its source attached.

imprint — read from the shop's page
payment — checkout scan
review sites — links only

Freshness you can see

Every fact shows when it was last confirmed — stale data is visible, not hidden.

recordlast confirmed
each factchecked on [date]
each sourceretrieved on [date]

Structured products & codes

Offers carry validity windows and display policies — machine-readable end to end.

{
  "code": "EXAMPLE15",
  "valid_until": "YYYY-MM-DD",
  "last_verified": "YYYY-MM-DD"
}
What we check

The checks behind a record.

Company imprint read from the shop's imprint page; domain registration looked up in the public registry (RDAP)
Payment options checkout scan — which providers actually appear
Shipping & returns policy pages, free-shipping thresholds, return windows
Review sites we link to them, but we do not check them
Codes & deals validity-checked; expired means labeled, not hidden
Where facts come from

Where we have them, we name source and date.

Returns, shipping terms, payment options and company details are read from the shop's own pages; domain registration is looked up in the public domain registry (RDAP). Where a source URL and a check date exist, we store them per fact. A source that is not a usable URL is shown without a link; a code test without a check date is not shown at all.

How a code gets tested

A test applies the code in a real cart at the shop. There are three outcomes, kept apart: accepted, rejected by the shop, or could not be checked because the shop blocked our test checkout. "Could not be checked" is never shown as "invalid". A test line appears only with its check date.

What we do not check

  • Not every code has a cart test. Where there is none, the record shows no test line.
  • Review sites: we link to them, we do not check them.
  • A record shows what a shop's pages said on the day we read them. The shop can change its terms afterwards; the date tells you how old our reading is.

What "Advertising: commissions possible" means

Every shop page carries this notice. It is a precaution: we cannot verify whether a commission is earned on shop links or coupon codes, so we label throughout.

Whether or not a commission arises, neither inclusion, ordering nor the facts shown are for sale. There are no sponsored placements and no bookable ad space. Links to shops are plain links; known tracking and affiliate parameters are stripped.

Full text: advertising disclosure

Neutral by design

No paid rankings. No accounts.

No paid placement, no accounts. A shop is listed here because its details can be documented — never because it paid.

Placement can't be bought No affiliate bias in ranking Expired means expired
About

Built with Claude

OpenShopGraph is built and operated with Claude Code agents.

The public MCP server makes the data available to Claude and other assistants.

Founded March 2026, Germany. Bootstrapped, independent.