Fanatics
Fanatics Reviews API
Real customer review text for one fanatics.com product by id or URL, 1 to 50 reviews per call (default 10), sorted highest rated (default, the site's order), lowest rated, most recent or most helpful, optionally only one star rating. Returns the rating stats (review_count, rating_count, average, the 1-5 distribution, fit, quality and value averages), the site's own AI-written review summary (labelled ai_summary) and the features reviewers mention. Each review has rating, fit, quality, value, recommended, title, text, nickname, dates, incentivized, helpful votes, features with sentiment, photos and the product it was written for: Fanatics pools reviews across a style, so the list covers sibling products. Slow: usually 20 to 90 seconds, allow 300. US 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/jsonproduct_idstringA Fanatics product id (a search result's id). One of product_id or url is required.
Example: 3892922
urlstringA fanatics.com product URL. Alternative to product_id.
Example: https://www.fanatics.com/x/p-3892922
countryenum<string>default:usus only: this endpoint covers fanatics.com (United States) and nothing else. Any other value is a 400.
Example: us
us— United States (fanatics.com). The only value.
sortenum<string>default:highest_ratedThe order of the reviews.
Example: most_recent
highest_rated— The site's own order on load. The default.lowest_rated— Lowest star rating first.most_recent— Newest first.most_helpful— Most helpful votes first.
ratingintegerOnly reviews with this many stars, 1-5.
Example: 1
limitintegerReviews to return, 1-50. Defaults to 10. More than 10 takes a few seconds longer per 8.
Example: 50
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# This call usually takes 20-90 s; give your client 300 s.
res = client.fanatics.reviews(product_id="3892922", sort="most_recent", limit=26)["data"]
print(res["stats"]["average"], "stars,", res["stats"]["fit"]["average"], "fit (3 = true to size)")
# Reviews cover the whole style: keep the ones written for this product.
mine = [r for r in res["reviews"] if r["product_id"] == "3892922"]
for r in mine:
print(r["submitted_at"][:10], r["rating"], r["fit"], r["text"][:80])Response