COMC APIcomc.com ↗
Search COMC's trading card marketplace via API. Retrieve card listings with prices, images, set details, and availability across Baseball, Basketball, and more.
What is the COMC API?
The COMC API provides access to trading card listings from Check Out My Cards via a single search_listings endpoint, returning up to 7 response fields per listing including price, image URL, set description, and seller availability. You can query by player name, set name, or card number, and optionally narrow results by sport category. Results are paginated in batches of up to 100 listings, sorted by Suggested Retail Price.
curl -X GET 'https://api.parse.bot/scraper/214a63d8-8383-4871-9267-593aec0bf063/search_listings?page=1&query=Michael+Jordan&grader=PSA&category=Basketball&listing_type=auction' \ -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 comc-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: COMC sports card search — bounded, re-runnable."""
from parse_apis.comc_com_api import Comc, ListingType, InvalidInput
client = Comc()
# Search for graded basketball cards on auction, capped at 5 results.
for card in client.listings.search(
query="Michael Jordan",
category="Basketball",
listing_type=ListingType.AUCTION,
limit=5,
):
print(card.title, card.price, card.set_description)
# Drill-down: find the first buy-now card with a specific grader.
card = client.listings.search(
query="LeBron James",
grader="PSA",
listing_type=ListingType.BUY_NOW,
limit=1,
).first()
if card is not None:
print(card.title, card.price, card.on_sale)
if card.attributes:
print("attributes:", ", ".join(card.attributes))
# Browse all football cards without a query, capped at 3 results.
for card in client.listings.search(category="Football", limit=3):
print(card.title, card.price)
# Handle invalid input gracefully.
try:
client.listings.search(query="Shohei Ohtani", listing_type="invalid", limit=1).first()
except InvalidInput as e:
print("caught invalid input:", e.message)
print("exercised: listings.search (auction / buy_now / browse / error)")
Search for sports card listings on COMC by keyword. Returns paginated results sorted by Highest SRP (Suggested Retail Price). Each page returns up to 100 listings with card details, pricing, and seller availability. Supports optional category filtering (e.g. Baseball, Basketball, Football, Hockey), grading company filtering (e.g. PSA, BGS, SGC), and listing type filtering (auction or buy_now). When query is omitted, browses all listings matching the applied filters. Use the page parameter to paginate through results.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-indexed). Each page contains up to 100 listings. |
| query | string | Search query for cards (e.g. player name, set name, card number). When omitted, returns all listings matching other filters. |
| grader | string | Grading company filter. When omitted, returns all listings regardless of grading. Observed values include PSA, BGS, SGC, CGC, CSG. |
| category | string | Sport category filter. When omitted, searches across all categories. Observed values include Baseball, Basketball, Football, Hockey, MultiSport. |
| listing_type | string | Listing format filter. When omitted, returns both auction and buy-now listings. |
{
"type": "object",
"fields": {
"page": "Current page number",
"query": "The search query used, or empty string if browsing without query",
"grader": "Grading company filter applied, or null if not filtered",
"category": "Category filter applied, or null if not filtered",
"listings": "Array of card listing objects with set_description, title, url, image_url, price, on_sale, team (null when not available from search results), and optional attributes, quantity_available, and auction_time_left",
"total_pages": "Total number of pages available",
"listing_type": "Listing type filter applied, or null if not filtered",
"total_listings": "Total number of matching listings across all pages",
"listings_per_page": "Number of listings per page (up to 100)"
}
}About the COMC API
What the API Returns
The search_listings endpoint queries the COMC marketplace and returns an array of listings objects alongside pagination metadata. Each listing includes title, set_description, url, image_url, price, on_sale status, and optional fields such as attributes and quantity_avail. The top-level response also carries total_listings, total_pages, listings_per_page, and echoes back your query and category for traceability.
Filtering and Pagination
The query parameter is required and accepts free-text searches — player names, set names, card numbers, or any combination. The optional category parameter filters by sport (e.g., Baseball, Basketball); omitting it searches across all sport categories. Pagination is controlled via the page parameter (1-indexed), with each page delivering up to 100 listings. The total_pages field in the response lets you walk the full result set programmatically.
Pricing and Availability Data
Every listing includes a price field reflecting the SRP-based sort order, as well as an on_sale flag indicating whether the card is currently discounted. The quantity_avail field, when present, tells you how many copies of that card are listed. This combination of price, sale status, and quantity makes the endpoint useful for inventory checks and price comparison across specific cards or sets.
The COMC API is a managed, monitored endpoint for comc.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when comc.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 comc.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 the current asking price for a specific player's cards across all sets using the
queryandpricefields - Monitor sale listings for a sport category by filtering with
categoryand checking theon_saleflag - Build a card collection tracker by querying set names and storing
set_descriptionandimage_urlfields - Check available quantity for a card using
quantity_availbefore attempting to purchase - Paginate through all Baseball rookie card listings to index SRP values across the marketplace
- Compare listing counts for different players by inspecting
total_listingsacross separate queries
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does COMC offer an official developer API?+
What does the `search_listings` endpoint actually return for each card?+
title, set_description, url, image_url, price, on_sale, quantity_avail, and optional attributes. The response also includes total_listings, total_pages, and listings_per_page to support full pagination.Does the API cover seller profiles, transaction history, or completed sales data?+
search_listings. You can fork this API on Parse and revise it to add an endpoint for seller profiles or sold-listing history.Are results sorted in any particular order, and can that be changed?+
search_listings endpoint returns listings in that fixed order. You can fork this API on Parse and revise it to add alternate sort options such as lowest price or newest listings.How complete is the category coverage across sports?+
category parameter supports observed values including Baseball and Basketball. Other sport categories available on COMC may also be valid filter values, but they have not all been formally enumerated in the spec. Passing no category value searches across all categories.