alt APIalt.xyz ↗
Look up graded trading cards on alt.xyz by cert number. Get Alt Value with confidence bounds, population reports, and recorded market sales per grade.
What is the alt API?
The alt.xyz API exposes 2 endpoints that resolve grading-company certification numbers — from PSA, BGS, CGC, and others — into structured card data including current Alt Value with confidence bounds, population reports across all graders and grades, and recorded market sales. The lookup_cert endpoint returns over a dozen response fields for a single cert, while lookup_certs handles up to 20 certs per call with per-entry status flags.
curl -X GET 'https://api.parse.bot/scraper/430fcd46-c575-4946-8090-6599338210b2/lookup_cert?cert_number=29023160' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace alt-xyz-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: look up graded trading cards on Alt — single and batch."""
from parse_apis.alt_xyz_api import AltXyz, CertNotFound
client = AltXyz()
# Look up a PSA-graded Pokémon card by its cert number.
try:
cert_info = client.certifications.get(cert_number="29023160")
except CertNotFound:
print("Certification not found for that number.")
raise
# Card identity
asset = cert_info.asset
if asset is not None:
print(f"{asset.name} ({asset.year} {asset.brand})")
print(f" Category: {asset.category} Card #: {asset.card_number}")
# Grade details
cert = cert_info.cert
if cert is not None:
print(f" Graded by {cert.grading_company}, grade {cert.grade_number}")
# Current Alt Value with confidence bounds
val = cert_info.alt_value
print(f" Alt Value: ${val.current:,.2f} (${val.lower_bound:,.2f} – ${val.upper_bound:,.2f})")
print(f" Confidence: {val.confidence_metric}")
# Daily value time series
ts = val.time_series
print(f" Time series: {ts.start_date} to {ts.end_date}, {len(ts.values)} daily points")
# Population report — show top entries by count
for entry in sorted(cert_info.population, key=lambda e: e.count, reverse=True)[:5]:
print(f" {entry.grading_company} {entry.grade_number}: {entry.count} graded")
# Recent sales
print(f" {cert_info.sales_count} recorded sales")
for sale in cert_info.sales[:3]:
print(f" {sale.date} ${sale.price:,.2f} {sale.auction_house} ({sale.auction_type})")
# Batch lookup: pass the cert we already found plus a second number.
batch = client.certifications.batch_get(cert_numbers="29023160,00000001")
print(f"Batch: {batch.requested_count} requested, {batch.found_count} found, {batch.not_found_count} not found")
for result in batch.results:
if result.data is not None:
print(f" {result.cert_number}: found – {result.data.cert.grading_company if result.data.cert else 'unknown'}")
else:
print(f" {result.cert_number}: {result.status} – {result.error}")
print("exercised: certifications.get / certifications.batch_get")
Resolves one grading-company certification number (PSA, BGS, CGC, etc.) to the card Alt tracks for it and returns, in a single call, the cert's grade details, the card identity (year, brand, subject, variety, card number, print run), the current Alt Value for that exact grade and grading company with its confidence metric and error bounds, the daily Alt Value time series for roughly the trailing year (values plus lower/upper bound arrays aligned by index with start_date/end_date), the population report across all grading companies and grades, and every recorded market sale of the same card at the same grade and grading company (newest first, each with date, price in USD, auction house, auction type, and the original listing URL). The sales list is the complete set the site holds for that grade; there is no pagination. A certification number the site does not recognize returns a stale_input error (input_not_found). Two upstream round trips per call.
| Param | Type | Description |
|---|---|---|
| cert_numberrequired | string | Certification (cert) number printed on the graded card's slab label, 1-32 alphanumeric characters, e.g. a PSA cert such as 29023160. |
{
"type": "object",
"fields": {
"cert": "object: cert_number, grading_company, grade_number (string like \"10.0\"), autograph, qualifier, and subgrades {centering, corners, edges, surfaces} (null when the grader publishes none)",
"asset": "object identifying the card: asset_id, name, year, subject, category code (e.g. POKEMON_CARDS), brand, variety, card_number, print_run (null when not serial-numbered)",
"sales": "array of recorded market sales for the same card at this grade and grading company, newest first: id, date (YYYY-MM-DD), price (USD number), auction_house, auction_type, grade_number, grading_company, autograph, listing_url, subject_to_change, label",
"alt_value": "object: current (USD estimate for this grade/company), confidence_metric, lower_bound, upper_bound, ready_for_display, and time_series {frequency, start_date, end_date, values[], lower_bounds[], upper_bounds[]} (daily, arrays aligned by index)",
"population": "array of {grading_company, grade_number, count} population-report rows across all graders and grades",
"sales_count": "integer number of sales returned"
},
"sample": {
"data": {
"cert": {
"autograph": null,
"qualifier": null,
"subgrades": {
"edges": null,
"corners": null,
"surfaces": null,
"centering": null
},
"cert_number": "29023160",
"grade_number": "10.0",
"grading_company": "PSA"
},
"asset": {
"name": "2004 Pokemon Ex Team Rocket Returns Holo Torchic Gold Star #108",
"year": 2004,
"brand": "Pokemon Ex Team Rocket Returns",
"subject": "Torchic Gold Star",
"variety": "Holo",
"asset_id": "119b9e9e-9e69-4c2b-94be-dc5d9e7fb521",
"category": "POKEMON_CARDS",
"print_run": null,
"card_number": "108"
},
"sales": [
{
"id": "89dd2b8f-b14c-4ca8-8b8f-f23140f9cc2b",
"date": "2024-12-07",
"label": "",
"price": 35000,
"autograph": null,
"listing_url": "https://comics.ha.com/itm/memorabilia/trading-cards/pokemon-gold-star-torchic-108/p/7386-17001.s",
"auction_type": "AUCTION",
"grade_number": "10.0",
"auction_house": "Heritage Auctions",
"grading_company": "PSA",
"subject_to_change": false
}
],
"alt_value": {
"current": 1185797.5374979922,
"lower_bound": 933287.1137318652,
"time_series": {
"values": [
256387.93948566652,
257000.57042829064
],
"end_date": "2026-09-03",
"frequency": "D",
"start_date": "2025-08-29",
"lower_bounds": [
201791.2438434651,
202273.41769367474
],
"upper_bounds": [
325756.33244373096,
326534.7169863546
]
},
"upper_bound": 1506627.2524794352,
"confidence_metric": 60,
"ready_for_display": true
},
"population": [
{
"count": 19,
"grade_number": "10.0",
"grading_company": "PSA"
},
{
"count": 233,
"grade_number": "9.0",
"grading_company": "PSA"
}
],
"sales_count": 5
},
"status": "success"
}
}About the alt API
What the API Returns
The core endpoint, lookup_cert, accepts a single cert_number — the alphanumeric identifier printed on a graded card's slab label — and returns a structured payload covering four areas. The cert object includes the grading company, numeric grade (e.g. "10.0"), autograph flag, qualifier, and subgrades for centering, corners, edges, and surface where available. The asset object identifies the underlying card: year, brand, subject, variety, card_number, print_run, and a categorical category code such as POKEMON_CARDS.
Valuation and Sales Data
The alt_value object provides a USD estimate for the specific grade and grading company combination, along with lower_bound, upper_bound, confidence_metric, ready_for_display, and a time_series of daily historical values. The sales array lists recorded market transactions for the same card at the same grade, ordered newest first, each with id, date (YYYY-MM-DD), and price in USD. The population array covers all graders and grade tiers, making it straightforward to compare census counts across companies for the same card.
Batch Lookups
The lookup_certs endpoint accepts a comma-separated list of up to 20 cert numbers in the cert_numbers parameter. Each entry in the results array carries the original cert_number, a status of found, not_found, or error, and the full data payload for found certs. Summary integers — found_count, not_found_count, error_count, and requested_count — make it straightforward to audit batch results without iterating the full array.
The alt API is a managed, monitored endpoint for alt.xyz — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when alt.xyz changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official alt.xyz API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track daily Alt Value movements for a portfolio of graded cards using the
alt_valuetime series fields - Compare population counts across PSA, BGS, and CGC for the same card to assess relative scarcity
- Validate a seller's stated grade by resolving the cert number and checking the returned
grade_numberandgrading_company - Retrieve recent market sales prices for a specific grade to benchmark a listing or purchase offer
- Batch-resolve up to 20 cert numbers at once with
lookup_certswhen auditing a large collection - Build a graded-card price-check tool using
confidence_metricandlower_bound/upper_boundto surface valuation uncertainty - Filter population data by grade tier to identify high-pop versus low-pop grades for the same card
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does alt.xyz have an official developer API?+
What does the `population` array in `lookup_cert` actually contain?+
grading_company, grade_number, and count. The array spans all graders and all grade tiers tracked for that card, not just the grade of the cert you looked up. This lets you see the full population picture in a single call.Does the API return historical Alt Value data beyond daily closing prices?+
alt_value object includes a time_series of daily historical values along with the current estimate and confidence bounds. Intraday tick-level history is not currently exposed. You can fork this API on Parse and revise it to add a dedicated historical time series endpoint if finer granularity is needed.Can I look up cards without a cert number, for example by card name or set?+
lookup_cert and lookup_certs — require a cert number as the entry point; there is no search-by-name or browse-by-set parameter. You can fork this API on Parse and revise it to add a card search endpoint based on subject, brand, or year fields.How many sales records does the API return per cert, and is there pagination?+
sales array returns all recorded market sales for the card at the specific grade and grading company, newest first, and sales_count gives the total. There is no pagination parameter on lookup_cert; the full sales list for that cert is returned in one response.