---
title: "Google Play Reviews"
method: POST
path: "/v1/google/play/reviews"
tags: ["Google"]
---

# Google Play Reviews

`POST /v1/google/play/reviews`

## Request

- Base URL: `https://api.prismcrawl.com`
- URL: `https://api.prismcrawl.com/v1/google/play/reviews`
- Auth: API key in header `x-api-key`

Retrieve Google Play Reviews data with the existing PrismCrawl authentication, credits, and request-history behavior.

## Request body

- CatalogGooglePlayReviewsRequest: Retrieve Google Play Reviews data with the existing PrismCrawl authentication, credits, and request-history behavior.
  - `id` string, required: The app's package ID from Google Play search results or the id parameter in its store URL, such as com.google.android.youtube. App and company names are not IDs. Use 1–250 letters, digits, dots, underscores, or hyphens.
  - `country` string: Two-letter country or storefront code, such as us or gb.
  - `language` string: Provider-supported language code, such as en.
  - `limit` integer: Maximum number of items to return. The provider may return fewer.
  - `next_page_token` string: Copy the opaque next_page_token from the previous response using the same account, search parameters, device, and result limit. Tokens expire after one hour; restart pagination if rejected or expired.
  - `sort_by` 'newest' | 'relevant' | 'rating': The provider's supported sort order.
  - `device` 'desktop' | 'mobile' | 'tablet': Device presentation for the source request.
  - `html` boolean: Return the encoded original response rather than parsed JSON.
  - `zero_trace` boolean: Do not archive source or parsed response artifacts.
  - `rating` integer: Return reviews with exactly this star rating.
  - `platform` 'phone' | 'tablet' | 'watch' | 'chromebook' | 'tv' | 'car': Filter native reviews by device form factor.
  - `category` 'apps' | 'books' | 'audiobooks' | 'movies' | 'tv': A category identifier supported by this operation.
  - `output` 'json' | 'html' | 'md' | 'null', nullable: Response content format. md returns Markdown in data.content with data.format=md; the JSON success/request envelope remains. Accept: text/markdown also selects Markdown unless output or html=true is explicit. html is an alias for html=true and retains the existing Brotli/Base64 source format.
  - `json_restrictor` string, nullable: Select fields within data.content for JSON or Markdown. Supports comma-separated paths, non-negative array indices, half-open slices [0:3] (either bound may be omitted), [] and .{nested,subqueries}. Up to128 selections and16 levels. Missing fields are omitted; selected declared fields retain their zero defaults. The request envelope and credit headers remain. Include next_page_token when pagination is needed. Incompatible with HTML output. This changes response presentation only; tracing-enabled history retains the complete JSON result.
  - `no_cache` boolean, nullable: Accepted for compatibility. Searches are always fetched without a result cache for either value; normal successful-request billing applies.

## Response `200`

Request completed. One credit is charged, including recognized empty or unavailable source results and source inventory changes discovered after a valid continuation is fetched. These completed responses may preserve verified partial results; operational failures remain errors.

- CatalogGooglePlayReviewsResponse
  - `success` true, required
  - `request_id` string, uuid, required
  - `data` union, required
    - MarkdownSearchData
      - `format` union, required
        - ''
        - 'md'
      - `content` string, required: Markdown derived from the parsed result, after any json_restrictor selection.
    - ProjectedSearchData
      - `format` union, required
        - ''
        - 'json'
      - `content` object, required: Only fields selected by json_restrictor. Selected fields retain their declared types and zero defaults.
    - object
      - `format` 'json', required
      - `content` object, required
        - `has_next_page` boolean, required
        - `next_page_token` string, required: Opaque continuation token valid for one hour and the same account. Retain search parameters, device, and result limit. Restart pagination if the token is expired or rejected; tokens from before the authenticated-token rollout cannot be reused.
        - `results` object[], required
          - `author` union, required
            - string
            - object
              - …
          - `author_image` string, required
          - `author_url` string, required
          - `date` string, required
          - `date_text` string, required
          - `developer_response` object, required
            - `date` string, required
            - `text` string, required
          - `helpful_votes` number, required
          - `id` string, required
          - `is_excerpt` boolean, required
          - `language` string, required
          - `name` string, required
          - `photos` string[], required
          - `position` integer, required
          - `published_at` string, required
          - `rank` integer, required
          - `rating` number, required
          - `rating_max` number, required
          - `source` string, required
          - `text` string, required
          - `thumbnail` string, required
          - `title` string, required
          - `type` string, required
          - `updated_at` string, required
          - `url` string, required
          - `version` string, required
          - `vote_count` number, required
        - `search_parameters` object, required
          - `category` string, required
          - `country` string, required
          - `device` string, required
          - `engine` string, required
          - `id` string, required
          - `language` string, required
          - `limit` integer, required
          - `operation` string, required
          - `pagination_limited` boolean, required: True when further pagination is unavailable. A completed source-stale request can contain verified results or an empty array; next_page_token is an empty string.
          - `pagination_reason` string, required: stale_cursor means a valid continuation was fetched but its source inventory changed. The HTTP 200 response is billable; keep any verified results and restart pagination.
          - `platform` string, required
          - `rating` integer, required
          - `sort_by` string, required
          - `type` string, required
          - `url` string, required
        - `serp_features` object[], required
          - `confidence` number, required
          - `engine` string, required
          - `extracted_at` string, required
          - `id` string, required
          - `items` object[], required
            - `link` string, required
            - `product_id` string, required
            - `text` string, required
            - `thumbnail` string, required
            - `title` string, required
          - `links` object[], required
            - `title` string, required
            - `url` string, required
          - `position` object, required
            - `absolute` integer, required
          - `source_result_ids` string[], required
          - `text` string, required
          - `title` string, required
          - `type` string, required
    - GoogleHtmlSearchData
      - `format` union, required
        - ''
        - 'html+br+base64'
      - `content` string, byte, required: Base64-encoded bytes. Decode Base64 first, then decompress the result with Brotli. Available deferred or lazy-loaded thumbnail sources are placed in image src attributes, within size limits; image and video files are not downloaded. When rewrite_links is true, already-resolved opaque Google anchor links use their destination URLs. Unresolved links are preserved.

## Other responses

- `400`: The JSON body, source selection, or continuation is invalid. Locally malformed, forged, expired, or mismatched tokens are rejected before source work and require restarting pagination. A source may also reject an otherwise well-formed selector after acquisition. These errors do not spend a search credit. Source inventory changes discovered during a valid request return a completed response instead.
- `401`: The API token is missing, invalid, expired, or revoked.
- `402`: No credits remain.
- `429`: Account rate limit exceeded.
- `500`: The request could not be completed.

---

[API](https://skmtc.dev/prismcrawl/apis/prismcrawl-api.md) · [All operations](https://skmtc.dev/prismcrawl/apis/prismcrawl-api/llms.txt) · [OpenAPI document](https://skmtc.dev/prismcrawl/apis/prismcrawl-api/revisions/eef17f6c02a5?raw)
