retailerapi / docs

GET /v1/products/{id}/reviews

Reviews summary + sample top reviews for a Walmart product.

Request

GET /v1/products/{id}/reviews?start_date=2026-01-01&end_date=2026-05-09

Query parameters

NameDescription
start_dateFilter reviews from this date (ISO YYYY-MM-DD). Optional.
end_dateFilter reviews to this date. Optional. Defaults to today.

Response

{
  "identifier": "443574645",
  "summary": {
    "average_rating": 4.39,
    "total_reviews": 438,
    "sentiment": { "positive": 60, "neutral": 392, "negative": 15 },
    "verified_purchases": 428,
    "non_verified_purchases": 10,
    "rating_distribution": null
  },
  "monthly_breakdown": [
    {
      "month": "2026-04",
      "total_reviews": 11,
      "average_rating": 3.64,
      "sentiment": { "positive": 0, "neutral": 11, "negative": 0 }
    },
    ...
  ],
  "top_reviews": [],
  "tokens_consumed": 3,
  "tokens_remaining": 9994
}

Field notes

  • summary.average_rating is a weighted average across all monthly buckets (rating × reviews / total).
  • summary.sentiment rolls up positive/neutral/negative counts; monthly_breakdown[] keeps the per-month split so you can chart sentiment trend.
  • rating_distribution (per-star histogram) is currently null on most items — upstream doesn't expose the raw 1–5 split. Use sentiment as the modern signal.
  • top_reviews contains individual review bodies when available. It can be empty on items where upstream only ships aggregates — check monthly_breakdown length to know whether there's data.

Cost

3 tokens per call.

Notes

  • Walmart-only today. Cross-retailer review aggregation ships in Phase 4.
  • Date-range filtering (start_date / end_date) filters the monthly buckets server-side.