Discover/Cardhedger API
live

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.

Endpoint health
verified 4d ago
get_card_prices
get_price_history
search_cards
3/3 passing latest checkself-healing
Endpoints
3
Updated
1mo ago

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.

This call costs1 credit / call— charged only on success
Try it
1-based page number over the result set.
Rows per page; values above 100 are clamped to 100.
Free-text search term matched against player/character name, set and card description (one shape: a character name such as Charizard).
→ api.parse.bot/scraper/b4aadeb8-b3ae-463a-906f-670a9fb58337/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/b4aadeb8-b3ae-463a-906f-670a9fb58337/search_cards?query=Charizard' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 3 totalmissing one? ·

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.

Input
ParamTypeDescription
pageinteger1-based page number over the result set.
limitintegerRows per page; values above 100 are clamped to 100.
queryrequiredstringFree-text search term matched against player/character name, set and card description (one shape: a character name such as Charizard).
Response
{
  "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.

Reliability & maintenanceVerified

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.

Last verified
4d ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • 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
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does Card Hedge AI offer an official developer API?+
Card Hedge AI does not publish a documented public developer API. Access to structured card price data is provided through this Parse API.
What grading companies does get_card_prices cover?+
The grade_prices array in get_card_prices includes grades from PSA, BGS, CGC, SGC, TAG, HGA, and Raw. Each entry carries the grader/grade label exactly as tracked by the site, which is also the string you must pass as the grade parameter in get_price_history.
What happens if I pass a grade label that doesn't exist for a card?+
get_price_history will return an empty history array and a null variation object when the grade label doesn't match any tracked grade for that card. Always use a grade value taken directly from get_card_prices.grade_prices[*].grade to avoid this.
Does the API expose seller listings or auction results beyond the historical sale series?+
Not currently. The API covers guide prices, per-grade price histories, and aggregate sales counts. It does not expose individual active listings, seller identities, or auction platform breakdowns. You can fork it on Parse and revise to add those endpoints if the underlying data becomes accessible.
Is there a way to browse all cards in a set without a search term?+
search_cards requires a non-empty query string and does not support a browse-all or set-filter-only mode. To retrieve cards from a specific set, pass the set name as the query value. The API covers matched results up to 100 rows per page with full pagination fields. You can fork it on Parse and revise to add a dedicated set-browse endpoint.
Page content last updated . Spec covers 3 endpoints from ai.cardhedger.com.
Related APIs in MarketplaceSee all →