Fanatics
Fanatics Search API
Search Fanatics licensed sports merchandise (jerseys, hats, fan gear, collectibles) by keyword on 8 storefronts (US, UK, Germany, France, Spain, Italy, Japan, Canada) and the 4 US league stores (NFL Shop, MLB Shop, NHL Shop, MLS Store), in the storefront's language and currency. Narrow by gender, league_id, department_id or any facet value through filters (team, player, size, color style, autographed), and sort by top sellers, price or newest. 24, 48 or 72 items per page with id, title, brand, URL, image, regular, sale, clearance and with-code prices, percent off, price label, Top Seller badge, customizable, ship-by and delivery estimates and the site's selling signals. Also returns total (counted up to 9,000), every facet with ids and counts, the site's spelling correction and data_as_of. Merchandise only: no odds or betting data. 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/jsonquerystringrequiredSearch keywords, 1-200 characters. Misspellings are corrected by the site (corrected_query).
Example: chiefs jersey
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).
genderenum<string>Only one gender or age group.
Example: women
men— Men.women— Women.kids— Kids.baby— Baby.
league_idinteger | stringOnly one league: an id from facets (NFL 25, MLB 19, NBA 23, NHL 26, College 5).
Example: 25
department_idinteger | stringOnly one department: an id from the facets of the same storefront or store (fanatics.com Jerseys 8011, Hats 8008, T-Shirts 8022; NFL Shop's Jerseys is 14012).
Example: 8011
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")
# Chiefs jerseys on fanatics.com, cheapest first (by current price, before any code).
res = client.fanatics.search(query="chiefs jersey", department_id=8011, sort="price_low_to_high")["data"]
print(res["total"], "items, page built", res["data_as_of"])
for item in res["items"]:
print(item["id"], item["title"], item["regular_price"], item["clearance_price"], item["with_code_price"])Response