Discover/PWCC Marketplace API
live

PWCC Marketplace APIpwccmarketplace.com

Search and retrieve graded trading card listings from PWCC/Fanatics Collect. Get PSA grades, cert numbers, auction prices, card year, set, and more.

This API takes change requests — .
Endpoints
2
Updated
1mo ago

What is the PWCC Marketplace API?

The PWCC Marketplace API provides 2 endpoints for searching and retrieving graded trading card listings from the Fanatics Collect (PWCC) marketplace. The search_listings endpoint returns paginated results covering card title, PSA grade, certification number, sale price, year, brand, and card number — filterable by listing status (Sold or Live) and marketplace type (PREMIER, WEEKLY, or FIXED). A second endpoint, get_listing_details, returns full per-listing data by UUID.

Try it
Zero-based page number for pagination.
Filter by listing status. Accepts: Sold, Live. Omitted returns all statuses.
Search keywords for finding listings (e.g. 'charizard psa 10', 'michael jordan rookie').
Filter by marketplace type. Accepts: PREMIER, WEEKLY, FIXED. Omitted returns all marketplace types.
Number of results per page.
api.parse.bot/scraper/6f75fc48-78a3-4fa4-a96a-937d35bf9385/<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/6f75fc48-78a3-4fa4-a96a-937d35bf9385/search_listings' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 pwccmarketplace-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.

