Skip to content

API Getting Started

Live Pokémon TCG market data — try the playground free, then unlock the full API

Last updated:

For agentsLink copied!

Prefer the markdown copy of this section — this HTML page is for humans:

First call — card-hero Midprice or Last, same dollars as the card page:

curl "https://silphcoanalytics.xyz/api/v3/quote?q=42382"

When data.status is resolved, speak data.label (Midprice or Last) and data.price_usd — check data.price_basis before treating it as a live market price. ambiguous returns up to 5 candidates. Then load the skill for set trending-cards, chart-series, and the research sidecar. Thin FMV slots on source=silph stay empty. Sale days, including n=1, are source=observed with pick=all.

Try it nowLink copied!

No signup required. First call is the card-hero quote, not trending:

Midprice or Last (Base Set Charizard, TCGPlayer 42382)

curl "https://silphcoanalytics.xyz/api/v3/quote?q=42382"

Find a card by name

Use base set charizard or 42382 — not a bare charizard (price-weighted rank).

curl "https://silphcoanalytics.xyz/api/v3/search?q=base+set+charizard&limit=5"

Playground responses include X-LOR-Tier: playground. Want more? Sign in for a free API key (1,000 requests/day).

MCPLink copied!

Streamable HTTP at https://silphcoanalytics.xyz/api/v3/mcp/ (trailing slash — the bare path 307s). Same dashboard Bearer as REST. A free key works. No key returns 401 — there is no anonymous MCP playground. Keyless quote stays on REST GET /quote.

Ten public tools: search, quote, get_prices, get_sales, get_listings, batch_grade_ladder, compare_set_finish, pin_cohort, get_cohort, and rank_set_sales. Setup: MCP docs.

RecipesLink copied!

Quote a card, search by name, or pull the research sidecar with a TCGPlayer productId. Playground quote needs no key. MCP and chart-series need a dashboard Bearer key.

1. Quote a card

Name, TCGPlayer productId, or tcg_card_id. Speak data.label Midprice or Last and data.price_usd.

curl "https://silphcoanalytics.xyz/api/v3/quote?q=42382"

2. Search by name

Take tcg_card_id from results, then GET /quote?q=. Per-slot Midprice is GET /cards/{id}/midprice.

curl "https://silphcoanalytics.xyz/api/v3/search?q=base+set+charizard&limit=5"

3. Per-slot Midprice

Grade/finish Midprice slots — not the card-hero quote. Digits on q= are TCGPlayer productIds (42382 is Base Set Charizard). Hyphenated ids are ours (base1-4).

curl "https://silphcoanalytics.xyz/api/v3/cards/42382/midprice"

4. Historical prices

source=silph is the historical price ledger (thin slots may be empty). source=observed is grader-true sale days (sample_count may be 1). source=tcgplayer is variant × condition tape. source=all is silph+tcgplayer only. Use pick=all for slabs. There is no PriceCharting source. Keyed GET cap is 250 ids. For 1000 ids use POST /prices with JSON {ids:[...]}. Optional since/until is a closed YYYY-MM-DD range.

curl "https://silphcoanalytics.xyz/api/v3/prices?ids=42382&source=silph"

curl "https://silphcoanalytics.xyz/api/v3/prices?ids=42382&source=observed&pick=all&since=2024-01-01&until=2024-12-31"

curl -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ids":["42382"]}' \
  "https://silphcoanalytics.xyz/api/v3/prices?source=observed&pick=all&since=2024-01-01&until=2024-12-31"

5. Sales tape

curl "https://silphcoanalytics.xyz/api/v3/sales?ids=42382&agg=day&since=2026-08-01&until=2026-08-31"

6. Listings

curl "https://silphcoanalytics.xyz/api/v3/listings?ids=42382&marketplace=ebay"

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://silphcoanalytics.xyz/api/v3/listings?set_id=base1&marketplace=ebay"

Quick startLink copied!

  1. Create an account and generate an API key at the dashboard.
  2. Send the key as a Bearer token on every request.
  3. Browse the interactive reference for parameters and response shapes.
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://silphcoanalytics.xyz/api/v3/cards?limit=1"

