Discover/Fanatics API
live

Fanatics APIfanatics.com ↗

Retrieve product name, price, stock level, variant availability, and purchase action for any Fanatics.com product page via a single API endpoint.

Endpoint health
verified 18m ago
get_product
1/1 passing latest checkself-healing
Endpoints
1
Updated
57m ago

What is the Fanatics API?

The Fanatics.com API exposes 1 endpoint — get_product — that returns 14 structured fields for any Fanatics product page, including current and regular price, per-size variant availability, stock quantity, and a derived purchase_action that tells you whether an item can be added to cart, pre-ordered, put on a notify-me list, or is unavailable. Pass either a full product URL or a numeric product ID to retrieve the data.

This call costs1 credit / call— charged only on success
Try it
Either a full fanatics.com product page URL, or the numeric Fanatics product ID (the product_id value this endpoint returns, e.g. 205076860).
→ api.parse.bot/scraper/93ef3a96-f2fc-44c1-b620-00962251f74b/<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/93ef3a96-f2fc-44c1-b620-00962251f74b/get_product?product=https%3A%2F%2Fwww.fanatics.com%2Fformula-1%2Fformula-1-merchandise%2F2026-topps-chrome-formula-1-factory-sealed-mega-box%2Fo-21875592%2Bt-98213354%2Bp-57227825783%2Bz-9-2569285396' \
  -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 fanatics-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: Fanatics product details — look up a product and inspect its availability."""
from parse_apis.fanatics_com_api import Fanatics, ProductNotFound

client = Fanatics()

# Fetch a product by its full URL.
try:
    product = client.products.get(
        product="https://www.fanatics.com/formula-1/formula-1-merchandise/2026-topps-chrome-formula-1-factory-sealed-mega-box/o-21875592+t-98213354+p-57227825783+z-9-2569285396"
    )
except ProductNotFound:
    print("Product not found")
    raise SystemExit

print(product.name, "-", product.brand)
print(f"  Price: {product.current_price} {product.currency} (regular {product.regular_price})")
print(f"  Can add to cart: {product.can_add_to_cart}, action: {product.purchase_action}")

# Walk per-size availability using the typed Size objects.
for variant in product.sizes:
    status = "in stock" if variant.available else "out of stock"
    print(f"  {variant.size}: {variant.price} {product.currency} — {status} (qty {variant.quantity_on_hand})")

# Re-fetch the same product by its numeric ID (discovered from the first call).
refreshed = client.products.get(product=product.product_id)
print(f"\nRefreshed: {refreshed.name}, active={refreshed.is_active}")

print("exercised: products.get (by URL and by ID)")
All endpoints · 1 totalmissing one? ·

Returns the details of one Fanatics.com product: name, numeric product ID, current and regular price in the site's currency, stock level, per-size/variant availability, and a derived purchase_action (add_to_cart, pre_order, notify_me, or unavailable) that states whether the product can currently be bought. can_add_to_cart is true when at least one size/variant is available; is_pre_order is true when an available variant carries a promise ship date (pre-order products were not observed during the build, so that branch is unverified). One page request per call. An unknown product ID or URL returns a stale_input (not found) error.

Input
ParamTypeDescription
productrequiredstringEither a full fanatics.com product page URL, or the numeric Fanatics product ID (the product_id value this endpoint returns, e.g. 205076860).
Response
{
  "type": "object",
  "fields": {
    "url": "canonical product page URL",
    "name": "product title",
    "team": "array of team names",
    "brand": "brand name",
    "sizes": "array of size/variant records: item_id, size, available, quantity_on_hand, quantity_level, promise_ship_date, max_quantity_per_order, price",
    "league": "array of league names",
    "on_sale": "site's on-sale flag",
    "currency": "ISO currency code of the prices",
    "few_left": "few-left flag",
    "image_url": "primary image URL",
    "is_active": "product is active on the site",
    "categories": "array of category names",
    "product_id": "numeric Fanatics product ID as a string",
    "is_pre_order": "true when an available variant has a promise ship date (pre-order)",
    "product_tags": "array of site tags",
    "stock_status": "site stock status text, null when none",
    "current_price": "current selling price (number)",
    "has_inventory": "site-level inventory flag",
    "is_customized": "customizable product flag",
    "is_returnable": "whether the item is eligible for returns",
    "ready_to_ship": "ready-to-ship flag",
    "regular_price": "regular/list price (number)",
    "stock_message": "site stock message text, null when none",
    "quantity_level": "site stock level label (e.g. no_inventory, low)",
    "can_add_to_cart": "true when at least one variant is available to add to cart",
    "purchase_action": "add_to_cart | pre_order | notify_me | unavailable",
    "markdown_percent": "percent discount from regular to current price",
    "notify_me_eligible": "whether a back-in-stock notification is offered"
  },
  "sample": {
    "data": {
      "url": "https://www.fanatics.com/formula-1/formula-1-merchandise/2026-topps-chrome-formula-1-factory-sealed-mega-box/o-21875592+t-98213354+p-57227825783+z-9-2569285396",
      "name": "2026 Topps Chrome Formula 1 Factory Sealed Mega Box",
      "team": [
        "Formula 1 Merchandise"
      ],
      "brand": "Topps",
      "sizes": [
        {
          "size": "No Size",
          "price": 69.99,
          "item_id": "214182657",
          "available": false,
          "quantity_level": "no_inventory",
          "quantity_on_hand": 0,
          "promise_ship_date": null,
          "max_quantity_per_order": 8
        }
      ],
      "league": [
        "Formula 1"
      ],
      "on_sale": false,
      "currency": "USD",
      "few_left": false,
      "image_url": "https://fanatics.frgimages.com/formula-1-merchandise/2026-topps-chrome-formula-1%C2%A0factory-sealed-mega-box_ss5_p-205076860+u-a8dnwpg2bge3blhyo8gt+v-lfzynuz0z5azohhuubck.jpg?_hv=2",
      "is_active": true,
      "categories": [
        "Collectibles & Memorabilia",
        "Trading Cards",
        "Trading Cards"
      ],
      "product_id": "205076860",
      "is_pre_order": false,
      "product_tags": [
        "Topps Consignment",
        "New Arrivals"
      ],
      "stock_status": null,
      "current_price": 69.99,
      "has_inventory": false,
      "is_customized": false,
      "is_returnable": false,
      "ready_to_ship": false,
      "regular_price": 69.99,
      "stock_message": null,
      "quantity_level": "no_inventory",
      "can_add_to_cart": false,
      "purchase_action": "unavailable",
      "markdown_percent": 0,
      "notify_me_eligible": false
    },
    "status": "success"
  }
}

