Cardhedger APIai.cardhedger.com ↗
Search sports, Pokémon, and TCG cards via the Card Hedge AI API. Get current grade prices, 7/30-day sales counts, price change ratios, and historical sale series.
What is the Cardhedger API?
The Card Hedge AI API exposes 3 endpoints covering trading card search, per-grade price guides, and historical sale series across sports cards, Pokémon, and other TCG categories. Use search_cards to find cards by player name, set, or description and get back current guide prices and 30-day price change ratios. Use get_card_prices to pull full grade-level pricing across PSA, BGS, CGC, SGC, TAG, HGA, and Raw grades for any card ID.
curl -X GET 'https://api.parse.bot/scraper/b4aadeb8-b3ae-463a-906f-670a9fb58337/search_cards?query=Charizard' \ -H 'X-API-Key: $PARSE_API_KEY'
Searches the card database by free text (player/character name, set, or card description) and returns one row per card with its card_id, current guide prices for the card's headline grades, 7-day and 30-day sales counts, and 7-day / 30-day price change ratios (0.05 = +5%). Results are paginated: page selects the page (default 1) and limit caps rows per page (default 24, max 100); total_pages, total_count and has_more come from the site. Empty cards with total_count 0 is a valid result for a term the site does not know. One request per call.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number over the result set. |
| limit | integer | Rows per page; values above 100 are clamped to 100. |
| queryrequired | string | Free-text search term matched against player/character name, set and card description (one shape: a character name such as Charizard). |
{
"type": "object",
"fields": {
"page": "page returned",
"cards": "array of card summaries: card_id, description, player, set, number, variant, category, category_group, rookie, image, sales_7d, sales_30d, change_7d_pct and change_30d_pct (ratios, 0.05 = +5%), prices (array of {grade, price}; price null when the site has none for that grade)",
"limit": "effective page size after clamping",
"query": "echoed search term",
"has_more": "true when page < total_pages",
"total_count": "total matching cards reported by the site",
"total_pages": "total number of pages reported by the site"
},
"sample": {
"data": {
"page": 1,
"cards": [
{
"set": "1999 Pokemon Base Set",
"image": "https://942284f33c575895b4be9de571ca6e40.cdn.bubble.io/d112/f1756064630628x689750735303082960/crop_image",
"number": "4",
"player": "Charizard",
"prices": [
{
"grade": "PSA 10",
"price": 37966
},
{
"grade": "PSA 9",
"price": 3300
},
{
"grade": "Raw",
"price": 355
}
],
"rookie": false,
"card_id": "1646615786118x244697357144328930",
"variant": "Base",
"category": "Pokemon",
"sales_7d": 96,
"sales_30d": 436,
"description": "Charizard Holo 1999 Pokemon Base Set",
"change_7d_pct": 0,
"category_group": "Trading Cards",
"change_30d_pct": 0.4219325843
}
],
"limit": 5,
"query": "Charizard",
"has_more": true,
"total_count": 359,
"total_pages": 72
},
"status": "success"
}
}About the Cardhedger API
Search and Discovery
search_cards accepts a free-text query matched against player or character name, set name, and card description. Each result row in the cards array includes card_id, description, player, set, number, variant, category, category_group, rookie, and an image URL. Aggregate signals — sales_7d, sales_30d, and price change ratios for both windows (where 0.05 means +5%) — are included per card. Pagination is controlled via page and limit; limits above 100 are clamped, and has_more, total_pages, and total_count are echoed back to support cursor-style iteration.
Per-Card Grade Pricing
get_card_prices takes a card_id from any search result and returns the full price guide for that card. The grade_prices array covers every grader/grade combination tracked for the card — PSA 1 through PSA 10, BGS grades, CGC, SGC, TAG, HGA, and Raw — each with its latest guide price. Headline prices pairs and the same 7-day/30-day sales and change-ratio fields from search are also present, along with metadata fields: set, number, variant, category, rookie, and image.
Historical Sale Series
get_price_history returns individual sale records for one card at one grade over a trailing window of 1 to 730 days. The grade parameter must match a label exactly as it appears in get_card_prices.grade_prices[*].grade — for example Raw or PSA 9. The history array is sorted ascending by date and each point carries sale_id, price, grade, and an ISO closing date. The variation object summarises the series: first_price, last_price, min_price, max_price, avg_price, change, and change_pct. When no sales fall in the window, history is empty and variation is null.
Coverage Notes
Card categories include sports (Basketball, Baseball, Football, Hockey, and others) and non-sports TCG (Pokémon and similar). The category and category_group fields on each card identify which segment a result belongs to, making it straightforward to filter results by sport or game type in application logic.
The Cardhedger API is a managed, monitored endpoint for ai.cardhedger.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ai.cardhedger.com 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 ai.cardhedger.com 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 PSA 10 price trends for a specific basketball rookie card over 365 days using get_price_history
- Build a portfolio tracker that refreshes current grade prices via get_card_prices for a watchlist of card_ids
- Identify cards with the largest 30-day price change ratios by sorting search_cards results by the price change field
- Compare Raw vs graded price spreads for Pokémon cards by pulling all grade_prices entries from get_card_prices
- Detect high-velocity cards by filtering search_cards results where sales_7d or sales_30d exceed a threshold
- Compute price volatility for a card by calculating the range between min_price and max_price in the variation object from get_price_history
- Populate a card catalog with images, set names, and variant labels sourced from search_cards results
| 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.