Marketplaces
A repricer is only as good as the market it is pricing against
Power a card marketplace or storefront with per-printing pricing in both currencies, dealer bids and daily history.
The problem
Where this project usually goes wrong
If you list cards for sale, your pricing logic is your margin. Price above the market and your inventory does not move; price below it and it moves too well, at a loss you discover in the monthly numbers rather than at the till.
The trap is pricing European stock off American data. The two markets diverge for real reasons — different print runs, different distribution, different demand — and localised printings often have no American price at all. Applying an exchange rate to a dollar figure produces a euro number that no European buyer or seller recognises.
The subtler trap is the reference price itself. A single figure hides whether it came from a thick market or two optimistic listings, which is exactly the difference between a price you can reprice against and a rumour.
What it needs
The fields that decide it
- Native prices per market
- Price the market your buyer is actually in, in the currency it trades in, with no conversion step to be wrong about.
- trend, low and rolling averages
- A trend price is far more stable to reprice against than a spot low that one listing can move.
- Per-finish pricing
- Foil and nonfoil are different products with different demand, and averaging them misprices both.
- listType: buylist
- Knowing the dealer bid puts a floor under your pricing and tells you what your stock is worth to liquidate.
- Daily history
- Reprice against a direction rather than a single day, so one noisy close does not move your whole shelf.
In practice
The two queries that matter most
Written for anyone listing cards for sale online. Both work the same way for every game we carry.
Reprice a shelf against the European trend
curl -G "https://api.tcggraph.com/v1/cards" \
-d game=pokemon \
-d source=cardmarket \
-d minPrice=5 \
-d sort=-price \
-H "Authorization: Bearer $TCGGRAPH_KEY"Filtering and sorting happen on the market you name, so the bounds mean euros when you ask for the European market and dollars when you ask for the American one.
Compare both markets on the same card
{
card(id: "pkm_a91c2f30-77b") {
name
prices {
source
region
currency
market
trend
avg7
}
}
}Both markets arrive together, so the spread is a subtraction rather than a reconciliation between two providers with two identifier schemes.
Avoid these
Three mistakes that are expensive to undo
Each of these is cheap to get right at the start and painful to retrofit once you have user data shaped the wrong way.
Repricing off the lowest listing
The low is the most volatile number in the response and often reflects one seller clearing stock. Trend and rolling averages are what a stable repricer should track.
Blending foil and nonfoil
They are separate products with separate demand curves. A blended figure is simultaneously too high for one and too low for the other.
Rebuilding your catalogue nightly
Card data changes rarely and prices change daily. Sync them on different schedules and your costs drop by an order of magnitude.
Questions
Marketplace and storefront, answered
Also built on this
Other projects, same catalogue
Ship your card app this weekend
$19 a month for 25,000 credits, no sales call and no contract. Pick a plan and your first query runs in under a minute.