API

Reviews

Reviews API provides endpoints to list reviews for a location across connected review sources and retrieve aggregated review statistics.


List reviews

GET https://api.seranking.com/v1/local-marketing/locations/{location_id}/reviews

Returns a list of reviews for a location across all connected review sources.

Request parameters

ParameterTypeRequiredDescription
location_idIntegerYesLocation ID (path parameter).
fromStringNoStart date (in YYYY-MM-DD).
toStringNoEnd date (in YYYY-MM-DD).
limitIntegerNoMaximum number of items to return (1–1000). Default is 100.
offsetIntegerNoNumber of items to skip. Default is 0.
sortStringNoField to sort by: created_at, rating, status, source, or lang. An unsupported value returns an error.
sort_orderStringNoSorting order: asc or desc. Default is desc.

Request example

Copy
GET https://api.seranking.com/v1/local-marketing/locations/15/reviews?from=2026-05-01&to=2026-05-31&limit=100&offset=0

Response parameters

If successful, the server returns the 200 HTTP status code, an array of reviews in items, and a pagination object. Returns HTTP 404 if the location is not found.

ParameterTypeDescription
itemsArrayList of reviews.
idIntegerReview ID.
location_idIntegerLocation ID.
sourceStringReview source code (e.g. google).
source_nameStringReview source name (can be null).
ratingIntegerReview rating (can be null).
reviewStringReview text (can be null).
reviewer_nameStringReviewer name (can be null).
languageStringReview language (can be null).
created_atStringReview creation timestamp (can be null).
statusStringReview status (can be null).
review_urlStringLink to the review (can be null).
is_answeredBooleanWhether the review has a reply (can be null).
reply_statusStringReply status (can be null).
reply_textStringReply text (can be null).
replied_atStringReply timestamp (can be null).
sentimentStringReview sentiment (can be null).
paginationObjectPagination info: total, limit, offset.

Response example

Copy
{
"items": [
{
"id": 501,
"location_id": 15,
"source": "google",
"source_name": "Google",
"rating": 5,
"review": "Great pasta and friendly staff!",
"reviewer_name": "John S.",
"language": "en",
"created_at": "2026-05-12 18:40:00",
"status": "published",
"review_url": "https://maps.google.com/reviews/501",
"is_answered": true,
"reply_status": "published",
"reply_text": "Thank you, John! See you again soon.",
"replied_at": "2026-05-13 09:05:00",
"sentiment": "positive"
}
],
"pagination": {
"total": 60,
"limit": 100,
"offset": 0
}
}

Get reviews overview

GET https://api.seranking.com/v1/local-marketing/locations/{location_id}/reviews/overview

Returns aggregated review statistics for a location: totals, average rating, answered/unanswered counts, rating distribution, and a breakdown by source. When from/to are provided, aggregates are computed for that period; otherwise they cover the location’s entire history.

Request parameters

ParameterTypeRequiredDescription
location_idIntegerYesLocation ID (path parameter).
fromStringNoStart date (in YYYY-MM-DD).
toStringNoEnd date (in YYYY-MM-DD).

Request example

Copy
GET https://api.seranking.com/v1/local-marketing/locations/15/reviews/overview?from=2026-05-01&to=2026-05-31

Response parameters

If successful, the server returns the 200 HTTP status code and aggregated review statistics. Returns HTTP 404 if the location is not found.

ParameterTypeDescription
location_idIntegerLocation ID.
total_reviewsIntegerTotal number of reviews, including unrated ones — while average_rating and rating_distribution cover rated reviews only, so total_reviews × average_rating does not give a weighted total.
average_ratingFloatAverage rating across rated reviews only. A distinct metric from statistics.average_rating in the location endpoints — the two may not match (can be null).
answered_reviewsIntegerNumber of reviews with a reply.
unanswered_reviewsIntegerNumber of reviews without a reply.
rating_distributionObjectNumber of reviews per rating: 1_star5_star.
items_by_sourceArrayPer-source breakdown.
sourceStringReview source code.
reviews_countIntegerNumber of reviews from this source.
average_ratingFloatAverage rating for this source (can be null).
answered_reviewsIntegerAnswered reviews from this source.
unanswered_reviewsIntegerUnanswered reviews from this source.

Response example

Copy
{
"location_id": 15,
"total_reviews": 60,
"average_rating": 3.8,
"answered_reviews": 52,
"unanswered_reviews": 8,
"rating_distribution": {
"1_star": 4,
"2_star": 5,
"3_star": 10,
"4_star": 21,
"5_star": 20
},
"items_by_source": [
{
"source": "google",
"reviews_count": 55,
"average_rating": 3.9,
"answered_reviews": 50,
"unanswered_reviews": 5
},
{
"source": "facebook",
"reviews_count": 5,
"average_rating": 3.4,
"answered_reviews": 2,
"unanswered_reviews": 3
}
]
}

Learn how SE Ranking’s API can boost your SEO!

Hi! Meet our product experts!

One of them will walk you through the API and show you how to get the most out of it.

  • Enjoy a tailored demo on integrating rich, structured SEO data into your stack.
  • Pin down every tech detail live—auth, endpoints, rate limits, data formats.
  • Compare usage tiers and pricing so you can unlock maximum data value.

Request a free demo to see our tools and integrations in action

By clicking this button, you agree to SE Ranking’s
Terms of Service and Privacy Statement.