</>TCG Price Lookup
CatalogAPIPricingFAQDocsBlog
CatalogAPIPricingFAQDocsBlog
</>TCG Price Lookup

Real-time trading card price data and developer API. Live prices from TCGPlayer and eBay for Pokemon, Pokemon Japan, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Disney Lorcana, Star Wars: Unlimited, and Flesh and Blood.

Product

  • Card Price Checker
  • Value Checker
  • Price Guide
  • API for Developers
  • Pricing

Games

  • Pokemon
  • Pokemon Japan
  • Magic: The Gathering
  • Yu-Gi-Oh!
  • One Piece
  • Disney Lorcana
  • Star Wars: Unlimited
  • Flesh and Blood

Resources

  • Blog
  • FAQ
  • Documentation
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2026 TCG Price Lookup. All rights reserved.

TCG Price Lookup is not affiliated with or endorsed by TCGPlayer, eBay, or any trading card game publisher.

All trading card game names, logos, and card imagery are trademarks and © of their respective owners. Pokemon is © Nintendo / Creatures Inc. / GAME FREAK Inc. Magic: The Gathering is © Wizards of the Coast LLC. Yu-Gi-Oh! is © Konami Digital Entertainment. One Piece Card Game is © Bandai / Shueisha / Toei Animation. Disney Lorcana is © Disney / Ravensburger. TCG Price Lookup is an independent card price tracking service and is not affiliated with, endorsed by, or sponsored by any of the above companies, PSA, BGS, CGC, or any grading service. All card names and imagery are used solely for identification and price tracking purposes.

Error codes

The API uses standard HTTP status codes. Any non-2xx response carries a JSON body with an error string you can log or surface to users.

Error response shape

Every error is a JSON object with a human-readable error field. A few responses add context fields — for example, a bad ids parameter echoes back the offending values in invalidIds.

{
  "error": "Card not found"
}

Status reference

StatusNameExample bodyMeaningRetry?
200OK{ "data": [ … ] }The request succeeded.—
400Bad Request{ "error": "Invalid ids parameter. Use comma-separated UUID card ids.", "invalidIds": ["022", "abc"] }A parameter is malformed. Fix the request and try again — don't retry as-is.No
401Unauthorized{ "error": "Missing X-API-Key header" }The X-API-Key header is missing or the key is invalid/revoked.No
403Forbidden{ "error": "History endpoint requires trader plan or above" }Your key is valid but your plan can't access this resource (e.g. history on Free).No
404Not Found{ "error": "Card not found" }No card, set, or resource matches the given id.No
413Payload Too Large{ "error": "Request too large" }The request body exceeded 10 MB.No
429Too Many Requests{ "error": "Rate limit exceeded" }You hit your daily quota or burst limit. Read Retry-After / X-RateLimit-* headers.Yes, with backoff
500Internal Server Error{ "error": "Internal server error" }Something went wrong on our side.Yes, with backoff
503Service Unavailable{ "error": "Database temporarily unavailable" }A dependency is briefly unavailable. Cached data may still be served where possible.Yes, with backoff

Retry strategy

  • •4xx errors are your cue to change the request. Don't retry a 400/401/403/404 unchanged — fix the parameter, key, plan, or id first.
  • •429 is retryable. Wait for Retry-After (or back off exponentially) — see rate limits.
  • •5xx errors are transient. Retry with exponential backoff and a sensible cap (e.g. up to 30s). Surface a friendly message if retries keep failing.