AuthenticationLink copied!

Most /api/v3 data routes require Authorization: Bearer YOUR_API_KEY. Requests without a valid key return HTTP 401.

Playground plus Free / Pro / Elite apply at https://silphcoanalytics.xyz:

TierAuthLimits
PlaygroundNo API key1 req/s, 50-row cap, 50 ids · Full unrestricted history
FreeBearer API key1,000 requests/day
ProBearer API key5,000 requests/day
EliteBearer API key10,000 requests/day

History is not clamped by tier. Free and Pro see the same series; Pro has a higher daily cap.

Playground routes work without a key on the same URLs:

  • /api/v3/cards/{id}
  • /api/v3/catalog
  • /api/v3/catalog/cards
  • /api/v3/listings
  • /api/v3/lookup
  • /api/v3/prices
  • /api/v3/quote
  • /api/v3/sales
  • /api/v3/search
  • /api/v3/sets
  • /api/v3/sets/{id}
  • /api/v3/prices
  • /api/v3/resolve

Add a Bearer token on any route to use your account tier. Collection /sales is the public tape (may include PriceCharting comps). Per-card /cards/{id}/sales is keyed product UI and can show a different venue mix. Responses include X-LOR-Tier: playground on keyless calls.

Check daily usage with GET /keys/usage using the same Bearer token (includes history_days).

Listings: use GET /api/v3/listings?ids=base1-4 for live asks. Legacy GET /api/v3/shop/listings is a beta LoR passthrough — prefer /listings.

EndpointsLink copied!

Base URL: https://silphcoanalytics.xyz/api/v3

Cards

MethodPathDescription
GET/api/v3/cards/{id}Card identity + headline dollars (playground slims the gold dump)
GET/api/v3/cards/{id}/analyticsCard analytics
GET/api/v3/cards/{id}/chart-seriesCard-page history (sale_date × grade × finish)
GET/api/v3/cards/{id}/factsCited card facts (lor-api thin proxy)
GET/api/v3/cards/{id}/monthly-marksPriceCharting monthly price-guide marks (lor-api thin proxy)
GET/api/v3/cards/{id}/oracle-mark/historyOracle-mark history series (lor-api thin proxy)
GET/api/v3/cards/{id}/sales/history/api/v3/cards/{id}/sales/history
GET/api/v3/cards/{id}/tcgplayer-historyTCGplayer daily price and sales history
GET/api/v3/catalogPriceable catalog ids (keyed; cursor pages; cost = 1/page; game= filters dump)
GET/api/v3/catalog/cardsAlias of /catalog (keyed; cursor pages; cost = 1/page)
GET/api/v3/sets/{id}/cardsPaginated cards in a set with per-card volume and price fields (lor-api thin proxy)
POST/api/v3/cards/batchBatch core-card lookup by tcg_card_id (same as GET /cards/{id}; not productIds; cost = unique ids; max 250)

Market

MethodPathDescription
GET/api/v3/listingsLive listings / asks (ids= or set_id=; productId ok)
GET/api/v3/market/cardMulti-venue card market: asks + sales + oracle (lor-api thin proxy)
GET/api/v3/market/card/{id}Multi-venue card market by id (lor-api thin proxy)
GET/api/v3/market/landing-tickerLanding-page market ticker, cached (lor-api thin proxy)
GET/api/v3/market/price-series/api/v3/market/price-series
GET/api/v3/market/window-changesPer-card 7/30/90d price window changes (lor-api thin proxy)
GET/api/v3/marketplaces/collector_crypt/inventoryCollector Crypt inventory headline: stock / redeemed / platform (lor-api thin proxy)
GET/api/v3/pricesHistorical prices (ids= tcg_card_id or TCGPlayer productId)
GET/api/v3/salesVerified sales tape (ids= or set_id=; productId ok)
GET/api/v3/sales/export.csvAgent/export: sales CSV download for one card (lor-api thin proxy)
GET/api/v3/shop/listingsLegacy shop listings passthrough (beta; prefer GET /listings)
POST/api/v3/pricesHistorical prices, JSON {ids} (same prices.v1 job; keyed cap 1000)

