> For the complete documentation index, see [llms.txt](https://docs.pullbay.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pullbay.com/documentation/api-and-references/google-play-store.md).

# Google Play Store

The Pullbay Google Play API provides programmatic access to Android app metadata, search, similar-app recommendations, reviews, permissions, and Data Safety declarations from the Google Play Store. Integrate Google Play data into your applications, dashboards, and analytics pipelines without scraping or manual lookups.

**Base URL:** `https://dashboard.pullbay.com/api`

## Overview

The Google Play service lets you:

* Look up a single app by its package name (e.g. `com.instagram.android`)
* Search the Google Play Store by keyword
* Find apps similar to a given app
* Fetch reviews for an app, sorted by recency, rating, or helpfulness
* List the Android permissions an app requests
* Retrieve the developer-declared Data Safety section (data collected, data shared, security practices)

All endpoints are read-only `GET` requests against public Google Play data — you don't need to own or register an app of your own.

## Common Use Cases

**Competitor Analysis** — Pull a competitor's app metadata and reviews to track positioning, install-count tier, and rating trends over time.

**Sentiment Monitoring** — Collect reviews on a schedule and feed the `text` field into your own sentiment-analysis or alerting pipeline.

**Market Research** — Use Search Apps and Get Similar Apps together to map out a category and see how apps cluster around features and audiences.

**Privacy and Compliance Review** — Use Get Permissions and Get Data Safety to audit what an app collects, shares, and declares before integrating with it or evaluating it as a competitor.

**Product Development** — Mine review text for recurring feature requests and complaints to help prioritize a roadmap.

## Endpoints

| Endpoint                       | Description                            | Pagination            |
| ------------------------------ | -------------------------------------- | --------------------- |
| `GET /google-play/apps`        | Get a single app by App ID             | —                     |
| `GET /google-play/search`      | Search apps by term                    | —                     |
| `GET /google-play/similar`     | Get apps similar to a given app        | —                     |
| `GET /google-play/reviews`     | Get reviews for an app                 | `cursor` / `maxItems` |
| `GET /google-play/permissions` | Get permissions requested by an app    | —                     |
| `GET /google-play/data-safety` | Get the Data Safety section for an app | —                     |

***

### Get App

Returns full details for a single app on the Google Play Store, identified by its package name.

**Request**

```bash
GET /google-play/apps
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                                                                  |
| --------- | ------ | -------- | ------- | -------------------------------------------------------------------------------------------- |
| `appId`   | string | Yes      | —       | Package name, max 255 characters, letters/digits/`.`/`_` only (e.g. `com.instagram.android`) |
| `country` | string | No       | —       | Exactly 2 characters. Not restricted to a fixed list — any 2-letter code is accepted.        |
| `lang`    | string | No       | —       | Language code for localized text, pattern `^[a-z]{2,3}(-[a-z]{2,3})?$` (e.g. `en`, `en-us`)  |

**Example**

```bash
curl -G "https://dashboard.pullbay.com/api/google-play/apps" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d appId=com.instagram.android \
  -d country=us
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "title": "Instagram",
      "appId": "com.instagram.android",
      "url": "/api/apps/com.instagram.android",
      "icon": "https://play-lh.googleusercontent.com/VRMWkE5p3CkWhJs6nv-9ZsLAs1QOg5ob1_3qg-rckwYW7yp1fMrYZqnEFpk0IoVP4LM",
      "headerImage": "https://play-lh.googleusercontent.com/CgUPurtUp8SB709wsQcKLMv6JdIh1em0ka_58V69AorznLv42TV39etS2rt28wv9Rz8",
      "summary": "Create &amp; share photos, stories, &amp; reels with friends you love",
      "description": "Little moments lead to big friendships. Share yours on Instagram.",
      "descriptionHTML": "Little moments lead to big friendships. Share yours on Instagram. <br>—From Meta",
      "score": 4.0182447,
      "scoreText": "4.0",
      "ratings": 167461256,
      "reviews": 4568306,
      "histogram": { "1": 30279668, "2": 5233417, "3": 7039797, "4": 13507336, "5": 111401011 },
      "free": true,
      "price": 0,
      "priceText": "Free",
      "currency": "USD",
      "offersIAP": true,
      "adSupported": true,
      "installs": "5,000,000,000+",
      "minInstalls": 5000000000,
      "maxInstalls": 7427343782,
      "androidVersion": "VARY",
      "androidVersionText": "Varies with device",
      "updated": 1777328205000,
      "genre": "Social",
      "genreId": "SOCIAL",
      "developer": "Instagram",
      "developerId": "Instagram",
      "developerEmail": "instagram-android@meta.com",
      "developerWebsite": "http://help.instagram.com/",
      "developerInternalID": "Instagram",
      "privacyPolicy": "http://instagram.com/legal/privacy/",
      "playstoreUrl": "https://play.google.com/store/apps/details?id=com.instagram.android&hl=en&gl=us",
      "screenshots": ["https://play-lh.googleusercontent.com/hZ2Ob6d0MqLse2lIdNOGgl93H5y82uhX4hC6mWDUpdwK8LjXAunweDQZ6Hocy0riv4KX0lTIzKJz6lhRDV_BiHg"]
    }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                                         |
