Skip to main content
POST
Look up prices in bulk
Send the printings you hold and get one priced row back for each, in the order you sent them. Up to 500 per request, so a 1,000-card collection is two calls rather than a thousand.

Identify a printing, not a card

card_variant_id is the id on a card’s variants, from Get a card. A card id alone is not enough: one card can carry several printings, they are priced separately, and they move independently.

Do not ask for a condition

grade defaults to ungraded, and for a raw card that is the whole request: leave it off. There is no condition axis. An ungraded price folds every condition into one figure, so there is no question to put to someone about the state of a card in order to value it. Send a grade only for a slabbed copy, matching the grade on the slab: psa10, bgs10, cgc10, sgc10, or one of the numeric tiers. Anything outside that set is a 400 rather than a silently empty valuation.

One date per item

since rides on the item, not on the request. Two copies of one card acquired six months apart are two entries with two different since values, and each gets its own change. Repeat the same card_variant_id as many times as you hold copies. change_bp is basis points: 1293 is +12.93%. It is rounded to whole basis points and every amount is an integer number of cents, so no float reaches you and nothing is left for your client to round.

Reading an answer that is missing

Four absences mean four different things, and an app usually shows something different for each: The last one is common for a card acquired the week its set came out, where no price exists from that far back. It is an answer rather than a gap: show it as “no price from then” rather than as zero movement. Two rarer cases answer null the same way, and in both a price does exist on since: a start of exactly 0, which no percentage can be measured from, and a printing that carries no current price to compare against.

Telling a held price from a stale one

start_as_of is usually earlier than the since you sent. A price is recorded only on the days it changed, so the day you acquired a card generally has no reading of its own, and the last price before it is the one that stood. Compare the two dates to tell a price that held steady from one that had not been seen in a while.

What price is

One figure per tier, derived from completed sales rather than from what sellers are currently asking. There is no low/high spread and no listing count to weigh it against, because there is no shelf of active listings behind it. For how heavily a printing trades, read sales_volume on the printing from Get a card: copies sold in the trailing year, which is depth rather than money.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
items
object[]
required

The printings to price, at most 500 per request. Send the same printing more than once to price several copies acquired on different days: each entry gets its own answer.

Required array length: 1 - 500 elements

Response

One priced row per item, in the order sent

data
object
required
error
object | null
required