Reviews: stars over a window, per review page

gethttps://api.mentio.dev/v1/analytics/reviews

Report on your keywords' reviews: count, average stars, distribution, replies and open 1-2 star reviews.

Per page too, with unhappy reviews' tags; each review counts once.

The window is range or from and to, in timezone, by publish date; compare=true adds the period before.

Authentication

AuthorizationBearer <token>Required

An API key (mk_live_...) from the dashboard or an OAuth access token. See Authentication.

Query parameters

rangestringOptional

Preset window ending today. Ignored when from or to is given. Default 30d.

One of7d30d90d365d
fromstringOptional

First day, YYYY-MM-DD, inclusive, in timezone.

tostringOptional

Last day, YYYY-MM-DD, inclusive, in timezone. Default today.

keywordIdsarray<string>nullableOptional

Only these keyword ids. Repeatable, or comma-separated; omit for every keyword.

0 to 50 items
platformsarray<string>Optional

Only these platforms. Repeatable, or comma-separated; omit for every platform.

0 to 20 items
+Show 18 enum values
blueskyhackernewsgithubstackoverflowdevtoredditxyoutubenewslinkedintiktokinstagramfacebookappstoregoogleplaytrustpilotgooglemapsrss
notKeywordIdsarray<string>nullableOptional

Never these keyword ids. Repeatable, or comma-separated.

0 to 50 items
notPlatformsarray<string>Optional

Never these platforms. Repeatable, or comma-separated.

0 to 20 items
+Show 18 enum values
blueskyhackernewsgithubstackoverflowdevtoredditxyoutubenewslinkedintiktokinstagramfacebookappstoregoogleplaytrustpilotgooglemapsrss
comparebooleanOptional

true adds the period of the same length right before the window as previous.

timezonestringOptional

IANA zone the days are cut in (Europe/Madrid). Default UTC. One offset, the zone's at the end of the window, applies to the whole window.

0 to 64 characters
bucketstringOptional

Series bucket: day (default up to 90 days) or week.

One ofdayweek

Response

200The report, with `previous` when comparing
windowobjectRequired

The window the report covers.

+Show 5 properties
fromstringRequired

First day, inclusive.

tostringRequired

Last day, inclusive.

daysintegerRequired

Length of the window in days.

0 to ∞
timezonestringRequired

IANA zone the days were cut in.

bucketstringRequired

How the page series are cut: day up to 90 days, else week, unless asked.

One ofdayweek
totalsobjectRequired

The window's review count and average rating.

+Show 5 properties
reviewsintegerRequired

Reviews published in the window; a review matched by two keywords counts once.

0 to ∞
averageRatingnumbernullableRequired

Average stars, one decimal; null with no reviews.

1 to 5
distributionobjectRequired

Reviews per star rating.

+Show 5 properties
1integerRequired

One star.

0 to ∞
2integerRequired

Two stars.

0 to ∞
3integerRequired

Three stars.

0 to ∞
4integerRequired

Four stars.

0 to ∞
5integerRequired

Five stars.

0 to ∞
respondedintegerRequired