| ------------------------ | ------ | ------------------------------------------------------------------- |
| `data`                   | array  | Array containing a single [Application object](#application-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                                    |

**Credit cost:** charged dynamically per request; the exact amount is always returned in `pricing.creditsCharged`. There is no published flat rate — read the figure from the response.

***

### Search Apps

Search the Google Play Store for apps matching a term. Returns lightweight summaries.

**Request**

```bash
GET /google-play/search
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                                            |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------- |
| `search`  | string | Yes      | —       | Search term, 1–255 characters                                          |
| `price`   | string | No       | —       | Filter by pricing: `all`, `free`, or `paid`                            |
| `country` | string | No       | —       | Exactly 2 characters. Not restricted to a fixed list.                  |
| `lang`    | string | No       | —       | Language code for localized text, pattern `^[a-z]{2,3}(-[a-z]{2,3})?$` |

**Example**

```bash
curl -G "https://dashboard.pullbay.com/api/google-play/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d search="photo editor" \
  -d price=free \
  -d country=us
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "title": "Instagram",
      "appId": "com.instagram.android",
      "url": "/api/apps/com.instagram.android",
      "icon": "https://play-lh.googleusercontent.com/VRMWkE5p3CkWhJs6nv-9ZsLAs1QOg5ob1_3qg-rckwYW7yp1fMrYZqnEFpk0IoVP4LM",
      "summary": "Create &amp; share photos, stories, &amp; reels with friends you love",
      "score": 4.0182447,
      "scoreText": "4.0",
      "free": true,
      "price": 0,
      "currency": "USD",
      "playstoreUrl": "https://play.google.com/store/apps/details?id=com.instagram.android",
      "developer": "Instagram",
      "developerId": "Instagram"
    }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                                         |
| ------------------------ | ------ | ------------------------------------------------------------------- |
| `data`                   | array  | Array of [Application summary objects](#application-summary-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                                    |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`. No flat per-result rate is published — read the figure from each response.

***

### Get Similar Apps

Returns apps Google Play surfaces as similar to the supplied app.

**Request**

```bash
GET /google-play/similar
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                                   |
| --------- | ------ | -------- | ------- | ------------------------------------------------------------- |
| `appId`   | string | Yes      | —       | Package name, max 255 characters, letters/digits/`.`/`_` only |

**Example**

```bash
curl -G "https://dashboard.pullbay.com/api/google-play/similar" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d appId=com.instagram.android
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "title": "Instagram",
      "appId": "com.instagram.android",
      "url": "/api/apps/com.instagram.android",
      "icon": "https://play-lh.googleusercontent.com/VRMWkE5p3CkWhJs6nv-9ZsLAs1QOg5ob1_3qg-rckwYW7yp1fMrYZqnEFpk0IoVP4LM",
      "summary": "Create &amp; share photos, stories, &amp; reels with friends you love",
      "score": 4.0182447,
      "scoreText": "4.0",
      "free": true,
      "price": 0,
      "currency": "USD",
      "playstoreUrl": "https://play.google.com/store/apps/details?id=com.instagram.android",
      "developer": "Instagram",
      "developerId": "Instagram"
    }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                                         |