Meta

MethodPathDescription
GET/api/v3/meta/freshnessData-plane surface freshness (lor-api thin proxy)
GET/api/v3/meta/min-app-version/api/v3/meta/min-app-version
GET/api/v3/og/{card_id}.png/api/v3/og/{card_id}.png
GET/api/v3/platform/{lane}/leaderboard/pullsPlatform pull leaderboard (lor-api thin proxy)
GET/api/v3/platform/{lane}/leaderboard/tradersPlatform trader leaderboard (lor-api thin proxy)
GET/api/v3/quoteCard-hero Midprice or Last (usable midprice else chart Last)
POST/api/v3/mcp/api/v3/mcp
POST/api/v3/me/imports/confirm/api/v3/me/imports/confirm
POST/api/v3/me/imports/preview/api/v3/me/imports/preview
POST/api/v3/quote/api/v3/quote
POST/api/v3/resolveBulk-resolve TCGPlayer productIds / tcg_card_ids (resolved + missing)
POST/api/v3/scanner/match/api/v3/scanner/match

Search

MethodPathDescription
GET/api/v3/lookupResolve a card or set identifier
GET/api/v3/searchFull-text card search
GET/api/v3/search-quota/api/v3/search-quota
POST/api/v3/search-quota/consume/api/v3/search-quota/consume

Sets

MethodPathDescription
GET/api/v3/setsList sets
GET/api/v3/sets/{id}Set detail
GET/api/v3/sets/{id}/populationSet graded population overview (Pro tier; lor-api thin proxy)
GET/api/v3/sets/{id}/trending-cardsTrending cards in a set

Unavailable routesLink copied!

These routes appear in contract metadata or older docs but are not callable on the public API. Use the replacement where listed.

RouteStatusUse instead
DELETE /api/v3/lists/{id}Not available
DELETE /api/v3/lists/{id}/items/{item_id}Not available
DELETE /api/v3/me/alerts/{id}Not available
GET /api/v3/cardsNot available
GET /api/v3/cards/{id}/bundleNot availableInternal BFF route for the mobile/web card page — use GET /api/v3/cards/{id}, /chart-series, /sales, and /tcgplayer-history individually.
GET /api/v3/cards/{id}/midpriceNot available
GET /api/v3/cards/{id}/oracle-markRemovedUse `GET /api/v3/cards/{id}/midprice`.
GET /api/v3/cards/{id}/price-historyNot available
GET /api/v3/cards/{id}/salesNot available
GET /api/v3/listsNot available
GET /api/v3/lists/{id}Not available
GET /api/v3/market/volumeNot available
GET /api/v3/marketplacesNot availableNot exposed on the public API.
GET /api/v3/me/alertsNot available
GET /api/v3/me/alerts/digestNot available
GET /api/v3/me/portfolio/bootstrapNot available
GET /api/v3/me/portfolio/historyNot available
GET /api/v3/me/portfolio/mark-previewNot available
GET /api/v3/me/portfolio/valuationNot available
GET /api/v3/me/watchlist/moversNot available
GET /api/v3/oracle_fmvRemovedUse `GET /api/v3/quote`.
GET /api/v3/search/suggestNot available
GET /api/v3/sets/{id}/breakdownNot available
GET /api/v3/sets/{id}/volume-historyNot available
GET /api/v3/statusNot availableNot exposed on the public API
GET /api/v3/status/historyNot availableNot exposed on the public API
GET /api/v3/status/slaNot availableNot exposed on the public API
GET /api/v3/trade/cards/{id}/compsShelvedNot exposed on the public API.
GET /api/v3/trade/cards/{id}/grade-statsShelvedNot exposed on the public API.
GET /api/v3/trade/tradesNot available
GET /api/v3/trade/trades/{trade_id}Not available
GET /api/v3/trendingShelvedGET /api/v3/sets/{id}/trending-cards
PATCH /api/v3/lists/{id}Not available
PATCH /api/v3/lists/{id}/items/{item_id}Not available
PATCH /api/v3/me/alerts/{id}Not available
PATCH /api/v3/trade/trades/{trade_id}Not available
POST /api/v3/cards/analytics/batchNot available`GET /api/v3/cards/{id}/analytics per card`.
POST /api/v3/events/shareNot availableNot exposed on the public API.
POST /api/v3/feedbackNot availableNot exposed on the public API
POST /api/v3/listsNot available
POST /api/v3/lists/{id}/itemsNot available
POST /api/v3/me/alertsNot available
POST /api/v3/trade/tradesNot available

