Getcollectr APIGetcollectr.com ↗
Search the Collectr TCG catalog and retrieve graded card prices (PSA, BGS, CGC, ACE, TAG) with PSA 10 history via 2 endpoints.
What is the Getcollectr API?
The Getcollectr.com API exposes 2 endpoints for querying Collectr's trading-card catalog and retrieving graded slab prices. The search_cards endpoint returns up to 30 products per page—covering Pokemon, Magic: The Gathering, Yu-Gi-Oh, One Piece, and other TCGs—including product IDs, set names, card numbers, and rarity. The get_graded_prices endpoint then maps a product ID to its current and historical PSA 10 prices plus latest prices across PSA, BGS, CGC, ACE, and TAG grades.
curl -X GET 'https://api.parse.bot/scraper/deec24d2-ffc5-41bd-b3fd-99cd817443e2/search_cards?query=Charizard' \ -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 getcollectr-com-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: Collectr Card Prices SDK — search cards, drill into graded prices."""
from parse_apis.getcollectr_com_api import Collectr, ProductNotFound
client = Collectr()
# Search the catalog for a popular card and browse the first few hits.
for card_summary in client.card_summaries.search(query="Charizard", limit=5):
print(card_summary.name, card_summary.set_name, f"${card_summary.market_price:.2f}")
# Drill into the first result's full graded-price detail.
hit = client.card_summaries.search(query="Pikachu", limit=1).first()
if hit is not None:
detail = hit.details()
# PSA 10 prices and recent history per sub-type
for psa in detail.psa10:
print(f"PSA 10 ({psa.sub_type}): ${psa.price:.2f} as of {psa.price_date}")
for point in psa.history[:3]:
print(f" {point.date} ${point.price:.2f}")
# All graded slab prices
for slab in detail.graded[:5]:
print(f"{slab.company} {slab.grade} ({slab.grade_name}): ${slab.price:.2f}")
# Point lookup by a known product_id, with typed-error handling.
try:
card = client.cards.get(product_id=hit.product_id) if hit is not None else None
except ProductNotFound:
print("Product no longer in the catalog")
card = None
if card is not None:
print(card.name, card.category, card.rarity, f"${card.market_price:.2f}")
print("exercised: card_summaries.search / CardSummary.details / cards.get / ProductNotFound")
Searches the Collectr catalog (Pokemon, Magic, Yu-Gi-Oh, One Piece and other TCGs; cards and sealed products) by free text and returns one page of 30 products in the site's Best Match order. Each item carries product_id (the key for get_graded_prices), set, card number, rarity, sub-type (e.g. Holofoil), the current ungraded market price in USD with its recent change, and has_psa10_price telling whether a PSA 10 price exists for it. Pagination is by page (1-based, fixed page size 30): page omitted means page 1; next_page is null when the page returned fewer than 30 items. A query with no matches returns count 0 and an empty items array. One upstream round trip per call. The upstream API throttles bursts per network address for several minutes, so space calls out rather than firing many at once.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based results page (30 items per page). |
| queryrequired | string | Free-text search term, e.g. a card or character name. |
{
"type": "object",
"fields": {
"page": "page number served",
"count": "number of items on this page",
"items": "array of products: product_id (string key for get_graded_prices), name, category (game), set_name, set_id, card_number, rarity, sub_type (print variant), is_card (false for sealed products), image_url, market_price (ungraded USD), market_price_change / market_price_change_pct (recent change), has_psa10_price",
"query": "echo of the search term",
"next_page": "next page number, or null when this page was not full",
"page_size": "fixed page size (30)"
},
"sample": {
"data": {
"page": 1,
"count": 30,
"items": [
{
"name": "Mega Charizard X ex",
"rarity": "Promo",
"set_id": "24451",
"is_card": true,
"category": "Pokemon",
"set_name": "Mega Evolution Promos",
"sub_type": "Holofoil",
"image_url": "https://public.getcollectr.com/public-assets/products/product_659612.png?optimizer=image&format=webp&width=1200&quality=80&strip=metadata",
"product_id": "659612",
"card_number": "023",
"market_price": 34.94,
"has_psa10_price": true,
"market_price_change": 0.29,
"market_price_change_pct": 0.84
},
{
"name": "Charizard ex",
"rarity": "Special Illustration Rare",
"set_id": "23237",
"is_card": true,
"category": "Pokemon",
"set_name": "SV: 151",
"sub_type": "Holofoil",
"image_url": "https://public.getcollectr.com/public-assets/products/product_517045.jpg?optimizer=image&format=webp&width=1200&quality=80&strip=metadata",
"product_id": "517045",
"card_number": "199/165",
"market_price": 363.66,
"has_psa10_price": true,
"market_price_change": -10.25,
"market_price_change_pct": -2.74
},
{
"name": "Mega Charizard X ex Ultra Premium Collection",
"rarity": null,
"set_id": "2374",
"is_card": false,
"category": "Pokemon",
"set_name": "Miscellaneous Cards & Products",
"sub_type": "Normal",
"image_url": "https://public.getcollectr.com/public-assets/products/product_654213.png?optimizer=image&format=webp&width=1200&quality=80&strip=metadata",
"product_id": "654213",
"card_number": null,
"market_price": 232.48,
"has_psa10_price": false,
"market_price_change": 2.88,
"market_price_change_pct": 1.25
}
],
"query": "Charizard",
"next_page": 2,
"page_size": 30
},
"status": "success"
}
}About the Getcollectr API
Search the Collectr Catalog
The search_cards endpoint accepts a required query string (a card name, character name, or product name) and an optional page integer for paginating through results 30 items at a time. Each item in the returned items array includes a product_id, name, category (the game), set_name, set_id, card_number, and rarity. The next_page field is null when the current page was not full, giving a simple signal that you have reached the last page of results. Results are returned in Collectr's Best Match order and cover both individual cards and sealed products.
Graded Prices and PSA 10 History
The get_graded_prices endpoint takes a product_id from search results and returns two main data structures. The psa10 array breaks prices down by print sub-type (e.g., "Shadowless Holofoil"), each entry carrying the latest price, its price_date in YYYY-MM-DD format, and a history array of daily {date, price} points spanning approximately one year, ordered oldest first. The optional sub_type parameter restricts results to a single print variant exactly as listed in the sub_types field.
The graded array covers all other slab grades tracked by the site: each entry includes sub_type, company (PSA, BGS, CGC, ACE, or TAG), a numeric grade string, grade_label, grade_name, and the latest price in USD. Supporting fields like image_url, is_card, set_name, set_id, and rarity (null for sealed products) round out the response for display or storage purposes.
The Getcollectr API is a managed, monitored endpoint for Getcollectr.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when Getcollectr.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 Getcollectr.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 daily PSA 10 price trends for specific Pokemon card print variants using the
historyarray fromget_graded_prices. - Compare the latest grades across PSA, BGS, CGC, ACE, and TAG for a single card to identify valuation differences between grading companies.
- Build a portfolio tracker that stores
product_idreferences fromsearch_cardsand refreshes prices on a schedule. - Monitor sealed product values alongside individual cards using the
is_cardflag to separate the two in your pipeline. - Alert when a PSA 10
pricecrosses a threshold by pollingget_graded_pricesand comparing the latestprice_dateentry. - Populate a card database with set metadata—
set_name,set_id,card_number,rarity—returned bysearch_cardsacross multiple TCG categories. - Retrieve sub-type-specific pricing for cards with multiple print variants (e.g., first edition vs. shadowless) using the
sub_typefilter.
| 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 Getcollectr.com have an official developer API?+
What grading companies are covered by `get_graded_prices`, and is price history available for all of them?+
graded array returns latest prices for PSA, BGS, CGC, ACE, and TAG grades. Daily price history (the history array) is currently provided only for PSA 10 within the psa10 field, spanning roughly one year of data. You can fork this API on Parse and revise it to add history arrays for other grades if the source data becomes available.Does the API cover sales volume or transaction counts for graded cards?+
How does pagination work in `search_cards`, and how do I know when I've reached the last page?+
page parameter (1-based). When the next_page field in the response is null, the current page contained fewer than 30 items, indicating no further pages exist. If next_page returns a number, pass it as the page value in your next request.