| ------------------------ | ------ | ------------------------------------------------------------------- |
| `data`                   | array  | Array of [Application summary objects](#application-summary-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                                    |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`.

***

### Get Reviews

Returns reviews for an app. Use `cursor` to paginate or `maxItems` for a one-shot bulk pull (mutually exclusive).

**Request**

```bash
GET /google-play/reviews
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter  | Type    | Required | Default | Description                                                                                                 |
| ---------- | ------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------- |
| `appId`    | string  | Yes      | —       | Package name, max 255 characters, letters/digits/`.`/`_` only                                               |
| `country`  | string  | No       | —       | Exactly 2 characters. Not restricted to a fixed list.                                                       |
| `lang`     | string  | No       | —       | Language code for localized text, pattern `^[a-z]{2,3}(-[a-z]{2,3})?$`                                      |
| `sort`     | string  | No       | —       | `NEWEST`, `RATING`, or `HELPFULNESS`                                                                        |
| `maxItems` | integer | No       | —       | One-shot bulk pull, 1–500 results. Mutually exclusive with `cursor`                                         |
| `cursor`   | string  | No       | —       | Opaque pagination cursor from a previous response's `pagination.cursor`. Mutually exclusive with `maxItems` |

**Example**

```bash
curl -G "https://dashboard.pullbay.com/api/google-play/reviews" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d appId=com.instagram.android \
  -d country=us \
  -d sort=NEWEST
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "id": "045b1b4e-b207-40f7-8a9e-d4e81664965e",
      "userName": "Jane Doe",
      "userImage": "https://example.com/reviewer-photo.jpg",
      "date": "2025-01-12T22:37:55.959Z",
      "score": 1,
      "scoreText": "1",
      "url": "https://play.google.com/store/apps/details?id=com.instagram.android&reviewId=045b1b4e-b207-40f7-8a9e-d4e81664965e",
      "title": null,
      "text": "The new update is so buggy.",
      "replyDate": null,
      "replyText": null,
      "version": "362.0.0.33.241",
      "thumbsUp": 10224,
      "country": "US",
      "criterias": [
        { "criteria": "vaf_mark_message_as_read", "rating": 1 }
      ]
    }
  ],
  "pagination": { "page": null, "hasNextPage": null, "cursor": null, "offset": null },
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                                                              | Type             | Description                                                                                 |
| ------------------------------------------------------------------ | ---------------- | ------------------------------------------------------------------------------------------- |
| `data`                                                             | array            | Array of [Review objects](#review-object)                                                   |
| `pagination.cursor`                                                | string, nullable | Cursor to pass as the `cursor` parameter on the next request, if more reviews are available |
| `pagination.page` / `pagination.hasNextPage` / `pagination.offset` | nullable         | Unused by this endpoint — always `null` here; use `pagination.cursor` instead               |
| `pricing.creditsCharged`                                           | number           | Credits charged for this request                                                            |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`. No flat per-page or per-review rate is published — read the figure from each response.

***

### Get Permissions

Returns the list of Android permissions the app requests, grouped by category.

**Request**

```bash
GET /google-play/permissions
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                                   |
| --------- | ------ | -------- | ------- | ------------------------------------------------------------- |
| `appId`   | string | Yes      | —       | Package name, max 255 characters, letters/digits/`.`/`_` only |

**Example**

```bash
curl -G "https://dashboard.pullbay.com/api/google-play/permissions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d appId=com.instagram.android
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    { "permission": "find accounts on the device", "type": "Identity" }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                       |
| ------------------------ | ------ | ------------------------------------------------- |
| `data`                   | array  | Array of [Permission objects](#permission-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                  |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`.

***

### Get Data Safety

Returns the developer-declared Data Safety information: data shared, data collected, security practices, and privacy policy URL.

**Request**

```bash
GET /google-play/data-safety
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                                   |
| --------- | ------ | -------- | ------- | ------------------------------------------------------------- |
| `appId`   | string | Yes      | —       | Package name, max 255 characters, letters/digits/`.`/`_` only |

**Example**

```bash
curl -G "https://dashboard.pullbay.com/api/google-play/data-safety" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d appId=com.instagram.android
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "sharedData": [
        { "data": "Name", "purpose": "Fraud prevention, security, and compliance", "type": "Personal info", "optional": false }
      ],
      "collectedData": [
        { "data": "Name", "purpose": "Fraud prevention, security, and compliance", "type": "Personal info", "optional": false }
      ],
      "securityPractices": [
        { "practice": "Data is encrypted in transit", "description": "Your data is transferred over a secure connection" }
      ],
      "privacyPolicyUrl": "http://instagram.com/legal/privacy/"
    }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                                         |