Response envelopeLink copied!

Every v3 response uses silphco-envelope.v1. The payload lives in data; the contract field names its schema version.

PaginationLink copied!

Lists accept offset and limit (max 200). Per-card sales use an opaque next_cursor to page through history (API key required; playground returns at most 50 rows and next_cursor: null).

ErrorsLink copied!

Errors return contract: "error.v1" with error.code and error.message. HTTP 401 indicates a missing or invalid key. For removed routes, 404 with error.code: "removed" includes error.details.replacement pointing at the supported path.

Finding cardsLink copied!

You do not need a Pokémon TCG card ID to start. Playground calls need no API key. Use GET /api/v3/search?q=base+set+charizard or q=42382. Catalog browse GET /api/v3/cards requires a key (it is not the try-it door). For a full list of priceable ids use keyed GET /api/v3/catalog (do not paginate /search). Resolve fuzzy names with GET /api/v3/lookup, then GET /api/v3/quote?q= or GET /api/v3/cards/{id}/midprice.

Shared filters include language, grader, rarity, variant, min_price / max_price, sort, window, slab_only, and raw_only.

Card IdentityLink copied!

Cards are uniquely identified by a combination of set code and print number:

TypeFormatExamples
English Cards{set_id}-{number}base1-4, sv3-197
Japanese (TCGdex){jp_set_code}-{number}s12a-239, sv4pt5-232
Japanese (TCGCSV)jp-{slug}-{number}jp-pokemon-card-151-001

Print Variants & FinishesLink copied!

Cards with the same ID can exist in different variant runs or finishes. These are treated as separate asset nodes for pricing and uniqueness:

Variant SlugDisplay LabelDescription
normalNormalStandard non-holographic printing finish.
holofoilHolofoilStandard holographic artwork finish.
reverse_holofoilReverse HolofoilHolographic finish applied to the body/frame of the card.
1st_edition1st EditionEarly first-edition print run.
1st_edition_holofoil1st Edition HolofoilEarly first-edition holographic print run.
unlimitedUnlimitedStandard post-first-edition print run.
unlimited_holofoilUnlimited HolofoilStandard post-first-edition holographic print run.
cardmarketCardmarketCardmarket finish/printing variations.

ExamplesLink copied!

# Search (playground)
curl "https://silphcoanalytics.xyz/api/v3/search?q=base+set+charizard&limit=5"

# Card-hero quote (playground)
curl "https://silphcoanalytics.xyz/api/v3/quote?q=42382"

# Per-slot Midprice (keyed)
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://silphcoanalytics.xyz/api/v3/cards/42382/midprice"

# Historical price ledger (may be empty on thin cards)
curl "https://silphcoanalytics.xyz/api/v3/prices?ids=42382&source=silph"

# Observed sale days (n=1 kept; pick=all for slabs; closed date window)
curl "https://silphcoanalytics.xyz/api/v3/prices?ids=42382&source=observed&pick=all&since=2024-01-01&until=2024-12-31"

# Keyed POST, same prices.v1 job, cap 1000
curl -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ids":["42382"]}' \
  "https://silphcoanalytics.xyz/api/v3/prices?source=observed&pick=all&since=2024-01-01&until=2024-12-31"

# Sales tape
curl "https://silphcoanalytics.xyz/api/v3/sales?ids=42382"

# Listings by marketplace or set
curl "https://silphcoanalytics.xyz/api/v3/listings?ids=42382&marketplace=ebay"

ReferenceLink copied!