# Google Play Scraper — Details, Reviews & Search (`freshactors/google-play-scraper`) Actor

Fast, reliable Google Play scraper: app details + deep-paginated customer reviews as structured JSON. Monitored daily. No login.

- **URL**: https://apify.com/freshactors/google-play-scraper.md
- **Developed by:** [Martin Čech](https://apify.com/freshactors) (community)
- **Categories:** Developer tools, E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 Scraper — App Details, Reviews & Search (Always Fresh)

Scrape **Google Play app details, customer reviews, ratings, ratings histogram, and keyword search results** as clean structured JSON — no API key, no proxy setup, no monthly fee. Fast HTTP, pay-per-use.

![Google Play Scraper example output — 27 structured fields incl. ratings histogram](https://raw.githubusercontent.com/Freshactors/freshactors-assets/main/gp-screenshot.png)

> ✅ **Last verified working: 2026-06-01.** Monitored by an automated daily canary. When Google changes its page structure, we patch fast and log it in the changelog — so your data pipeline doesn't silently break.

---

### Why this Google Play scraper

Most Google Play scrapers go stale and break. You'll see the same complaints across the Store: "crashes on a dead app," "returns nothing," "only 30 results," "stopped working weeks ago." When the data feeding your dashboard or model silently dies, you find out from your boss, not your logs.

This one is built to **stay working**:

- 🛡️ **Doesn't crash on bad input.** Each app is fetched in its own try/catch. A dead, removed, or 404 package is *skipped and logged*, never a run-killer — that's the exact failure mode that breaks the popular incumbent actor.
- 🔄 **Rate-limit resistant.** The reviews engine detects Google's throttle/block responses (missing RPC marker) and retries with exponential backoff + jitter and datacenter IP rotation, instead of quietly returning zero rows.
- 📦 **Comprehensive details** — 25+ fields including the full 1–5★ ratings histogram, exact rating, description, screenshots, genre, price, currency, content rating, and "contains ads" — not just title + rating.
- 🔢 **Deep, token-paginated reviews** — up to 4,000 per app, de-duplicated, with developer replies and reply dates.
- 🧱 **Stable output schema** (`_schemaVersion` on every record). If Google reshapes a positional array upstream, the affected field degrades to `null` — your job keeps running.
- 🔬 **A daily canary** runs `details` + `reviews` against a live app and writes a pass/fail status. The "last verified working" date above is real, not decorative.

### What data you get

Three modes, one actor:

| Mode | What it returns |
|---|---|
| `details` | Full app metadata for each package name you supply. |
| `reviews` | Paginated customer reviews for each package name (with developer replies). |
| `search` | Searches the Play Store by keyword, then returns **full details** for every matching app (tagged with the search term). |

**`details` / `search` output fields:**

| Field | Type | Description |
|---|---|---|
| `appId` | string | Package name, e.g. `com.spotify.music`. |
| `title` | string | App name. |
| `developer` | string | Developer / publisher name. |
| `developerWebsite` | string | Developer site, if listed. |
| `summary` | string | Short tagline. |
| `description` | string | Full store description. |
| `rating` | number | Exact average rating (e.g. `4.33`). |
| `ratingCount` | number | Total number of ratings. |
| `ratingHistogram` | object | `{1,2,3,4,5}` star counts. |
| `installs` | string | Install bucket, e.g. `1,000,000,000+`. |
| `price` / `free` / `currency` | number / bool / string | Price, free flag, currency code. |
| `genre` / `genreId` | string | Category name + ID. |
| `contentRating` | string | e.g. `Teen`, `Everyone`. |
| `containsAds` | boolean | Whether the app contains ads. |
| `updated` | string | Last-updated timestamp (ISO). |
| `icon` / `headerImage` / `screenshots[]` | string / array | Media URLs. |
| `url` | string | Canonical Play Store URL. |
| `_searchTerm` | string | (search mode only) the keyword that surfaced this app. |

**`reviews` output fields:** `reviewId`, `userName`, `userImage`, `rating`, `body`, `thumbsUp`, `date`, `appVersion`, `developerResponse`, `developerResponseDate`, `reviewUrl`, plus `appId` and `country`. Sort by `newest`, `mostHelpful`, or `rating`.

Every record also carries `_type`, `_schemaVersion`, `_source`, and `_scrapedAt`.

### Use cases

- **App Store Optimization (ASO) & competitor analysis** — track ratings, install buckets, descriptions, and the ratings histogram across rival apps over time. The kind of "Google Play app data API" coverage ASO tools sell, at pay-per-use cost.
- **Review monitoring & support triage** — pull new Google Play reviews (and your developer replies) on a schedule, route negative ones to Slack, and watch sentiment per app version.
- **Sentiment / ML training datasets** — collect clean review text + ratings + `appVersion` at scale for fine-tuning or classification. No HTML parsing on your side.
- **Market & category research** — run `search` mode on keywords like "budget tracker" or "habit app" to map a niche: who ranks, their ratings, pricing, and whether they're ad-supported.

### Input

| Field | Type | Notes |
|---|---|---|
| `mode` | string | `details`, `reviews`, or `search`. Default `details`. |
| `appIds` | string[] | Package names, e.g. `com.spotify.music` (the `id=` part of the URL). For `details` + `reviews`. |
| `searchTerms` | string[] | Keywords to search the Play Store. For `search` mode. |
| `maxSearchResults` | int | Apps returned per keyword, 1–100. Default 30. |
| `country` | string | Two-letter storefront code (`us`, `gb`, `de`, …). Default `us`. |
| `lang` | string | Two-letter language code (`en`, `de`, `es`, …). Default `en`. |
| `maxReviewsPerApp` | int | Reviews cap per app, 1–4000. Default 200. |
| `reviewsSort` | string | `newest`, `mostHelpful`, or `rating`. Default `newest`. |

#### Example — details

```json
{ "mode": "details", "appIds": ["com.spotify.music", "com.whatsapp"], "country": "us" }
````

#### Example — reviews

```json
{ "mode": "reviews", "appIds": ["com.spotify.music"], "maxReviewsPerApp": 1000, "reviewsSort": "newest" }
```

#### Example — search

```json
{ "mode": "search", "searchTerms": ["habit tracker", "budget app"], "maxSearchResults": 20, "country": "us" }
```

### Output sample

A single `details` record (abridged):

```json
{
  "_type": "app_details",
  "_schemaVersion": "1.0",
  "_source": "play",
  "appId": "com.spotify.music",
  "country": "us",
  "title": "Spotify: Music and Podcasts",
  "developer": "Spotify AB",
  "rating": 4.33,
  "ratingCount": 35677435,
  "ratingHistogram": { "1": 3695081, "2": 1079953, "3": 1332269, "4": 3058122, "5": 26511993 },
  "installs": "1,000,000,000+",
  "free": true,
  "currency": "USD",
  "genre": "Music & Audio",
  "contentRating": "Teen",
  "containsAds": true,
  "updated": "2026-05-26T14:23:49.000Z",
  "icon": "https://play-lh.googleusercontent.com/...",
  "screenshots": ["https://play-lh.googleusercontent.com/..."],
  "url": "https://play.google.com/store/apps/details?id=com.spotify.music",
  "_scrapedAt": "2026-06-01T08:20:00.000Z"
}
```

A single `reviews` record:

```json
{
  "_type": "review",
  "appId": "com.spotify.music",
  "reviewId": "7e1815f2-36d1-4187-a936-12f969747892",
  "userName": "Catherine Hempel",
  "rating": 5,
  "body": "The paid version is excellent but very expensive...",
  "thumbsUp": 14,
  "date": "2026-04-21T11:35:57.000Z",
  "appVersion": "9.1.40.1486",
  "developerResponse": null,
  "reviewUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=7e1815f2-..."
}
```

### Pricing

Pay-per-event — **no subscription, no platform rental.** You're charged only for data actually returned:

| Event | Price (USD) |
|---|---|
| App details fetched (per app) | **$0.002** |
| Review fetched (per review) | **$0.0001** |

`search` mode charges the per-app **details** event for each matching app it returns.

**How much do 100 results cost?**

- **100 app details** → 100 × $0.002 = **$0.20**.
- **100 reviews** (one popular app) → 100 × $0.0001 = **$0.01**.
- **A 1,000-review pull** → 1,000 × $0.0001 = **$0.10**.
- **A `search` run** returning 20 apps for a keyword → 20 × $0.002 = **$0.04**.

So a competitor-tracking job covering 50 apps' details plus 200 reviews each costs roughly `50 × $0.002 + 50 × 200 × $0.0001 = $0.10 + $1.00 = $1.10` per run.

### FAQ

**Is scraping Google Play legal?** This actor collects **public** store data — app listings and publicly visible reviews — with no login and no personal account access. Public-data scraping is broadly permitted, but you are responsible for how you use the output. Use it responsibly and in line with applicable terms and laws; don't republish personal data.

**Do I need an API key?** No. Google Play has no official public data API for this. You provide package names or search terms and get JSON back — no key, no OAuth, no proxy account to manage.

**Should I pass a URL or a package name?** Use the package name — the `id=` part of the app URL. For `https://play.google.com/store/apps/details?id=com.spotify.music`, the `appId` is `com.spotify.music`.

**Why are there fewer reviews than the rating count?** Google's displayed number is total *ratings*; only a fraction of users write a *review*. This actor returns the written reviews, which is why a 35M-rating app yields far fewer review rows.

**How many reviews can I get per app?** Up to 4,000 via `maxReviewsPerApp`, paginated and de-duplicated. Set the sort with `reviewsSort` (`newest`, `mostHelpful`, `rating`).

**Which countries and languages are supported?** Any — set `country` (e.g. `us`, `gb`, `de`) and `lang` (e.g. `en`, `de`, `es`). Ratings, descriptions, and reviews are returned for that storefront.

**Can I search Google Play by keyword?** Yes — use `search` mode with `searchTerms`. It returns full details for each matching app, tagged with the `_searchTerm` that surfaced it, capped by `maxSearchResults` (1–100).

**Does it return the ratings histogram?** Yes — `details` includes `ratingHistogram` with per-star (1–5) counts, plus the exact average `rating` and total `ratingCount`.

**What happens if an app is removed or doesn't exist?** It's skipped and logged, and the run continues. One bad package never kills the whole job.

**How often is it updated and maintained?** A daily automated canary verifies `details` and `reviews` against a live app. When Google changes its page structure, we patch quickly and record it in the changelog below — that's the whole point of FreshActors.

### Other FreshActors tools

| FreshActors actor | What it scrapes |
|---|---|
| [App Store Scraper](https://apify.com/freshactors/app-store-scraper) | Apple App Store — app details, search, reviews |
| [Google Play Scraper](https://apify.com/freshactors/google-play-scraper) | Google Play — app details + reviews |
| [Shopify App Store Scraper](https://apify.com/freshactors/shopify-app-store-scraper) | Shopify App Store — app details, reviews, discovery |
| [Redfin Scraper](https://apify.com/freshactors/redfin-scraper) | Redfin — US real-estate listings |
| [Greenhouse & Lever Jobs Scraper](https://apify.com/freshactors/greenhouse-lever-jobs-scraper) | Greenhouse + Lever — normalized job postings |

### Reliability

Staying fresh is the product. An automated **daily canary** runs real `details` and `reviews` requests against a live app and records a pass/fail status; the "Last verified working" date at the top reflects that check. Every output record carries a `_schemaVersion`, and parsers access Google's positional data defensively, so an upstream reshape degrades one field to `null` rather than crashing your run. Fixes are shipped fast and recorded in the changelog. Found a problem? Open an issue on the Issues tab — it's answered quickly.

**Legal note.** This actor scrapes **public** Google Play pages only: app listings and publicly visible reviews. No login, no personal account data, no circumvention of access controls. You are responsible for complying with applicable terms and laws and for how you use and store the data, including any personal data contained in reviews.

# Actor input Schema

## `mode` (type: `string`):

What to scrape: app details, customer reviews, or search apps by keyword.

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

Google Play package names, e.g. com.spotify.music (the id= part of the app URL). For details + reviews modes.

## `searchTerms` (type: `array`):

Keywords to search the Play Store (search mode). Returns full details for each matching app.

## `maxSearchResults` (type: `integer`):

Search mode: apps returned per keyword (1–100).

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

Two-letter storefront code (us, gb, de, ...).

## `lang` (type: `string`):

Two-letter language code for results (e.g. en, de, es).

## `maxReviewsPerApp` (type: `integer`):

Reviews mode. Cap per app (1–4000).

## `reviewsSort` (type: `string`):

Order reviews by newest, most helpful, or rating (reviews mode).

## Actor input object example

```json
{
  "mode": "details",
  "appIds": [
    "com.spotify.music"
  ],
  "maxSearchResults": 30,
  "country": "us",
  "lang": "en",
  "maxReviewsPerApp": 200,
  "reviewsSort": "newest"
}
```

# Actor output Schema

## `results` (type: `string`):

App details / search results / reviews, depending on the selected mode.

# 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 = {
    "appIds": [
        "com.spotify.music"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("freshactors/google-play-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 = { "appIds": ["com.spotify.music"] }

# Run the Actor and wait for it to finish
run = client.actor("freshactors/google-play-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 '{
  "appIds": [
    "com.spotify.music"
  ]
}' |
apify call freshactors/google-play-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Play Scraper — Details, Reviews & Search",
        "description": "Fast, reliable Google Play scraper: app details + deep-paginated customer reviews as structured JSON. Monitored daily. No login.",
        "version": "1.0",
        "x-build-id": "dMW4ffgT45gWzoGJY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/freshactors~google-play-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-freshactors-google-play-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/freshactors~google-play-scraper/runs": {
            "post": {
                "operationId": "runs-sync-freshactors-google-play-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/freshactors~google-play-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-freshactors-google-play-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": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "details",
                            "reviews",
                            "search"
                        ],
                        "type": "string",
                        "description": "What to scrape: app details, customer reviews, or search apps by keyword.",
                        "default": "details"
                    },
                    "appIds": {
                        "title": "App package names",
                        "type": "array",
                        "description": "Google Play package names, e.g. com.spotify.music (the id= part of the app URL). For details + reviews modes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Keywords to search the Play Store (search mode). Returns full details for each matching app.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxSearchResults": {
                        "title": "Max search results per term",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Search mode: apps returned per keyword (1–100).",
                        "default": 30
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Two-letter storefront code (us, gb, de, ...).",
                        "default": "us"
                    },
                    "lang": {
                        "title": "Language",
                        "type": "string",
                        "description": "Two-letter language code for results (e.g. en, de, es).",
                        "default": "en"
                    },
                    "maxReviewsPerApp": {
                        "title": "Max reviews per app",
                        "minimum": 1,
                        "maximum": 4000,
                        "type": "integer",
                        "description": "Reviews mode. Cap per app (1–4000).",
                        "default": 200
                    },
                    "reviewsSort": {
                        "title": "Reviews sort",
                        "enum": [
                            "newest",
                            "mostHelpful",
                            "rating"
                        ],
                        "type": "string",
                        "description": "Order reviews by newest, most helpful, or rating (reviews mode).",
                        "default": "newest"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
