Fanatics
Fanatics Browse API
Browse a Fanatics listing by its URL or by ids: a team (Lakers), a player (Patrick Mahomes), a league section (NFL hats), a department, a brand ('47, Nike, New Era) or a collection, on 8 storefronts and the 4 US league stores. Filter by price band, on sale, gender and any facet (sizes, color style, autographed), and sort by top sellers, price or newest. Returns what the page shows (league, team, player, department, brand, collection), 24, 48 or 72 items per page with regular, sale, clearance and with-code prices, and every facet with its ids: teams, players (when the page lists them, e.g. Lakers), departments, brands, collections and sizes. Merchandise only. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonurlstringA Fanatics listing URL: a team, player, league section, department, brand or collection page from the site, or a breadcrumb url from product. Alternative to the ids.
Example: https://www.fanatics.com/nba/los-angeles-lakers/o-23+t-3372
league_idinteger | stringLeague id (NFL 25, MLB 19, NBA 23, NHL 26, College 5). A league alone is a landing page: combine it with another id or a filter.
Example: 23
team_idinteger | stringTeam id from facets (Los Angeles Lakers 3372, Kansas City Chiefs 3433).
Example: 3372
player_idinteger | stringPlayer id from the players facet when the page lists one (e.g. Lakers), or from a product's player[] (Patrick Mahomes 12072, Aaron Judge 31).
Example: 12072
department_idinteger | stringDepartment id from the facets of the same storefront or store (fanatics.com Hats 8008, Jerseys 8011; NFL Shop's Jerseys is 14012), or parent-child for a sub-department (8008-8084, Adjustable hats).
Example: 8008
brand_idinteger | stringBrand id from facets.brands ('47 479, Nike 76, New Era 127).
Example: 479
collection_idinteger | stringCollection id from facets (City Edition 11552).
Example: 11552
countryenum<string>default:usThe Fanatics storefront. Titles come back in the storefront's language, prices in its currency.
Example: de
us— United States (fanatics.com), USD. The default, and the only storefront that takes site.gb— United Kingdom (fanatics.co.uk), GBP.de— Germany (fanatics.de), EUR.fr— France (fanatics.fr), EUR.es— Spain (fanatics.es), EUR.it— Italy (fanatics.it), EUR.jp— Japan (fanatics.jp), JPY. No price bands.ca— Canada (fanatics.ca), CAD. language en (default) or fr.
languageenum<string>Only for country ca: en (default) or fr. Every other storefront has one language.
Example: fr
en— English. The default on ca.fr— French, on ca.
siteenum<string>default:fanaticsUS only (country us): which store to read. The league stores use the same product ids as fanatics.com and write their own titles. Department and filter ids are per store (Jerseys is 8011 on fanatics.com, 14012 on NFL Shop): take them from the facets of the store you query, since an id from another store is silently ignored. Any site with another country is a 400.
Example: nflshop
fanatics— fanatics.com. The default.nflshop— NFL Shop (nflshop.com).mlbshop— MLB Shop (mlbshop.com).nhlshop— NHL Shop (shop.nhl.com).mlsstore— MLS Store (mlsstore.com).
on_salebooleanOnly sale items.
Example: true
price_bandenum<string>The site's price bands in the storefront's currency, applied to its lowest price (the with-code price when a promo code applies, so a few items list a little above the band). Not on jp.
Example: under_25
under_25— Under 25.25_50— 25 to 50.50_100— 50 to 100.100_150— 100 to 150.over_150— Over 150.
genderenum<string>Only one gender or age group.
Example: women
men— Men.women— Women.kids— Kids.baby— Baby.
filtersobjectFilters from a previous response: {facets[].values[].filter: facets[].values[].value}, one value per filter, up to 12. E.g. {"ga": "2"} (Women), {"ks": "126"} (a kids size), {"sz": "337"} (a standard size), {"cs": "2"} (Fashion), {"fa": "1"} (Autographed), {"t": "3433"} (a team). Values are the ids of the same storefront.
Example: {"ga": "2"}
pageintegerResults page, 1-based. Fanatics lists at most 9,000 products per listing, so the last page is 125 at 72 per page (188 at 48, 375 at 24). Defaults to 1.
Example: 2
page_sizeenum<integer>default:72Items per page.
24— 24 items.48— 48 items.72— 72 items. The default.
sortenum<string>default:top_sellersThe order of the listing. Price sorts order by price (the current price, before any promo code), not by the with-code price.
top_sellers— Fanatics' Top Sellers order. The default.price_low_to_high— Cheapest first.price_high_to_low— Most expensive first.newest— Newest arrivals first.
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Every Lakers hat, then the players the team page lists (their ids work as player_id).
res = client.fanatics.browse(league_id=23, team_id=3372, department_id=8008)["data"]
print(res["browse"]["team"], res["total"], "items")
players = next(f for f in res["facets"] if f["id"] == "players")
for v in players["values"]:
print(v["label"], v["value"], v["count"])Response