# Google Play Reviews Scraper (`apihq/google-play-reviews-scraper`) Actor

Scrape Google Play Store reviews to JSON by app package name or URL. No Google Play account. One record per review with rating, text, author, developer reply, thumbs-up, app version, and date. Apps with no reviews cost $0. $0.08 per 1,000 reviews.

- **URL**: https://apify.com/apihq/google-play-reviews-scraper.md
- **Developed by:** [apihq](https://apify.com/apihq) (community)
- **Categories:** Developer tools, Business, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.08 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Google Play Reviews Scraper

Export a Google Play app's user reviews as clean JSON from a package name or a Play Store URL. No Google Play account, no Play Console, no browser.

The contract is simple: **an app with no reviews never fails your run, and you only pay for reviews delivered.** Scrape a batch of apps, sort by newest or rating, and get one row per review with the rating, text, author, developer reply, and date. Pay-per-review at $0.08 per 1,000 reviews. Apps that return nothing cost $0.

### See one run

Input:

```json
{
  "appIds": ["com.spotify.music", "com.duolingo"],
  "sort": "newest",
  "maxReviews": 50,
  "country": "us",
  "language": "en"
}
````

What comes back:

- Up to 50 `success: true` review rows per app, billed: the newest US English reviews for Spotify and Duolingo
- Each row carries the rating, review text, author, thumbs-up count, app version, developer reply (when present), and date
- Run status: **SUCCEEDED**
- Charged: up to 100 reviews = $0.008

`appId` alone works too. Every knob above is optional: `sort` (`newest`, `rating`, or `relevance`), `maxReviews` (how many reviews per app), and `country` / `language` (the review locale, default `us` / `en`). An app with no reviews is a free `success: false` row, so one bad package never blocks the batch.

### Why this Actor

- **No Google Play account, no Play Console.** Play Console only shows reviews for apps you own. This Actor reads any public app's reviews directly by package name, so there is no account to connect and no console access to arrange, just structured JSON out.
- **You pay only for reviews.** Billing fires on an explicit per-review event, not on dataset writes, so an app that returns nothing sits in your dataset for free. There is no per-run start fee, so an empty run costs zero.
- **A bad package never breaks the batch.** An unrecognizable package, a Play Store URL with no app, or an app with no reviews returns a `success: false` record with a machine-readable `code` (`NO_REVIEWS`, `VALIDATION_FAILED`, `PLAY_REVIEWS_TIMEOUT`, `DEADLINE_EXCEEDED`). Branch on `code` without parsing English.

### Best for

Data and AI workflows that turn app reviews into text: sentiment and brand-safety analysis, competitor and market research, release-quality monitoring across app versions, and building review datasets for LLM pipelines. The failure-free billing and machine-readable error rows matter most when the extraction runs unattended inside a larger pipeline, where one bad package should never take down the batch. It works fine for one-off manual pulls too.

### Input example

A single app, top-rated reviews:

```json
{
  "appId": "com.instagram.android",
  "maxReviews": 200,
  "sort": "rating"
}
```

A batch of apps, newest first, one locale:

```json
{
  "appIds": [
    "com.spotify.music",
    "https://play.google.com/store/apps/details?id=com.duolingo",
    "com.whatsapp"
  ],
  "maxReviews": 500,
  "sort": "newest",
  "country": "us",
  "language": "en"
}
```

`appId` and `appIds` are merged and de-duplicated (a package name and its Play Store URL count as the same app). Up to 50 unique apps run per job. Each app is walked page by page until it reaches `maxReviews` or the app runs out of reviews. `sort`, `country`, and `language` apply to every app in the run.

### Output example

One record per review. The app's package is copied onto every row so each row stands alone:

```json
{
  "success": true,
  "review_id": "41a06364-b9f1-42d5-8b06-1b6682321902",
  "app_id": "com.spotify.music",
  "user_name": "Mark Ogden",
  "score": 5,
  "text": "Update - Really enjoying Spotify, seems more stable, audio books are a big plus.",
  "thumbs_up": 1090,
  "posted_at": "2025-02-19T07:49:57.000Z",
  "app_version": "9.0.18.604",
  "reply_text": "Hey! We're sorry to hear this. We're open to feedback...",
  "reply_posted_at": "2023-11-17T00:38:44.000Z",
  "criteria": [{ "feature": "vaf_phase1_dj_feature", "rating": 3 }],
  "url": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=41a06364-b9f1-42d5-8b06-1b6682321902"
}
```

An app that cannot be found lands in the same dataset and is not charged:

```json
{
  "success": false,
  "app_id": "com.example.does.not.exist",
  "code": "NO_REVIEWS",
  "error": "Google Play returned no reviews for app: com.example.does.not.exist",
  "request_id": "req_911f37d2e55644ff9d9e4a3f",
  "status_code": 404
}
```

Split hits from misses on the `success` field. Quote `request_id` in any support issue and we can trace the exact request.

### What you get

Every review is one record with `success: true`:

| Field | Type | What it is |
|---|---|---|
| `success` | boolean | `true` for a review (billed), `false` for an app that returned nothing (not billed). |
| `review_id` | string | Google Play's unique review ID. |
| `app_id` | string | The app package name the review belongs to. |
| `user_name` | string | Reviewer display name. |
| `user_image` | string | Reviewer avatar URL. May be absent. |
| `score` | integer | Star rating, 1 to 5. |
| `text` | string | The review body. May be empty (Google Play allows a rating with no text). |
| `thumbs_up` | integer | Number of users who marked the review helpful. |
| `posted_at` | string | ISO 8601 UTC timestamp the review was posted. |
| `app_version` | string | App version the review was written against. Absent when not exposed. |
| `reply_text` | string | The developer's reply body. Absent when there is no reply. |
| `reply_posted_at` | string | ISO 8601 UTC timestamp of the developer reply. Absent when there is no reply. |
| `criteria` | array | Feature-specific ratings (feature name + rating 1-5), when Google Play attaches them. |
| `url` | string | Permalink to the review on Google Play. |

Apps that could not be listed carry `success: false`, `app_id`, a machine-readable `code`, a human-readable `error`, the service `request_id`, and the HTTP `status_code`. They are not charged.

### Pricing

Pay-per-review. One charge per review delivered: `$0.00008` each, which is `$0.08 per 1,000 reviews`. The charge fires only after a review row lands in your dataset.

- 1,000 delivered reviews cost $0.08.
- A run that hits only empty or nonexistent apps costs $0.
- There is no per-run start fee, so an empty run is genuinely free.

Apify subscriber discounts apply automatically: roughly `$0.064 per 1,000` on the Scale plan and `$0.048 per 1,000` on Business. Platform compute is included in the per-review price. Cap the maximum spend of a single run from Apify's Run Limits panel; the Actor honors the cap and stops cleanly mid-app when the budget runs out.

### What this Actor does not do

Honest scope, so you know before you run it:

- **Reviews are localized.** Google Play serves reviews for one country and language per run (defaults `us` / `en`). To cover another market, run the app again with a different `country` and `language`. One run is one locale.
- **Developer replies and feature ratings are only present when Google attaches them.** Most reviews have no developer reply; `reply_text` is simply absent on those rows, not an error.
- **It reads reviews, not store metadata.** Ratings histograms, install counts, screenshots, and the app's overall score are out of scope; this Actor returns the individual review records.
- **Public reviews only.** It returns what a signed-out visitor sees on the Play Store listing.

### How to use this Actor

1. Open the Actor in the Apify Console.
2. Set `appId` (single) or `appIds` (a list). Each accepts a package name (for example `com.instagram.android`) or a Play Store URL. Up to 50 unique apps run per job.
3. Set `maxReviews` to cap how many reviews to return per app, `sort` to `newest`, `rating`, or `relevance`, and optionally `country` / `language` for the review locale.
4. Click Start. Each review is one `success: true` record. Apps that cannot be listed produce one `success: false` record and do not stop the run. Only reviews are charged.

The Actor is also callable from the Apify API and every official integration (Make, Zapier, n8n, Slack, webhooks). The API tab in the Console has ready-to-paste JavaScript, Python, and curl snippets.

### Reliability

**A bad app never fails the batch.** A mistyped package, a Play Store URL with no app, or an app with no reviews becomes a `success: false` record with a specific `code`. The run keeps going and finishes successfully.

**You never pay for a miss.** Billing fires on an explicit per-review charge event, not on dataset writes, so `success: false` records are free. There is no per-run start fee either.

**Hard 30-second deadline per page request.** Each page of reviews is fetched under a 30-second deadline. If Google Play or the proxy network stalls, that app returns a `504` with `code: DEADLINE_EXCEEDED` as a `success: false` record instead of hanging your run.

### FAQ

**Do I need a Google account or Play Console access?**

No. The Actor reads public Play Store reviews directly by package name. Play Console only exposes reviews for apps you own; this works for any public app.

**How do I point it at an app?**

Use the package name (`com.instagram.android`) or a Play Store URL (`https://play.google.com/store/apps/details?id=com.instagram.android`). Both resolve to the same app. An unrecognizable value comes back as a `success: false` record with `code: VALIDATION_FAILED`, not a rejected run.

**How many reviews can I get per app?**

As many as the app has, capped by `maxReviews`. The Actor walks review pages in order until it hits your cap or the app runs out. Popular apps have far more reviews than niche ones, so a very high `maxReviews` on a small app returns fewer.

**Can I get reviews in other languages or countries?**

Yes. Set `country` (for example `gb`, `de`) and `language` (for example `de`, `pt-BR`). Google Play returns reviews for that locale. One run covers one locale; run the app again per market for wider coverage.

**What if an app has no reviews?**

It comes back as a `success: false` record with `code: NO_REVIEWS`. You are not charged.

**Can I use this Actor from my own code?**

Yes. Use the Apify API or one of the official SDKs (Node.js: `apify-client`, Python: `apify-client`). The Console shows ready-to-paste code samples on the API tab.

**How does billing know an app returned nothing?**

Billing fires on an explicit per-review charge event, not on dataset writes. The Actor only fires it when a review is delivered, so `success: false` records sit in your dataset for free. You get every result in one place and still branch on `success` and `code`, with a `request_id` for support correlation.

### Found a bug or want a feature?

Open an issue on this Actor's Issues tab and include the `request_id` from any error record you saw. We respond within one business day.

# Actor input Schema

## `appId` (type: `string`):

A single app, as a package name (e.g. 'com.instagram.android') or a Play Store URL. An unrecognizable value comes back as a success:false record (code VALIDATION\_FAILED), not a rejected run.

## `appIds` (type: `array`):

List of apps (package names or Play Store URLs). Merged with appId and de-duplicated; up to 50 unique apps are processed per run. An app with no reviews comes back as a success:false record, so one miss never blocks the batch.

## `maxReviews` (type: `integer`):

Maximum number of reviews to return per app. The Actor walks review pages until it reaches this many or the app runs out. Popular apps have far more reviews than niche ones, so a very high value may return fewer.

## `sort` (type: `string`):

Review order. 'newest' (default) is most recent first; 'rating' sorts by star rating; 'relevance' is Google Play's most-relevant ranking.

## `country` (type: `string`):

Two-letter store country code (e.g. 'us', 'gb', 'de'). Google Play localizes which reviews are returned by country. Defaults to 'us'.

## `language` (type: `string`):

Language code for the review locale (e.g. 'en', 'de', 'pt-BR'). Defaults to 'en'.

## Actor input object example

```json
{
  "appId": "com.instagram.android",
  "maxReviews": 100,
  "sort": "newest",
  "country": "us",
  "language": "en"
}
```

# Actor output Schema

## `reviews` (type: `string`):

One record per review. success:true carries the review fields; success:false carries the error code and message for an app that returned nothing or failed.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "appId": "com.instagram.android",
    "maxReviews": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("apihq/google-play-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "appId": "com.instagram.android",
    "maxReviews": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("apihq/google-play-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "appId": "com.instagram.android",
  "maxReviews": 100
}' |
apify call apihq/google-play-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=apihq/google-play-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Play Reviews Scraper",
        "description": "Scrape Google Play Store reviews to JSON by app package name or URL. No Google Play account. One record per review with rating, text, author, developer reply, thumbs-up, app version, and date. Apps with no reviews cost $0. $0.08 per 1,000 reviews.",
        "version": "0.1",
        "x-build-id": "B6eVZPZmiicvytuOb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apihq~google-play-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apihq-google-play-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/apihq~google-play-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apihq-google-play-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/apihq~google-play-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apihq-google-play-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "appId": {
                        "title": "App (package name or URL)",
                        "type": "string",
                        "description": "A single app, as a package name (e.g. 'com.instagram.android') or a Play Store URL. An unrecognizable value comes back as a success:false record (code VALIDATION_FAILED), not a rejected run."
                    },
                    "appIds": {
                        "title": "Multiple apps",
                        "type": "array",
                        "description": "List of apps (package names or Play Store URLs). Merged with appId and de-duplicated; up to 50 unique apps are processed per run. An app with no reviews comes back as a success:false record, so one miss never blocks the batch.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxReviews": {
                        "title": "Max reviews per app",
                        "type": "integer",
                        "description": "Maximum number of reviews to return per app. The Actor walks review pages until it reaches this many or the app runs out. Popular apps have far more reviews than niche ones, so a very high value may return fewer."
                    },
                    "sort": {
                        "title": "Sort by",
                        "enum": [
                            "newest",
                            "rating",
                            "relevance"
                        ],
                        "type": "string",
                        "description": "Review order. 'newest' (default) is most recent first; 'rating' sorts by star rating; 'relevance' is Google Play's most-relevant ranking.",
                        "default": "newest"
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Two-letter store country code (e.g. 'us', 'gb', 'de'). Google Play localizes which reviews are returned by country. Defaults to 'us'.",
                        "default": "us"
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language code for the review locale (e.g. 'en', 'de', 'pt-BR'). Defaults to 'en'.",
                        "default": "en"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
