Skip to main content
GET
Get card prices
Every printing gets its own price history, and inside a printing you get one USD history per condition. A holo Charizard priced in NM, LP, MP, HP and DMG returns five tcgplayer histories for that one printing rather than one. See the card object for what separates a printing from a condition. The window defaults to the last 90 days. Pass from and to as YYYY-MM-DD for a different one, up to 366 days wide. A window that is malformed, inverted, or wider than that is a 400, not an empty result. The full history stays reachable one bounded window at a time.

Charting a range

Pass range instead of from and to to get a series ready to plot. Each preset ends today, and the wider ones group days into buckets so a longer window does not return proportionally more points. A series starts at its first observation, so a printing first priced part way through the window returns fewer points than the table shows. Read the count off the response rather than assuming it. range and from/to are alternatives. Sending both is a 400. Override the bucket width with interval, as a day count such as 7d, or auto to keep the width the preset chose. Each point covers bucket_start through observed_on inclusive. The newest bucket always ends on to, so the oldest is the short one when the window does not divide evenly.

Filling the gaps

A price produces a point only on the days it moved. A printing that has not moved inside the window returns no points at all, and one that moved once returns a single point. Plotted directly, both read as missing data even though the price is known for every day. range sets fill=locf, which carries the last observed price forward across days with no movement. You get one point per bucket, and a condition that has not moved inside the window stays in the response instead of dropping out of it. Set fill=none for only the days the price changed. interval requires fill=locf; sending it alongside fill=none is a 400.

Telling a sighting from a carried value

Two fields on every point separate the two:
  • as_of is the date the price was actually observed. It matches observed_on for a real sighting and is earlier when the value was carried forward.
  • observations counts the real observations inside the point. 0 means every day it covers was carried forward.
observations: 0 does not on its own tell you a price was steady. It tells you no price was observed inside that point. Read as_of to see how far back the value came from, and decide how far a carried value should be trusted before you draw it as flat.

Authorizations

Authorization
string
header
required

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

Path Parameters

id
string
required

Query Parameters

from
string
to
string
range
string

A window ending today: 1W, 1M, 3M, 6M or 1Y. An alternative to from and to, and sending both is a 400. Defaults fill to locf and picks an interval so that a wider window does not return proportionally more points.

interval
string

Bucket width as a day count such as 3d, or auto to derive it from the width of the window. Requires fill=locf.

fill
string

locf carries the last observed price forward across days with no movement. none returns only the days the price changed, and is the default when range is absent.

Response

Card price history

data
object
required
error
object | null
required