Reviews carrying the owner's or developer's reply (the App Store's feed has none).

0 to ∞
openNegativeintegerRequired

1 and 2 star reviews nobody has marked done or ignored yet.

0 to ∞
tagsarray<object>Required

Intent and topic tags on the 1 and 2 star reviews, most frequent first: what the unhappy ones are about.

+Show 2 properties
tagstringRequired

The intent or topic tag.

countintegerRequired

Reviews carrying it.

0 to ∞
pagesarray<object>Required

One row per review page with reviews in the window, most reviewed first.

+Show 10 properties
reviewsintegerRequired

Reviews published in the window; a review matched by two keywords counts once.

0 to ∞
averageRatingnumbernullableRequired

Average stars, one decimal; null with no reviews.

1 to 5
distributionobjectRequired

Reviews per star rating.

+Show 5 properties
1integerRequired

One star.

0 to ∞
2integerRequired

Two stars.

0 to ∞
3integerRequired

Three stars.

0 to ∞
4integerRequired

Four stars.

0 to ∞
5integerRequired

Five stars.

0 to ∞
respondedintegerRequired

Reviews carrying the owner's or developer's reply (the App Store's feed has none).

0 to ∞
openNegativeintegerRequired

1 and 2 star reviews nobody has marked done or ignored yet.

0 to ∞
platformstringRequired

appstore (Apple App Store), googleplay (Google Play), trustpilot (a company's Trustpilot page) or googlemaps (a place's Google reviews).

One ofappstoregoogleplaytrustpilotgooglemaps
idstringRequired

The page's id: app id, package name, Trustpilot domain, Place ID or cid.

urlstringRequired

The review page.

seriesarray<object>Required

Reviews and average stars per bucket, oldest first, every bucket present.

+Show 3 properties
datestringRequired

Bucket start, YYYY-MM-DD.

reviewsintegerRequired

Reviews in the bucket.

0 to ∞
averageRatingnumbernullableRequired

Average stars, one decimal; null with no reviews.

1 to 5
previousobjectnullableRequired

The period of the same length right before the window, with compare=true; else null.

+Show 2 properties
reviewsintegerRequired

Reviews in the window.

0 to ∞
averageRatingnumbernullableRequired

Average stars, one decimal; null with no reviews.

1 to 5
previousobjectnullableRequired

Totals for the period right before the window, with compare=true; else null.

+Show 5 properties
reviewsintegerRequired

Reviews published in the window; a review matched by two keywords counts once.

0 to ∞
averageRatingnumbernullableRequired

Average stars, one decimal; null with no reviews.

1 to 5
distributionobjectRequired

Reviews per star rating.

+Show 5 properties
1integerRequired

One star.

0 to ∞
2integerRequired

Two stars.

0 to ∞
3integerRequired

Three stars.

0 to ∞
4integerRequired

Four stars.

0 to ∞
5integerRequired

Five stars.

0 to ∞
respondedintegerRequired

Reviews carrying the owner's or developer's reply (the App Store's feed has none).

0 to ∞
openNegativeintegerRequired

1 and 2 star reviews nobody has marked done or ignored yet.

0 to ∞
400Invalid query
+Show 1 property
errorobjectRequired

The error.

+Show 5 properties
codestringRequired

Stable machine-readable code; branch on this, never on the message. Codes are additive: a client should treat one it does not know as a generic failure of the same status.

+Show 53 enum values
unauthorizedforbiddenread_only_keyvalidation_errornot_foundinvalid_cursorpayload_too_largeidempotency_key_in_useidempotency_key_reusedrate_limitedduplicate_keywordinvalid_queryquery_needs_one_termquery_not_supportedinsufficient_balancefunding_requiredkeyword_limit_reachedbilling_not_configuredorder_not_creditedschedule_requiredunknown_channelnot_a_digesthourly_email_unsupportedslack_not_connectedslack_not_configuredtelegram_not_configuredfeed_unreadablefeed_login_requiredfeed_login_expiredfeed_limit_reachedfeed_auth_not_configuredemail_not_configuredinvalid_assigneeclassification_pendinginvalid_memberalready_memberlast_ownerduplicate_segmentfilter_too_complexduplicate_viewduplicate_automationautomation_filter_unreadableautomation_limit_reachedduplicate_groupdefault_groupdefault_group_contextgroup_changedinvalid_signaturewebhook_not_configuredinvalid_tokenprotected_userupstream_unavailableinternal_error
messagestringRequired

Human-readable detail; may change between releases.

requestIdstringOptional

The id of this request (also the X-Request-Id response header); quote it to support.

retryAfterSecondsintegerOptional

For rate_limited and other retryable errors: how long to wait before retrying (mirrors the Retry-After header).

detailsobjectOptional

Machine-readable facts about this error, when the code has any: for a keyword query, reason, position (the character a syntax error was found at) or terms (one keyword each).

401Missing or invalid API key
+Show 1 property
errorobjectRequired

The error.

+Show 5 properties
codestringRequired

Stable machine-readable code; branch on this, never on the message. Codes are additive: a client should treat one it does not know as a generic failure of the same status.

+Show 53 enum values
unauthorizedforbiddenread_only_keyvalidation_errornot_foundinvalid_cursorpayload_too_largeidempotency_key_in_useidempotency_key_reusedrate_limitedduplicate_keywordinvalid_queryquery_needs_one_termquery_not_supportedinsufficient_balancefunding_requiredkeyword_limit_reachedbilling_not_configuredorder_not_creditedschedule_requiredunknown_channelnot_a_digesthourly_email_unsupportedslack_not_connectedslack_not_configuredtelegram_not_configuredfeed_unreadablefeed_login_requiredfeed_login_expiredfeed_limit_reachedfeed_auth_not_configuredemail_not_configuredinvalid_assigneeclassification_pendinginvalid_memberalready_memberlast_ownerduplicate_segmentfilter_too_complexduplicate_viewduplicate_automationautomation_filter_unreadableautomation_limit_reachedduplicate_groupdefault_groupdefault_group_contextgroup_changedinvalid_signaturewebhook_not_configuredinvalid_tokenprotected_userupstream_unavailableinternal_error
messagestringRequired

Human-readable detail; may change between releases.

requestIdstringOptional

The id of this request (also the X-Request-Id response header); quote it to support.

retryAfterSecondsintegerOptional

For rate_limited and other retryable errors: how long to wait before retrying (mirrors the Retry-After header).

detailsobjectOptional

Machine-readable facts about this error, when the code has any: for a keyword query, reason, position (the character a syntax error was found at) or terms (one keyword each).