Trading-card price and sales tracking across multiple auction houses
Use Alt endpoints to turn trading-card price and sales tracking across multiple auction houses into repeatable API requests with documented inputs and JSON responses.
Alt (alt.xyz) is a trading-card investment marketplace that aggregates live listings and completed sales across itself and several source auction houses -- eBay, Fanatics Collect, Pristine Auction, Goldin, CardHobby, and Memory Lane. Crawlora reads its public data layer directly: universal search and live-auction search, a completed-sales archive, one card design's full population report across every grading company, and Alt's own category-level price-trend index and biggest movers. Credential-free.
Extract Alt's aggregated trading-card marketplace search, completed sales archive, card-design population reports, and price-trend index as structured JSON.
Endpoint families
6
Documented params
39
Examples
9
Live catalog snapshot
Active endpoints
9
Methods
GET
Required params
12
Schema refs
9
{
"platform": "Alt",
"endpoint": "alt-search",
"method": "GET",
"path": "/alt/search",
"auth": "apiKey"
}Use cases
Extract Alt's aggregated trading-card marketplace search, completed sales archive, card-design population reports, and price-trend index as structured JSON.
Use Alt endpoints to turn trading-card price and sales tracking across multiple auction houses into repeatable API requests with documented inputs and JSON responses.
Use Alt endpoints to turn card-design population and rarity research into repeatable API requests with documented inputs and JSON responses.
Use Alt endpoints to turn card-market trend and mover monitoring into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Alt endpoint catalog — 9 endpoints, 39 documented request parameters, and 9 published response schemas — the same catalog Docs and Playground run against.
9 documented Alt endpoints, grouped into 9 request families — Asset, Auctions and Card Search, plus 6 more.
39 request parameters are documented across those Alt endpoints, 12 of them required — the full input contract is public before you write any integration code.
9 of the 9 Alt endpoints ship a recorded example response, and 9 carry a documented response schema — you can code against the real JSON before the first request.
Alt endpoints document their error responses (400, 404, 429, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
9 hosted MCP tools back the Alt endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
/alt/asset
/alt/auctions
/alt/card-search
/alt/categories
/alt/listing
/alt/market-trends
Endpoint catalog
/alt/searchSearches Alt's universal aggregator index -- live auction and fixed-price listings from Alt itself and every other source auction house its search carries (eBay, Fanatics Collect, Pristine Auction, Goldin, CardHobby, Memory Lane) -- by free-text query, category, source auction house, grading company, and listing type, in a caller-selected sort order. Only currently-live listings are returned; see alt-sold-listings for completed sales. See alt-categories for the accepted category/auction_house/grading_company/listing_type/sort values.
Response notes
- `results[].auction_house` tells you the listing's actual source — a result is not necessarily an Alt listing. - `alt_value` (Alt's own estimated market value) is only populated for Alt's own native listings. - There is no language or certificate-number field on search results. Alt records a card's language as part of the set name in `brand` (for example `Pokemon Base Set` and `Pokemon Base Set Japanese`), and each language printing has its own `asset_id`. For one of Alt's own listings, call `alt-listing` to get `cert_number`. - `price` on one of Alt's own live auctions is the current bid in US dollars, before Alt's 20% buyer's premium. - `bid_count`/`watch_count` reflect Alt's own aggregator tracking and may be `0` for external listings Alt doesn't track engagement on.
Sampled 14 Oct 2026: 20 items, 20 fields filled in every item, 8 not. expires_at: 2026-10-16 to 2026-10-23; brand: Upper Deck (8), Upper Deck MJ Living Legend (3), Upper Deck Michael Jordan Maste… (2) and 5 more.
MCP tool alt_search
/alt/listingOne listing's full public detail -- title, description, price/bid state, grading info, and images -- across Alt's own native listings and its aggregated external listings. id and listing_type come from a prior alt-search/alt-auctions result, or from an alt-sold-listings result's listing_id and listing_type for a completed sale on Alt itself. Not every response field applies to every listing_type -- see the field-level notes in this endpoint's markdown doc.
Response notes
- Not every field applies to every `listing_type`: `state` and `alt_value` are only present for Alt's own native listings (`AUCTION`/ `FIXED_PRICE`); `current_bid`, `bid_count`, `auction_ends_at`, and `external_url` are only present for external listings (`EXTERNAL_AUCTION`/`EXTERNAL_FIXED_PRICE`). - `external_url` is the click-through link back to the original listing on its source site (e.g. eBay). - `badges` (e.g. `1/1 Rare`, `Pop 1`) are only present for Alt's own native listings. - A listing that has already sold still resolves, with `state` `SOLD`. For a sold auction, `list_price` is not the sale price; the sale price is `price` on the matching `alt-sold-listings` result, which for an auction includes Alt's 20% buyer's premium. - `cert_number` and `qualifier` (the grading company's qualifier, when the item has one) are returned for Alt's own native listings. Search results do not carry a certificate number, so this endpoint is the way to get it. - There is no language field. Alt records a card's language as part of the set name in `brand` (for example `Pokemon Base Set Japanese`); a `brand` with no language word is not by itself proof of an English printing. For a PSA-graded item, pass `cert_number` to `psa-cert-lookup` to read PSA's own label. - An `id`/`listing_type` combination Alt cannot resolve returns `404`. Example response (native Alt listing): ```json { "code": 200, "msg": "OK", "data": { "id": "58e5a6a5-a7ad-417f-8cda-ceffb226928c", "listing_type": "AUCTION", "auction_house": "Alt", "name": "2007 Exquisite Collection Dual Logoman Autographs Kobe Bryant/Lebron James #DL-BJ 1/1 PSA 8", "subject": "Kobe Bryant/Lebron James", "year": 2007, "brand": "Exquisite Collection", "variety": "Dual Logoman Autographs", "card_number": "DL-BJ", "category": "BASKETBALL_CARDS", "description": "The 2007-08 Upper Deck Exquisite Collection Dual Logoman Autographs #DL-BJ pairs Kobe Bryant and LeBron James on a singular 1/1 issue.", "grading_company": "PSA", "grade": "8.0", "cert_number": "175673254", "state": "ACTIVE", "list_price": 1772280, "alt_value": 8460808.16, "expires_at": "2026-09-25T01:00:00+00:00", "badges": ["1/1 Rare", "Ghost Card", "Pop 1"], "images": [ {"position": "FRONT", "url": "https://onlyalt-images.s3.us-east-2.amazonaws.com/image/public/front.png"}, {"position": "BACK", "url": "https://onlyalt-images.s3.us-east-2.amazonaws.com/image/public/back.png"} ] } } ```
Sampled 14 Oct 2026: 22 of 22 fields returned with a value. expires_at: 2026-09-25; year: 2,007.
MCP tool alt_listing
/alt/sold-listingsSearches Alt's global archive of completed card sales, aggregated across every source auction house its search carries -- the "market data" side of Alt's card-investment-marketplace positioning. This is a separate index from alt-search/alt-auctions, scoped to a rolling recent time window, not a filtered view of live listings. Pass auction_house=Alt to see only Alt's own completed sales. Each of Alt's own sales carries listing_id and listing_type -- pass both to alt-listing to get that item's certificate number -- and its url is the alt.xyz item page; a sale aggregated from another auction house carries that source site's own url instead. See alt-categories for the accepted category/auction_house/grading_company values.
Response notes
- There is no `sort` param — only Alt's own default relevance/recency ordering has been verified against this index. - Sales on Alt itself (`auction_house` `Alt`) and sales aggregated from another auction house carry different link fields: - An Alt sale has `listing_id`, `listing_type` and `payment_state`. Pass `listing_id` as `id`, together with `listing_type`, to `alt-listing` to get that exact item's `cert_number`, grade and images. `id` is the sale's own transaction id and is not accepted by `alt-listing`. `url` is the item's page on alt.xyz. - An aggregated sale has no `listing_id` or `payment_state`. Its `url` is the click-through link back to the original sold listing on its source site (e.g. an eBay item URL). - `listing_type` is one of `AUCTION`, `FIXED_PRICE` (Alt's own sales) or `EXTERNAL_AUCTION`, `EXTERNAL_FIXED_PRICE` (aggregated sales). - `payment_state` is Alt's own payment status for the sale, passed through as Alt reports it. `COMPLETED` and `NOT_STARTED` have been observed; a sale can be listed before the buyer has paid. - `price` for a sale on Alt itself is in US dollars, and what it includes depends on `auction_type`: - `AUCTION` — the winning bid plus Alt's 20% buyer's premium (winning bid × 1.20). - `BEST_OFFER` — the accepted offer, normally below the listing's `list_price`. No buyer's premium. - `BUY_IT_NOW` — the listing's `list_price`. No buyer's premium. - There is no language field. Alt records a card's language as part of the set name in `brand` (for example `Pokemon Base Set` and `Pokemon Base Set Japanese`), and each language printing has its own `asset_id`. A `brand` with no language word is not by itself proof of an English printing; for a PSA-graded Alt sale, confirm against `psa-cert-lookup` using the `cert_number` from `alt-listing`. - `auction_type` is a source-specific sub-classification (e.g. eBay's `BEST_OFFER`/`BUY_IT_NOW`/`AUCTION`), informational only — it is not a validated filter enum. Example result for a sale on Alt itself: ```json { "id": "dabe486a-69ca-4b7a-be75-488500f90dce", "asset_id": "6b26a0cf-17d4-4c6c-882d-b2687f1faca8", "listing_id": "0f471db5-06e0-482d-b7fc-f3c96fec41d2", "listing_type": "FIXED_PRICE", "payment_state": "COMPLETED", "name": "2007 Pokemon Ex Power Keepers Reverse Foil Charizard #6", "brand": "Pokemon Ex Power Keepers", "auction_house": "Alt", "auction_type": "BUY_IT_NOW", "grading_company": "PSA", "grade": "7", "price": 850, "sold_date": "2026-10-08", "url": "https://alt.xyz/itm/0f471db5-06e0-482d-b7fc-f3c96fec41d2" } ```
Sampled 14 Oct 2026: 20 items, 18 fields filled in every item, 1 not. sold_date: 2026-08-06 to 2026-10-11; listing_type: EXTERNAL_FIXED_PRICE (11), EXTERNAL_AUCTION (9).
MCP tool alt_sold_listings
/alt/auctionsSearches Alt's own currently live auctions -- the same pool shown on alt.xyz/browse's "Auctions" tab filtered to the Alt source. Unlike alt-search, this never returns another source auction house's listings or Alt's own fixed-price items. See alt-categories for the accepted category/grading_company/sort values.
Response notes
- Every result's `auction_house` is always `Alt` and `listing_type` is always `AUCTION` — there is no `auction_house`/`listing_type` filter param here since both are already fixed.
Sampled 14 Oct 2026: 20 items, 20 fields filled in every item, 8 not. expires_at: 2026-10-16 to 2026-10-23; category: POKEMON_CARDS (15), BASKETBALL_CARDS (4), BASEBALL_CARDS (1).
MCP tool alt_auctions
/alt/card-searchSearches Alt's reference card-design catalog -- a canonical catalog of card designs (one entry per year/brand/subject/card-number/variety combination), separate from live listings or sales. Useful for finding a card design's asset_id (to feed into alt-asset for a population report and recent sales) without already having a live listing or sale that references it.
Response notes
- There is no `category` filter — Alt's own reference-catalog index does not expose `category` as a facet-able field, so this package cannot live-verify a category value against it. `category` is still returned per result, informationally. - `category` values here are not limited to `alt-categories`' sports-card list — the catalog also includes non-sport card designs (e.g. `NON-SPORT_CARDS`).
Sampled 14 Oct 2026: 20 items, 8 fields filled in every item, 2 not. category: BASKETBALL_CARDS (13), NON-SPORT_CARDS (6), BASEBALL_CARDS (1); year: 1,993 to 2,009, median 1,997.
MCP tool alt_card_search
/alt/assetReturns one card design's identity, full population report (across every grading company and grade Alt tracks), and a recent raw sales feed -- the "is this card actually rare, and what does it sell for" data for a specific card design, independent of any single listing. asset_id comes from a prior alt-search/alt-sold-listings/alt-card-search result's asset_id field. recent_sales has no per-transaction grade breakdown -- Alt does not expose one; see alt-sold-listings for per-grade sold prices on specific listings.
Response notes
- `population[]` covers every grading company and grade Alt tracks population data for, not just the grade of any one listing. - `recent_sales[]` has no per-transaction grade breakdown — Alt's own API does not expose one, so this is a raw sales feed for the card design as a whole. See `alt-sold-listings` for per-grade sold prices on specific listings. - An `asset_id` Alt cannot resolve returns `404`.
Sampled 14 Oct 2026: 1183 items, 0 fields filled in every item, 2 not. date: 2026-07-07 to 2026-10-12; price: 2,760 to 516,000, median 9,200.
MCP tool alt_asset
/alt/market-trendsReturns Alt's own category-level price-trend index -- the same data alt.xyz's "Market Trends" page shows: a weekly/monthly/90-day change and a current index value per card category, built from Alt's own sold/valuation data.
Response notes
- `updated_at`/`version` reflect Alt's own update schedule for this index, not a per-request timestamp. - An unrecognized `category` value returns a typed invalid-param error listing the categories actually present in the current live response.
Sampled 14 Oct 2026: 7 items, 9 fields filled in every item. start_date: 2026-07-11; weekly_change: 0 to 0.07, median 0.01.
MCP tool alt_market_trends
/alt/top-moversReturns Alt's biggest price-index movers -- either a cross-subject leaderboard (optionally scoped to one category) or, when subject is set, that one player/character's own trend broken out per category it appears in. category is not strictly validated against alt-categories' list -- this trend index's own category set is broader (e.g. it includes MULTI-SPORT_CARDS).
Response notes
- `category` here is **not** the same closed enum as `alt-categories`' — this trend index's own category set is broader (e.g. it includes `MULTI-SPORT_CARDS`, which never appears in live-listing search results), so this endpoint does not validate `category` against `alt-categories`' list. - With `subject` set, results can span multiple categories for the same player (e.g. Michael Jordan has separate basketball and baseball card trend entries). Example response (leaderboard): ```json { "code": 200, "msg": "OK", "data": { "updated_at": "2026-09-09T15:01:57.741946+00:00", "version": "ff9b83e6-672b-4a98-8346-f16c85a6f210", "subjects": [ { "subject": "Allen Iverson", "category": "BASKETBALL_CARDS", "start_date": "2025-09-07", "end_date": "2026-09-07", "current_index_value": 19234.54015194957, "weekly_change": 0.09850479760332465, "monthly_change": 0.34467981882250376, "ninety_day_change": 0.5404539004760289 } ] } } ```
Sampled 14 Oct 2026: 20 items, 8 fields filled in every item. start_date: 2025-10-11; weekly_change: 0.02 to 0.07, median 0.03.
MCP tool alt_top_movers
/alt/categoriesReturns every accepted value for alt-search/alt-auctions/alt-sold-listings' category, auction_house, grading_company, and listing_type params, plus the sort enum. category/auction_house/grading_company/listing_type are read live from Alt's own current search index on every call, not a fixed taxonomy -- so this endpoint self-corrects if Alt's aggregator adds a new source auction house, grading company, or category.
Sampled 14 Oct 2026: 5 of 5 fields returned with a value. category: 16 entries; auction_house: 7 entries.
MCP tool alt_categories
Related APIs
Marketplaces & Retail
Research new, used, and vintage instruments across Reverb listings, seller shops, and the Price Guide. Keep current asking prices separate from historical sales, and preserve model, finish, year, condition, and currency when comparing gear.
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
How to scrape Alt
Alt's own data layer separates live listings, completed sales, and reference card-design data into distinct indexes. Crawlora's Alt endpoints return each one as normalized JSON -- no account. A pull on 2026-10-27 showed facet lists of 16 categories, 7 auction houses, 22 grading companies, 4 listing types and 8 sorts, and market indices updated 2026-10-25.
Call /alt/categories for every accepted category, auction house, grading company, and listing type value, plus the sort enum.
Send a query to /alt/search for Alt's aggregated listings across every source auction house it carries, or to /alt/auctions to scope results to Alt's own live 24/7 auctions only.
Send a query to /alt/sold-listings for Alt's global archive of completed card sales, aggregated across every source auction house.
Pass an id and listing_type from a search result to /alt/listing for full public detail, or an asset_id (found via /alt/card-search) to /alt/asset for a card design's full population report and recent sales feed.
Call /alt/market-trends for Alt's category-level price-trend index, or /alt/top-movers for its biggest price-index movers, cross-subject or scoped to one player/character.
categories returned values like BASEBALL_CARDS, an auction house list starting with eBay, 22 grading companies starting with PSA, 4 listing types such as EXTERNAL_FIXED_PRICE and 8 sorts (recommended first). Pass them verbatim.
market-trends (updated_at 2026-10-25T16:43 UTC) returned 7 categories; BASKETBALL_CARDS had a current index of 10,745.09 and a weekly change of 0.0157 over 2026-07-23 to 2026-10-23. top-movers returned 10 subjects, led by Bulbasaur (POKEMON_CARDS) at 29,804.15 with a weekly change of 0.0787 over a year window.
Agent skills
Install a Crawlora agent skill and your agent can pull Alt data as JSON through the documented API, without writing a scraper. These skills cover Alt:
Researches public trading-card and sports-collectible markets through the Crawlora API — card identity, PSA certification and price-guide evidence…
npx skills add github.com/Crawlora-org/crawlora-skills --skill collectibles-market-researchFAQ
Call /alt/categories for search enum values, send a query to /alt/search or /alt/sold-listings, then pass a result's id and listing_type to /alt/listing for full detail -- all as structured JSON, no account.
Yes -- /alt/search aggregates live and fixed-price listings from Alt itself plus eBay, Fanatics Collect, Pristine Auction, Goldin, CardHobby, and Memory Lane; /alt/auctions scopes results to Alt's own live auctions only.
Yes -- find its asset_id with /alt/card-search, then pass it to /alt/asset for its full population report across every grading company Alt tracks, plus a recent raw sales feed.
Yes -- /alt/market-trends returns a weekly/monthly/90-day change and current index value per card category, and /alt/top-movers returns the biggest movers, either cross-subject or for one player/character.
Collecting publicly accessible listing, sales, and trend data is generally permissible if you respect Alt's terms of use, robots directives, rate limits, and applicable law.
The 2026-10-27 response was updated 2026-10-25 16:43 UTC. Store updated_at with the values.