"""
PWCC / Fanatics Collect Marketplace API Client

Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Optional


class ParseClient:
    """Client for PWCC / Fanatics Collect Marketplace API"""
    
    def __init__(self, api_key: Optional[str] = None):
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "6f75fc48-78a3-4fa4-a96a-937d35bf9385"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")
        if not self.api_key:
            raise ValueError("API key must be provided or set in PARSE_API_KEY environment variable")
    
    def _call(self, endpoint: str, method: str = "POST", **params) -> dict:
        """Make API call to Parse Bot"""
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        
        if method == "GET":
            response = requests.get(url, headers=headers, params=params)
        elif method == "POST":
            response = requests.post(url, headers=headers, json=params)
        else:
            raise ValueError(f"Unsupported HTTP method: {method}")
        
        response.raise_for_status()
        return response.json()
    
    def search_listings(
        self,
        keywords: str,
        page: int = 0,
        hits_per_page: int = 20,
        marketplace: Optional[str] = None,
        status: Optional[str] = None
    ) -> dict:
        """
        Search PWCC/Fanatics Collect marketplace listings by keywords.
        
        Args:
            keywords: Search keywords (e.g. 'charizard psa 10', 'michael jordan rookie')
            page: Zero-based page number for pagination (default: 0)
            hits_per_page: Number of results per page (default: 20)
            marketplace: Filter by marketplace type (PREMIER, WEEKLY, FIXED)
            status: Filter by listing status (Sold, Live)
        
        Returns:
            Dictionary with results, total_hits, page info
        """
        params = {
            "keywords": keywords,
            "page": page,
            "hits_per_page": hits_per_page
        }
        
        if marketplace:
            params["marketplace"] = marketplace
        if status:
            params["status"] = status
        
        return self._call("search_listings", method="GET", **params)
    
    def get_listing_details(self, listing_uuid: str) -> dict:
        """
        Get full details for a specific PWCC/Fanatics Collect listing.
        
        Args:
            listing_uuid: UUID of the listing (e.g. '232c2cb0-6f25-11ed-a516-0a58a9feac02')
        
        Returns:
            Dictionary with complete listing details including description
        """
        return self._call("get_listing_details", method="GET", listing_uuid=listing_uuid)


def main():
    """Practical usage example: Search for cards and get details for top results"""
    
    client = ParseClient()
    
    print("=" * 70)
    print("PWCC / Fanatics Collect Marketplace Search")
    print("=" * 70)
    
    search_keyword = "charizard psa 10"
    print(f"\nSearching for: '{search_keyword}'")
    print("-" * 70)
    
    search_results = client.search_listings(
        keywords=search_keyword,
        page=0,
        hits_per_page=5,
        status="Sold"
    )
    
    print(f"Found {search_results['total_hits']} total listings")
    print(f"Showing page {search_results['page']} of {search_results['total_pages']}")
    print(f"Results per page: {search_results['hits_per_page']}\n")
    
    if not search_results['results']:
        print("No results found.")
        return
    
    print(f"Top {len(search_results['results'])} listings:\n")
    
    for idx, listing in enumerate(search_results['results'], 1):
        print(f"{idx}. {listing['title']}")
        print(f"   Year: {listing['year']}")
        print(f"   Card #: {listing['card_number']}")
        print(f"   Grade: PSA {listing['grade']} (Cert: {listing['cert_number']})")
        print(f"   Status: {listing['status']}")
        
        if listing['status'] == "Sold":
            price_dollars = listing.get('purchase_price_cents', 0) / 100
            print(f"   Sold Price: ${price_dollars:,.2f}")
        else:
            bid_dollars = listing.get('current_bid_cents', 0) / 100
            print(f"   Current Bid: ${bid_dollars:,.2f}")
        
        print(f"   Marketplace: {listing['marketplace']}")
        print()
    
    if search_results['results']:
        first_listing_uuid = search_results['results'][0]['listing_uuid']
        print("-" * 70)
        print(f"\nFetching detailed information for first listing...")
        print(f"UUID: {first_listing_uuid}\n")
        
        details = client.get_listing_details(first_listing_uuid)
        
        print("Full Listing Details:")
        print(f"Title: {details['title']}")
        print(f"Subtitle: {details.get('subtitle', 'N/A')}")
        print(f"Grade: PSA {details['grade']}")
        print(f"Certification: {details['cert_number']}")
        print(f"Year: {details['year']}")
        print(f"Card Number: {details['card_number']}")
        print(f"Category: {details.get('category', 'N/A')}")
        print(f"Brand: {details['brand']}")
        
        if 'description' in details and details['description']:
            print(f"\nDescription:\n{details['description'][:500]}...")
        
        print("\n" + "=" * 70)
        print("Search and detail retrieval completed successfully!")


if __name__ == "__main__":
    main()
All endpoints · 2 totalmissing one? ·

Search PWCC/Fanatics Collect marketplace listings by keywords. Returns paginated results with card details including PSA grade, certification number, prices, year, and card number. Results are sorted by relevance by default.

Input
ParamTypeDescription
pageintegerZero-based page number for pagination.
statusstringFilter by listing status. Accepts: Sold, Live. Omitted returns all statuses.
keywordsrequiredstringSearch keywords for finding listings (e.g. 'charizard psa 10', 'michael jordan rookie').
marketplacestringFilter by marketplace type. Accepts: PREMIER, WEEKLY, FIXED. Omitted returns all marketplace types.
hits_per_pageintegerNumber of results per page.
Response
{
  "type": "object",
  "fields": {
    "page": "integer",
    "results": "array of listing objects with card details",
    "total_hits": "integer",
    "total_pages": "integer",
    "hits_per_page": "integer"
  },
  "sample": {
    "page": 0,
    "results": [
      {
        "year": 1996,
        "brand": "Charizard-Holo",
        "grade": 10,
        "title": "1996 Pokemon Japanese Base Set Holo Charizard NO RARITY, ARITA AUTO #6 PSA 10",
        "status": "Sold",
        "category": "Pokémon",
        "subtitle": "PSA Pop 1 of 7 - Signed On Case By Mitsuhiro Arita",
        "bid_count": 35,
        "image_url": "https://dilxwvfkfup17.cloudfront.net/...",
        "listed_at": 1648854000,
        "object_id": "PREMIER2731",
        "sold_date": 1650170476,
        "listing_id": 2731,
        "lot_number": "PA11 Lot: 31",
        "card_number": "6",
        "cert_number": "24909560",
        "marketplace": "PREMIER",
        "auction_name": "April Premier Auction",
        "listing_uuid": "232c2cb0-6f25-11ed-a516-0a58a9feac02",
        "category_parent": "Trading Card Games",
        "grading_service": "PSA",
        "current_bid_cents": 270000,
        "starting_bid_cents": 1000,
        "current_price_cents": 270000,
        "purchase_price_cents": 324000
      }
    ],
    "total_hits": 4235,
    "total_pages": 800,
    "hits_per_page": 3
  }
}

About the PWCC Marketplace API

What the API Returns

The PWCC Marketplace API covers graded trading cards listed on the Fanatics Collect (formerly PWCC) platform. Each result from search_listings includes the card title, PSA grade, PSA certification number, year, brand/set name, card number, listing status, and pricing information. Results are paginated — the response includes page, total_hits, total_pages, and hits_per_page fields alongside the results array. The page parameter is zero-based.

Filtering and Scoping Searches

search_listings accepts a required keywords string (e.g. charizard psa 10 or michael jordan rookie) and several optional filters. status restricts results to either Sold or Live listings; omitting it returns both. marketplace narrows to one of three auction/sale formats: PREMIER, WEEKLY, or FIXED. hits_per_page controls page size. These filters let you build targeted comparisons — for example, retrieving only sold PREMIER auction results to construct a price history for a specific card and grade.

Listing Detail Endpoint

get_listing_details accepts a listing_uuid obtained from search_listings results and returns a richer object for a single listing. Fields include slug, year, brand, grade, title, status, category, subtitle, listing_id, and card_number. A full text description is included when available. This endpoint is useful for resolving details on a specific lot before or after a sale.

Coverage Scope

The API reflects listings on the PWCC/Fanatics Collect marketplace specifically. PSA-graded cards are the primary focus, consistent with the platform's inventory. Data freshness depends on listing activity on the platform; sold listings remain queryable via the status=Sold filter, making historical price lookups viable within the available listing archive.

Reliability & maintenance

The PWCC Marketplace API is a managed, monitored endpoint for pwccmarketplace.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pwccmarketplace.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 pwccmarketplace.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?+
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
  • Build a PSA 10 price tracker for specific Pokémon cards using status=Sold results over time
  • Compare hammer prices across PREMIER vs WEEKLY auction formats for the same card and grade
  • Verify PSA certification numbers for cards before purchase using the get_listing_details cert field
  • Aggregate recent sold prices for a player's rookie cards to estimate current market value
  • Alert collectors when a specific card (by keyword and grade) goes Live on the marketplace
  • Research year and set distribution for graded copies of a card currently available as FIXED listings
  • Pull listing metadata (title, subtitle, brand, card_number) to populate a collection management tool
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does PWCC/Fanatics Collect have an official developer API?+
Fanatics Collect does not publish a documented public developer API for marketplace listing data. This Parse API provides structured access to that listing data.
What does the `status` filter in `search_listings` actually distinguish?+
status=Live returns listings currently active on the marketplace, while status=Sold returns completed transactions with final sale prices. Omitting the parameter returns both. This distinction is key for separating asking prices from realized prices when doing valuation work.
Does the API cover BGS (Beckett), SGC, or other grading companies, or only PSA?+
The API reflects listings on the PWCC/Fanatics Collect marketplace, which hosts cards graded by multiple services including BGS and SGC alongside PSA. The structured response fields (grade, certification number) are present where the listing includes them, but coverage depends on what is listed. You can fork this API on Parse and revise it to add explicit grading-company filters if needed.
Is there a way to retrieve seller profiles or bidding history for a listing?+
Not currently. The API covers listing-level data: card details, grades, prices, and status. Seller profiles and bid-by-bid auction history are not included in the response fields. You can fork this API on Parse and revise it to add an endpoint targeting that data if it becomes a requirement.
How does pagination work in `search_listings`?+
Pagination is zero-based via the page parameter. The response includes total_hits, total_pages, and hits_per_page so you can calculate how many requests are needed to walk through a full result set. hits_per_page can be set explicitly per request.
Page content last updated . Spec covers 2 endpoints from pwccmarketplace.com.
Related APIs in MarketplaceSee all →
ebay.com API
Search and monitor eBay listings across any category, with support for active and completed/sold listings. Retrieve item details, pricing history, seller profiles and feedback, and category data. Filter by keyword, category, condition, seller, and sort order to support price research, market analysis, and inventory monitoring.
psacard.com API
Look up PSA certification details for graded collectible cards and search comprehensive population reports and price guides across all card categories. Browse collectible categories by set to discover grading data, pricing information, and population statistics.
mercadolibre.com.ar API
Search for products, cars, and real estate listings on MercadoLibre Argentina and access detailed information including product specifications, customer reviews, and seller profiles. Get comprehensive market data to compare prices, evaluate sellers, and make informed purchasing decisions across multiple categories.
willhaben.at API
Search and browse listings across Austria's largest classifieds platform. Access marketplace goods, real estate (for sale and rent), cars, jobs, and full listing details — all from a single API.
mercadolibre.com API
Search and retrieve product listings, details, customer reviews, categories, and current deals from MercadoLibre across multiple countries to find the best products and prices. Get comprehensive product information including specifications and user feedback to make informed purchasing decisions.
jp.mercari.com API
Search and browse millions of product listings on Mercari Japan with bilingual support, filtering by categories and getting detailed pricing, item specifications, and seller information. Access comprehensive marketplace data including product summaries, category overviews, and individual seller profiles to find exactly what you're looking for.
finn.no API
Search and retrieve listings across Norwegian marketplaces on FINN.no, including vehicles, real estate, jobs, and second-hand items. Access structured listing data such as price, location, images, and category-specific attributes across all major FINN.no verticals.
etsy.com API
Discover what shoppers are searching for on Etsy by accessing real-time trending keywords and popular search terms that can help you identify market demand and optimize your product listings. Get instant access to autocomplete suggestions and "Popular right now" trends to stay ahead of customer interests and improve your shop's visibility.