To get an Amazon product's review summary via API, call /api/amazon-product-lookup with the ASIN and marketplace: productInfo.reviews carries averageRating, totalReviews and Amazon's own reviewSummary text, for the same one credit a lookup already costs. A missing rating is null, not zero, so check totalReviews before trusting a star figure.
Key Takeaways
- Reviews come free with a /amazon-product-lookup call - no extra endpoint, no extra credit.
- averageRating is null, and totalReviews is 0, both when there are no reviews and when parsing failed - the field alone can't tell you which.
- reviewSummary is Amazon's own short synthesis text, not a list of individual reviews.
- For rating history over time, use /amazon-product-statistics instead of polling lookup repeatedly.
- A seller or brand with a 0.0 displayed rating almost always has zero reviews, not one-star reviews.
Where does the review data live in the lookup response?
| Endpoint | Field | Meaning |
|---|---|---|
| /amazon-product-lookup | productInfo.reviews.averageRating | float, or null when no reviews / parse failed |
| /amazon-product-lookup | productInfo.reviews.totalReviews | int, 0 when no reviews / parse failed |
| /amazon-product-lookup | productInfo.reviews.reviewSummary | Amazon's own short summary text, or null |
How do I read the average rating and review count?
The function below returns a flat dict and a has_reviews flag so a caller never has to check totalReviews == 0 twice. It treats a missing reviews key the same as an empty one, which matters for older or thinly-stocked listings. get() and new_session() come from the Python quickstart.
reviews_summary.py - rating, count and summary from one call
from sellermagnet import ApiError, get, new_session
def reviews_summary(session, asin: str, marketplace_id: str) -> dict:
"""One /amazon-product-lookup call to the review snapshot: average rating,
lifetime review count and Amazon's own short summary text. averageRating
is null and totalReviews is 0 when the product has no reviews or the
parser failed - never read that as a 0.0-star product."""
p = get(session, "amazon-product-lookup", asin=asin, marketplaceId=marketplace_id)["productInfo"]
reviews = p.get("reviews") or {}
return {
"asin": p["asin"],
"title": p["title"],
"average_rating": reviews.get("averageRating"), # float or None
"total_reviews": reviews.get("totalReviews", 0), # int, 0 on failure
"summary": reviews.get("reviewSummary") or None,
"has_reviews": bool(reviews.get("totalReviews")),
}
if __name__ == "__main__":
session = new_session()
for asin in ["B0CL61F39H", "B0ZEROSTARS", "B0MISSINGKEY", "B0DEADASIN"]:
try:
print(reviews_summary(session, asin, "ATVPDKIKX0DER"))
except ApiError as exc:
print(asin, "failed:", exc)
Example output (illustrative ASINs)
reviews_summary: 4 scenarios OK, calls={'amazon-product-lookup': 4}
{'asin': 'B0CL61F39H', 'title': 'Widget', 'average_rating': 4.6, 'total_reviews': 3129, 'summary': 'Customers like the build quality.', 'has_reviews': True}
{'asin': 'B0ZEROSTARS', 'title': 'Widget', 'average_rating': None, 'total_reviews': 0, 'summary': None, 'has_reviews': False}
{'asin': 'B0MISSINGKEY', 'title': 'Widget', 'average_rating': None, 'total_reviews': 0, 'summary': None, 'has_reviews': False}
B0DEADASIN failed: 404: Product not found
Trimmed reviews object (example values)
{
"productInfo": {
"reviews": {
"averageRating": 4.6,
"totalReviews": 3129,
"reviewSummary": "Customers like the build quality."
}
}
}

Why does a product show no rating at all?
Either it genuinely has zero reviews (new listings, low-volume variations) or the parser found no review block on the page at that moment, both return the same null/0 shape, so a single snapshot cannot distinguish them. A second lookup a day later that still returns null/0 is stronger evidence of a real zero-review product than relying on one call. For a trend instead of a snapshot, the rating and review count history guide covers productRatingHistory, and the product lookup page lists every other field in the same response.

Frequently Asked Questions
Does a null averageRating mean zero stars?
No. Null means no reviews or a parse failure, not a 0.0-star product; only a present numeric value is a real rating.
Is totalReviews the same number shown on the product page?
It is Amazon's own ratings count as parsed by the lookup, which can lag the live page by the scrape interval; re-fetch for a current figure.
Can I get review text, not just the summary?
FACTS.md lists no endpoint returning individual review text; reviewSummary is Amazon's own short synthesis, not a list of reviews.
Does this cost more than a normal lookup?
No, the review snapshot is part of the same /amazon-product-lookup response you already pay one credit for.
How do I track rating changes over time?
Use /amazon-product-statistics productRatingHistory and productRatingCountHistory instead, which store a point per recorded change.
Bottom line: read reviews straight off a lookup you already pay for, and treat null/0 as "no reviews yet", not "zero stars".