Fanatics API endpoint
Returns one Fanatics product's detail (name, brand, category, price, availability, condition, images), plus per-size availability/price, a fit/value/quality review-rating breakdown, a richer media gallery, and comparable-product alternates (e.g. a jersey's Game/Limited/Elite stitch tiers) where Fanatics exposes them. Use GET /fanatics/search or GET /fanatics/category to discover product urls.
/fanatics/productReturns one Fanatics product's detail: name, brand, category,
description, price, availability, condition, images, per-size
availability/price, a review-rating breakdown, a media gallery, and
comparable-product alternates. Public data, sourced from the
product-detail page's own schema.org Product JSON-LD block, plus its
embedded page state for sizes, reviews, media, and
comparable_products.
Query parameters:
url (required) — a fanatics.com product-detail URL, exactly as
returned by a GET /fanatics/search or
GET /fanatics/category result's url field.Notable response behavior:
url must be a fanatics.com product-detail URL (recognized by its
+p-<id>+ path segment). A category URL, or a URL from another host,
returns 400.condition and availability are Fanatics' own schema.org values with
the schema.org/ URL prefix stripped (e.g. NewCondition, InStock,
OutOfStock).sizes and reviews are omitted when the product page carries no size
selector or no review data — not every product has both.reviews.fit/reviews.value/reviews.quality are omitted individually
when Fanatics doesn't collect that dimension for the product; reviews
itself is present whenever any rating data exists.reviews is an aggregate rating summary only — individual review text
is not part of this response (Fanatics' own product page does not embed
it).media is Fanatics' own richer image/video gallery (type is Image
or Video) — typically more entries, and higher-resolution images, than
images. Omitted when the page carries none.comparable_products lists alternate styles/tiers of essentially the
same item (e.g. a jersey's "Game" vs "Limited" vs "Elite" stitch tier,
in description), including the requested product's own entry — it is
not a generic "customers also viewed" recommendation list. Omitted when
the page carries none.| Field | Filled in, of 14 checked | Values in the sample |
|---|---|---|
| type | 14 | Image (13), Video (1) |
| url | 14 | fanatics.frgimages.com |
| thumbnail | 14 | fanatics.frgimages.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | A fanatics.com product-detail URL, exactly as returned by a fanatics_search or fanatics_category result's url field. | https://www.fanatics.com/nfl/indianapolis-colts/indianapolis-colts-fanatics-slice-shorts-royal/o-2472+t-03937001+p-94133518138+z-9-2488621558 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fanatics/product?url=https%3A%2F%2Fwww.fanatics.com%2Fnfl%2Findianapolis-colts%2Findianapolis-colts-fanatics-slice-shorts-royal%2Fo-2472%2Bt-03937001%2Bp-94133518138%2Bz-9-2488621558" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://www.fanatics.com/nfl/indianapolis-colts/jonathan-taylor-indianapolis-colts-nike-player-game-jersey-royal/o-2472+t-47822545+p-58766019129+z-9-116424846",
"fetched_at": "2026-09-16T04:00:00Z",
"product": {
"product_id": "3948955",
"name": "Jonathan Taylor Indianapolis Colts Nike Player Game Jersey - Royal",
"brand": "Nike",
"category": "Jerseys",
"url": "https://www.fanatics.com/nfl/indianapolis-colts/jonathan-taylor-indianapolis-colts-nike-player-game-jersey-royal/o-2472+t-47822545+p-58766019129+z-9-116424846",
"images": [
"https://fanatics.frgimages.com/indianapolis-colts/mens-nike-royal-jonathan-taylor-indianapolis-colts-player-game-jersey.jpg?_hv=2&w=600"
],
"currency_code": "USD",
"price": 149.99,
"condition": "NewCondition",
"availability": "InStock",
"sizes": [
{
"label": "S",
"available": true,
"price": 149.99
},
{
"label": "M",
"available": true,
"price": 149.99
},
{
"label": "L",
"available": true,
"price": 149.99
},
{
"label": "XL",
"available": true,
"price": 149.99
},
{
"label": "2XL",
"available": true,
"price": 149.99
}
],
"reviews": {
"has_reviews": true,
"review_count": 3248,
"overall": {
"average_rating": 4.4,
"rating_count": 13728,
"breakdown": [
{
"rating": 1,
"count": 1358
},
{
"rating": 5,
"count": 10411
}
]
},
"fit": {
"average_rating": 3.1,
"rating_count": 10810,
"breakdown": [
{
"rating": 3,
"count": 8243,
"label": "True to Size"
}
]
}
},
"media": [
{
"type": "Image",
"url": "https://fanatics.frgimages.com/indianapolis-colts/mens-nike-jonathan-taylor-royal-indianapolis-colts-player-game-jersey_ss5_p-3948955.png?_hv=2",
"thumbnail": "https://fanatics.frgimages.com/indianapolis-colts/mens-nike-jonathan-taylor-royal-indianapolis-colts-player-game-jersey_ss5_p-3948955.png?_hv=2"
},
{
"type": "Video",
"url": "https://fanatics.frgimages.com/indianapolis-colts/mens-nike-jonathan-taylor-royal-indianapolis-colts-player-game-jersey_ss5_p-3948955.mp4?_hv=2",
"thumbnail": "https://fanatics.frgimages.com/ss5/p-3948955_pv-701.jpg"
}
],
"comparable_products": [
{
"product_id": "3948955",
"description": "Game",
"url": "https://www.fanatics.com/nfl/indianapolis-colts/jonathan-taylor-indianapolis-colts-nike-player-game-jersey-royal/o-2472+t-47822545+p-58766019129+z-9-116424846",
"image": "https://fanatics.frgimages.com/indianapolis-colts/mens-nike-jonathan-taylor-royal-indianapolis-colts-player-game-jersey_ss5_p-3948955.png?_hv=2",
"currency_code": "USD",
"price": 149.99
},
{
"product_id": "2001803153",
"description": "Limited",
"url": "https://www.fanatics.com/nfl/indianapolis-colts/jonathan-taylor-indianapolis-colts-nike-team-vapor-fuse-stitched-limited-jersey-royal/o-4616+t-25265878+p-46226601215300+z-9-4286173976",
"image": "https://fanatics.frgimages.com/indianapolis-colts/mens-nike-jonathan-taylor-royal-indianapolis-colts-team-vapor-fuse-stitched-limited-jersey_ss5_p-2001803153.jpg?_hv=2",
"currency_code": "USD",
"price": 199.99
}
]
}
}
}Request schema
No body schema
Response schema
#/definitions/fanatics.productResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fanatics.ProductResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.product | fanatics.Product | No | ||||
| data.product.availability | string | No | InStock | |||
| data.product.brand | string | No | Fanatics | |||
| data.product.category | string | No | Shorts | |||
| data.product.comparable_products | array | No | ||||
| data.product.comparable_products[].currency_code | string | No | USD | |||
| data.product.comparable_products[].description | string | No | Limited | |||
| data.product.comparable_products[].image | string | No | ||||
| data.product.comparable_products[].price | number | No | 199.99 | |||
| data.product.comparable_products[].product_id | string | No | 46226601215300 | |||
| data.product.comparable_products[].url | string | No | ||||
| data.product.condition | string | No | NewCondition | |||
| data.product.currency_code | string | No | USD | |||
| data.product.description | string | No | ||||
| data.product.images | array | No | ||||
| data.product.media | array | No | ||||
| data.product.media[].thumbnail | string | No | ||||
| data.product.media[].type | string | No | Image | |||
| data.product.media[].url | string | No | ||||
| data.product.name | string | No | Indianapolis Colts Fanatics Slice Shorts - Royal | |||
| data.product.price | number | No | 49.99 | |||
| data.product.product_id | string | No | 5227968 | |||
| data.product.rating | number | No | ||||
| data.product.review_count | integer | No | ||||
| data.product.reviews | fanatics.ReviewsSummary | No | ||||
| data.product.reviews.fit | fanatics.RatingSummary | No | ||||
| data.product.reviews.fit.average_rating | number | No | 4.4 | |||
| data.product.reviews.fit.breakdown | array | No | ||||
| data.product.reviews.fit.breakdown[].count | integer | No | 10411 | |||
| data.product.reviews.fit.breakdown[].label | string | No | True to Size | |||
| data.product.reviews.fit.breakdown[].rating | integer | No | 5 | |||
| data.product.reviews.fit.rating_count | integer | No | 13728 | |||
| data.product.reviews.has_reviews | boolean | No | ||||
| data.product.reviews.overall | fanatics.RatingSummary | No | ||||
| data.product.reviews.overall.average_rating | number | No | 4.4 | |||
| data.product.reviews.overall.breakdown | array | No | ||||
| data.product.reviews.overall.breakdown[].count | integer | No | 10411 | |||
| data.product.reviews.overall.breakdown[].label | string | No | True to Size | |||
| data.product.reviews.overall.breakdown[].rating | integer | No | 5 | |||
| data.product.reviews.overall.rating_count | integer | No | 13728 | |||
| data.product.reviews.quality | fanatics.RatingSummary | No | ||||
| data.product.reviews.quality.average_rating | number | No | 4.4 | |||
| data.product.reviews.quality.breakdown | array | No | ||||
| data.product.reviews.quality.breakdown[].count | integer | No | 10411 | |||
| data.product.reviews.quality.breakdown[].label | string | No | True to Size | |||
| data.product.reviews.quality.breakdown[].rating | integer | No | 5 | |||
| data.product.reviews.quality.rating_count | integer | No | 13728 | |||
| data.product.reviews.review_count | integer | No | 3248 | |||
| data.product.reviews.value | fanatics.RatingSummary | No | ||||
| data.product.reviews.value.average_rating | number | No | 4.4 | |||
| data.product.reviews.value.breakdown | array | No | ||||
| data.product.reviews.value.breakdown[].count | integer | No | 10411 | |||
| data.product.reviews.value.breakdown[].label | string | No | True to Size | |||
| data.product.reviews.value.breakdown[].rating | integer | No | 5 | |||
| data.product.reviews.value.rating_count | integer | No | 13728 | |||
| data.product.sizes | array | No | ||||
| data.product.sizes[].available | boolean | No | true | |||
| data.product.sizes[].label | string | No | L | |||
| data.product.sizes[].price | number | No | 149.99 | |||
| data.product.url | string | No | ||||
| data.source_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/fanatics/product?url=https%3A%2F%2Fwww.fanatics.com%2Fnfl%2Findianapolis-colts%2Findianapolis-colts-fanatics-slice-shorts-royal%2Fo-2472%2Bt-03937001%2Bp-94133518138%2Bz-9-2488621558" \
-H "x-api-key: $CRAWLORA_API_KEY"