| ------------------------ | ------ | ------------------------------------------------------------------- |
| `data`                   | array  | Array containing a single [Data Safety object](#data-safety-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                                    |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`.

***

## Errors

All non-2xx responses share the same envelope:

```json
{
  "status": 400,
  "message": "Bad request",
  "success": false,
  "error": { "code": "BAD_REQUEST" }
}
```

| Status | Meaning                                                          |
| ------ | ---------------------------------------------------------------- |
| `400`  | Bad request — missing or invalid parameters                      |
| `402`  | Insufficient credits                                             |
| `404`  | App, review set, permission set, or Data Safety record not found |

## Object Schema

### Application object

| Field                                                                                       | Type                               | Description                                            |
| ------------------------------------------------------------------------------------------- | ---------------------------------- | ------------------------------------------------------ |
| `title`                                                                                     | string                             | App name                                               |
| `appId`                                                                                     | string                             | Package name                                           |
| `url`                                                                                       | string                             | Relative API URL for the app detail endpoint           |
| `icon`                                                                                      | string                             | Icon image URL                                         |
| `headerImage`                                                                               | string                             | Feature graphic image URL                              |
| `summary`                                                                                   | string                             | Short tagline shown on the store listing               |
| `description` / `descriptionHTML`                                                           | string                             | Full description, plain text and HTML                  |
| `score` / `scoreText`                                                                       | number / string                    | Average rating, numeric and display string             |
| `ratings` / `reviews`                                                                       | integer                            | Total rating count and total review count              |
| `histogram`                                                                                 | object                             | Rating counts keyed by star value (`1`–`5`)            |
| `free` / `price` / `priceText` / `currency`                                                 | boolean / number / string / string | Pricing info                                           |
| `offersIAP`                                                                                 | boolean                            | Whether the app offers in-app purchases                |
| `adSupported`                                                                               | boolean                            | Whether the app shows ads                              |
| `installs` / `minInstalls` / `maxInstalls`                                                  | string / integer / integer         | Install count range, display string and numeric bounds |
| `androidVersion` / `androidVersionText`                                                     | string                             | Minimum Android version, raw and display form          |
| `updated`                                                                                   | integer                            | Last update timestamp, Unix milliseconds               |
| `genre` / `genreId`                                                                         | string                             | Category name and ID                                   |
| `developer` / `developerId` / `developerEmail` / `developerWebsite` / `developerInternalID` | string                             | Developer identity and contact info                    |
| `privacyPolicy`                                                                             | string                             | Developer's privacy policy URL                         |
| `playstoreUrl`                                                                              | string                             | Public Google Play listing URL                         |
| `screenshots`                                                                               | array                              | Screenshot image URLs                                  |

### Application summary object

Lightweight app reference returned by the search and similar-apps endpoints.

| Field                         | Type                      | Description                                  |
| ----------------------------- | ------------------------- | -------------------------------------------- |
| `title`                       | string                    | App name                                     |
| `appId`                       | string                    | Package name                                 |
| `url`                         | string                    | Relative API URL for the app detail endpoint |
| `icon`                        | string                    | Icon image URL                               |
| `summary`                     | string                    | Short tagline shown on the store listing     |
| `score` / `scoreText`         | number / string           | Average rating, numeric and display string   |
| `free` / `price` / `currency` | boolean / number / string | Pricing info                                 |
| `playstoreUrl`                | string                    | Public Google Play listing URL               |
| `developer` / `developerId`   | string                    | Developer name and ID                        |

### Review object

| Field                     | Type                                                        | Description                                                      |
| ------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------- |
| `id`                      | string                                                      | Review ID                                                        |
| `userName`                | string                                                      | Reviewer's display name                                          |
| `userImage`               | string                                                      | Reviewer's avatar URL                                            |
| `date`                    | string (date-time)                                          | When the review was posted                                       |
| `score` / `scoreText`     | integer / string                                            | Rating, 1–5, numeric and display string                          |
| `url`                     | string                                                      | Permalink to the review                                          |
| `title`                   | string, nullable                                            | Review title (often `null` on Google Play)                       |
| `text`                    | string                                                      | Review body                                                      |
| `replyDate` / `replyText` | string / string, nullable                                   | Developer's reply timestamp and text, if any                     |
| `version`                 | string                                                      | App version the review was left for                              |
| `thumbsUp`                | integer                                                     | Helpful-vote count                                               |
| `country`                 | string                                                      | Storefront country the review was posted on                      |
| `criterias`               | array of [Review criteria objects](#review-criteria-object) | Rating breakdown by sub-criteria, if the developer collects them |

### Review criteria object

| Field      | Type    | Description                                                            |
| ---------- | ------- | ---------------------------------------------------------------------- |
| `criteria` | string  | Internal name of the rated criterion (e.g. `vaf_mark_message_as_read`) |
| `rating`   | integer | Rating given for that specific criterion                               |

### Permission object

| Field        | Type   | Description                                                                |
| ------------ | ------ | -------------------------------------------------------------------------- |
| `permission` | string | Human-readable permission description (e.g. `find accounts on the device`) |
| `type`       | string | Permission category (e.g. `Identity`)                                      |

### Data Safety object

| Field               | Type                                                            | Description                            |
| ------------------- | --------------------------------------------------------------- | -------------------------------------- |
| `sharedData`        | array of [Data Safety item objects](#data-safety-item-object)   | Data types shared with third parties   |
| `collectedData`     | array of [Data Safety item objects](#data-safety-item-object)   | Data types collected by the app        |
| `securityPractices` | array of [Security practice objects](#security-practice-object) | Declared security practices            |
| `privacyPolicyUrl`  | string                                                          | Link to the developer's privacy policy |

### Data Safety item object

| Field      | Type    | Description                                       |
| ---------- | ------- | ------------------------------------------------- |
| `data`     | string  | Type of data (e.g. `Name`)                        |
| `purpose`  | string  | Stated purpose for collecting or sharing the data |
| `type`     | string  | Data category (e.g. `Personal info`)              |
| `optional` | boolean | Whether providing this data is optional           |

### Security practice object

| Field         | Type   | Description                                                         |
| ------------- | ------ | ------------------------------------------------------------------- |
| `practice`    | string | Name of the security practice (e.g. `Data is encrypted in transit`) |
| `description` | string | Explanation of the practice                                         |

## Finding App IDs

* **App ID**: the Android package name, visible in a Google Play URL, e.g. `https://play.google.com/store/apps/details?id=com.instagram.android` → `com.instagram.android`.
* Package names are dot-separated identifiers made up of letters, digits, periods, and underscores (pattern `^[A-Za-z0-9._]+$`) — there is no separate numeric ID like on the App Store.

## Country and Language Codes

* `country` is constrained by the spec only to exactly 2 characters — it isn't validated against a fixed allow-list, so pass a standard ISO 3166-1 alpha-2 storefront code (`us`, `gb`, `jp`, `de`, ...).
* `lang` matches the pattern `^[a-z]{2,3}(-[a-z]{2,3})?$` — a 2–3 letter language code, optionally with a region subtag (`en`, `en-us`, `pt-br`) — also not restricted to a fixed list.
* Neither parameter has a documented default in the API spec. If you omit them, behavior is determined by the underlying Google Play lookup rather than a guaranteed Pullbay default — pass both explicitly if you need a predictable storefront/locale.

## Python Example: Paginating Through Reviews

This example fetches reviews for an app a page at a time using cursor-based pagination, stopping when `pagination.cursor` comes back empty or a request cap is reached:

```python
import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://dashboard.pullbay.com/api"

def get_all_reviews(app_id, country="us", max_requests=10):
    all_reviews = []
    cursor = None
    requests_made = 0

    while requests_made < max_requests:
        params = {"appId": app_id, "country": country, "sort": "NEWEST"}
        if cursor:
            params["cursor"] = cursor

        resp = requests.get(
            f"{BASE_URL}/google-play/reviews",
            headers={"Authorization": f"Bearer {API_KEY}"},
            params=params,
        )
        resp.raise_for_status()
        body = resp.json()
        all_reviews.extend(body["data"])
        requests_made += 1

        cursor = body.get("pagination", {}).get("cursor")
        if not cursor:
            break

    return all_reviews

reviews = get_all_reviews("com.instagram.android")
print(f"Fetched {len(reviews)} reviews")
```

Each request is billed independently, with the charged amount reported in that response's `pricing.creditsCharged` — there's no separate "fetch everything in one call" endpoint, so a multi-page pull like this makes one request per cursor advance. Alternatively, pass `maxItems` (1–500) instead of paginating with `cursor` if a single bulk pull is enough for your use case.

## FAQ

<details>

<summary>How do I find an app's package name?</summary>

Visit the app's page on the Google Play Store. Look at the URL — it contains `?id=` followed by the package name. For example, `https://play.google.com/store/apps/details?id=com.instagram.android` → `com.instagram.android`.

</details>

<details>

<summary>What countries are supported?</summary>

Any 2-letter code is accepted by the API — it isn't restricted to a published list of supported countries.

</details>

<details>

<summary>How many reviews can I fetch in one call?</summary>

Up to 500 with `maxItems`, or page through with `cursor` (page size isn't fixed by the spec). `cursor` and `maxItems` are mutually exclusive — use one or the other per request.

</details>

<details>

<summary>Can I filter reviews by star rating?</summary>

The API only supports sorting (`NEWEST`, `RATING`, or `HELPFULNESS`), not server-side filtering by rating. Fetch the reviews you need and filter client-side on the `score` field.

</details>

<details>

<summary>What's the credit cost per request?</summary>

It's dynamic — every response includes `pricing.creditsCharged` with the exact amount for that call. There's no fixed published rate per endpoint or per result.

</details>

<details>

<summary>Can I check what data an app collects before integrating with it?</summary>

Yes — use Get Permissions for the Android permissions the app requests, and Get Data Safety for the developer's declared data collection, sharing, and security practices.

</details>

## Next Steps

* [**API Integration Guide**](broken://pages/68e75ab1a73d266350bd68301be87ff97cad563e) — integrate the Pullbay API into your backend application.
* [**n8n Integration Guide**](broken://pages/4308164455b56bbc694cf74c9768ea689c2fe719) — set up automated workflows using n8n with no coding required.
* [**Services Overview**](broken://pages/0d55376cbcca70097a683a71a593d3077825dbf1) — explore all available Pullbay services.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.pullbay.com/documentation/api-and-references/google-play-store.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