About the Fanatics API

What get_product Returns

The get_product endpoint accepts a product parameter — either a full fanatics.com product page URL or the numeric Fanatics product ID. It returns a canonical url, the product name, brand, associated league and team arrays, an image_url, and the ISO currency code alongside the current and regular prices. The on_sale flag and few_left flag come back as booleans directly from the product record.

Variant and Stock Fields

The sizes array is the most granular part of the response. Each entry in the array represents a single size or variant and carries: item_id, size label, available boolean, quantity_on_hand, quantity_level (a tiered stock indicator), promise_ship_date, and max_quantity_per_order. This lets you distinguish between a product that is globally out of stock and one where only certain sizes remain, or where a specific variant ships later than others.

The purchase_action Field

Rather than leaving you to derive purchasability from raw stock fields, the endpoint returns a purchase_action string. The four possible values — add_to_cart, pre_order, notify_me, and unavailable — map directly to the actionable state of the product at the time of the request. This is useful for alerting workflows, price trackers, and inventory monitors that need a single reliable signal without re-implementing the purchasability logic themselves.

Coverage Scope

The API covers licensed sports merchandise listed on fanatics.com, including items associated with NFL, NBA, MLB, NHL, Formula 1, and other leagues represented on the platform. Each product may carry multiple team and league associations, which are returned as arrays. Products without league or team attribution (e.g. generic collectibles) return empty arrays for those fields.

Reliability & maintenanceVerified

The Fanatics API is a managed, monitored endpoint for fanatics.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fanatics.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 fanatics.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
18m ago
Latest check
1/1 endpoint 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
  • Monitor price drops on specific Fanatics products by comparing on_sale and current price fields over time.
  • Track restocks for sold-out jersey sizes by polling the sizes[].available and quantity_on_hand fields.
  • Build a pre-order alert system using the purchase_action field to detect when a product transitions from pre_order to add_to_cart.
  • Aggregate licensed merchandise inventory across multiple team pages by iterating product IDs and recording quantity_level values.
  • Surface few_left warnings in a fan shop dashboard to prompt urgency messaging before items go out of stock.
  • Compare regular vs. current price across a set of product IDs to identify active promotions without visiting each page.
  • Filter collectible products by league or team using the league and team arrays to build sport-specific product feeds.
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 Fanatics have an official public developer API?+
Fanatics does not publish a public developer API for product data. There is no documented REST or GraphQL interface available to third-party developers through the Fanatics website.
What does the `purchase_action` field actually distinguish?+
It returns one of four string values: add_to_cart means the product is in stock and purchasable now; pre_order means it can be reserved before its release date; notify_me means it is currently unavailable but the site offers a restock notification; unavailable means none of those actions are currently possible. The distinction between notify_me and unavailable is meaningful for alert-system logic.
Can I look up a product by its numeric ID instead of its full URL?+
Yes. The product input parameter accepts either a full fanatics.com product page URL or the numeric product ID alone (the product_id value the endpoint also returns in its response). Both formats resolve to the same product record.
Does the API return customer reviews or ratings for Fanatics products?+
Not currently. The API covers product details, pricing, stock, variant availability, and purchase action. Customer reviews and star ratings are not included in the response. You can fork this API on Parse and revise it to add a reviews endpoint if that data is needed.
Is there a way to search Fanatics by team or league rather than fetching one product at a time?+
Not currently. The API is scoped to single-product lookups via the get_product endpoint; there is no search or browse endpoint that accepts a team name or league as a filter. You can fork the API on Parse and revise it to add a search or category-listing endpoint.
Page content last updated . Spec covers 1 endpoint from fanatics.com.
Related APIs in EcommerceSee all →