# App Store & Google Play Metadata & ASO Scraper (`dsh-org/app-metadata-aso-scraper`) Actor

Scrape app metadata from Apple App Store and Google Play in one unified schema. Get title, ratings, screenshots, version history, pricing, and more. Monitor mode alerts you when competitors update their apps. No API key needed.

- **URL**: https://apify.com/dsh-org/app-metadata-aso-scraper.md
- **Developed by:** [DSH](https://apify.com/dsh-org) (community)
- **Categories:** AI, Developer tools
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 app scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## App Store & Google Play Metadata & ASO Scraper

Scrape **app metadata** from the **Apple App Store** and **Google Play Store** in one unified format — **title, description, ratings, screenshots, pricing, version history, developer info, and category** — for **app store optimization (ASO)**, competitive intelligence, and market research. Look up apps by **ID, bundle ID, store URL, or keyword search**, pull **many apps in one run**, and switch on **monitor mode** to get alerted when a competitor ships a new version, changes their price, or their rating shifts. API/HTTP-only, **no browser, no API key**.

This is the metadata half of app intelligence. For **reviews and AI sentiment analysis**, pair it with our **[App Review Scraper & Monitor](https://apify.com/dsh-org/app-review-scraper-monitor)** — same unified two-store approach, for the reviews side.

### What you get

Every app — Apple or Google — comes back in the same unified schema:

| Field | Description |
|---|---|
| `store` | `apple` or `google` |
| `appId` | Apple numeric ID or Google package name |
| `bundleId` | Apple bundle ID (e.g. `net.whatsapp.WhatsApp`); `null` for Google |
| `title`, `subtitle` | App name; subtitle/short description (Google `summary`; Apple `null`) |
| `developer`, `developerUrl`, `developerEmail` | Publisher name, site, and email (email: Google only) |
| `description` | Full description text (when `includeDescription`) |
| `iconUrl`, `screenshotUrls` | Icon and screenshot URLs (screenshots when `includeScreenshots`) |
| `averageRating`, `ratingCount`, `reviewCount` | Rating average, ratings count, written-review count (reviews: Google) |
| `ratingsHistogram` | Star distribution `{1..5}` (Google only) |
| `price`, `currency`, `free` | Price, currency, free flag |
| `containsAds`, `offersInAppPurchases` | Monetization flags (Google) |
| `primaryCategory`, `categories`, `contentRating` | Category, all categories, age/content rating |
| `currentVersion`, `releaseDate`, `lastUpdated`, `releaseNotes` | Version + release metadata |
| `minimumOsVersion`, `size`, `installs` | Min OS, app size, install count (installs: Google) |
| `versionHistory` | Current version's release notes as an entry (Apple only, when requested) |
| `storeUrl` | Direct link to the app on the store |
| `changes`, `hasChanges` | Populated in monitor mode: what metadata changed since the last run |
| `scrapedAt` | ISO 8601 timestamp |

### Two stores, one schema

Both stores map into the same fields, but each exposes different data:

- **Apple only:** `bundleId`, iPad screenshots (merged into `screenshotUrls`), `versionHistory` (current version's notes).
- **Google only:** `ratingsHistogram`, `reviewCount`, `installs`, `developerEmail`, `containsAds`, `offersInAppPurchases`.
- **Where they differ:** Apple has no install counts, no ratings histogram, no developer email, and no App Store subtitle via the public API; Google Play has no version history. Fields that a store doesn't provide come back `null`, never as errors.

### Monitor mode — track competitor apps over time

Set `mode: "monitor"` and attach an Apify **Schedule** (daily/weekly):

- **First run** stores a baseline snapshot of each app's tracked fields.
- **Later runs** compare current metadata against the baseline and populate `changes` + `hasChanges: true` for any app that moved. Tracked fields: `currentVersion`, `price`, `averageRating` (±0.1 threshold), `ratingCount` (+5% threshold), `releaseNotes`, `primaryCategory`, `contentRating`.
- Every app is still output on every run — only the changed ones carry a `changes` array.

Example: *"Get alerted when your competitor releases a new version or changes their price."* State is keyed per app (`state-{store}-{appId}-{country}`) in a named Key-Value Store, so it survives across scheduled runs.

### Input

Look up a single app by ID (zero-config prefill uses WhatsApp on both stores):

```json
{ "apps": ["https://apps.apple.com/us/app/whatsapp-messenger/id310633997"] }
````

Bulk, mixed identifiers, both stores:

```json
{
  "apps": [
    "310633997",
    "com.whatsapp",
    "com.google.Maps",
    { "store": "google", "appId": "com.spotify.music", "country": "gb" }
  ],
  "includeScreenshots": false
}
```

Keyword search (searches both stores when the store is auto-detected):

```json
{ "apps": ["weather"], "maxApps": 20 }
```

Monitor competitors for changes:

```json
{
  "apps": ["com.whatsapp", "com.instagram.android"],
  "mode": "monitor"
}
```

| Input | Description |
|---|---|
| `apps` | Array of URLs, IDs, bundle IDs, package names, keywords, or `{ store, appId, country }` objects |
| `mode` | `snapshot` (default) or `monitor` (change detection) |
| `includeScreenshots` | Include screenshot URLs (default `true`) |
| `includeDescription` | Include full description text (default `true`) |
| `includeVersionHistory` | Apple: include current version's notes (default `false`) |
| `maxApps` | Cap on total apps per run (default 100, max 1000) |
| `language` | ISO 2-letter language for Google Play (default `en`) |

**Auto-detect:** numeric ID → Apple; lowercase reverse-DNS (`com.whatsapp`) → Google package; mixed-case reverse-DNS (`com.google.Maps`) → Apple bundle ID; anything else → keyword search. Set `store` explicitly to remove ambiguity.

### Output examples

Apple app:

```json
{
  "store": "apple",
  "appId": "310633997",
  "bundleId": "net.whatsapp.WhatsApp",
  "title": "WhatsApp Messenger",
  "subtitle": null,
  "developer": "WhatsApp Inc.",
  "developerUrl": "https://www.whatsapp.com/",
  "developerEmail": null,
  "iconUrl": "https://is1-ssl.mzstatic.com/.../512x512.png",
  "screenshotUrls": ["https://.../1.png", "https://.../2.png"],
  "averageRating": 4.7,
  "ratingCount": 15234891,
  "reviewCount": null,
  "ratingsHistogram": null,
  "price": 0,
  "currency": "USD",
  "free": true,
  "primaryCategory": "Social Networking",
  "categories": ["Social Networking", "Utilities"],
  "contentRating": "12+",
  "currentVersion": "24.5.0",
  "releaseDate": "2009-05-03T07:00:00Z",
  "lastUpdated": "2026-06-15T09:31:00Z",
  "releaseNotes": "Bug fixes and performance improvements.",
  "minimumOsVersion": "12.0",
  "size": "238 MB",
  "installs": null,
  "versionHistory": null,
  "storeUrl": "https://apps.apple.com/us/app/id310633997",
  "changes": null,
  "hasChanges": null,
  "scrapedAt": "2026-07-01T12:00:00.000Z"
}
```

Google Play app (monitor run that detected a version bump):

```json
{
  "store": "google",
  "appId": "com.whatsapp",
  "bundleId": null,
  "title": "WhatsApp Messenger",
  "subtitle": "Simple. Reliable. Private.",
  "developer": "WhatsApp LLC",
  "developerUrl": "https://www.whatsapp.com/",
  "developerEmail": "android_support@support.whatsapp.com",
  "iconUrl": "https://play-lh.googleusercontent.com/....png",
  "screenshotUrls": ["https://.../1.png", "https://.../2.png"],
  "averageRating": 4.3,
  "ratingCount": 190482233,
  "reviewCount": 8123456,
  "ratingsHistogram": { "1": 9000000, "2": 3000000, "3": 8000000, "4": 20000000, "5": 150000000 },
  "price": 0,
  "currency": "USD",
  "free": true,
  "containsAds": false,
  "offersInAppPurchases": true,
  "primaryCategory": "Communication",
  "categories": ["Communication"],
  "contentRating": "Everyone",
  "currentVersion": "2.26.1.0",
  "releaseDate": "Oct 18, 2010",
  "lastUpdated": "2026-06-20T00:00:00.000Z",
  "releaseNotes": "Now you can pin more chats.",
  "minimumOsVersion": "5.0",
  "size": "Varies with device",
  "installs": "5,000,000,000+",
  "versionHistory": null,
  "storeUrl": "https://play.google.com/store/apps/details?id=com.whatsapp",
  "changes": [
    { "field": "currentVersion", "oldValue": "2.26.0.0", "newValue": "2.26.1.0" },
    { "field": "releaseNotes", "oldValue": "Bug fixes.", "newValue": "Now you can pin more chats." }
  ],
  "hasChanges": true,
  "scrapedAt": "2026-07-01T12:00:00.000Z"
}
```

### Use cases

- **ASO teams** tracking competitor metadata, keywords, and store-listing changes.
- **Product managers** monitoring when competitors ship new versions.
- **Market researchers** comparing categories, pricing, and ratings across countries.
- **App agencies** auditing client apps' store presence across both platforms.
- **Investors** tracking app ratings and install trends over time.
- **Developers** benchmarking their app against competitors.
- **Data teams** building an app-intelligence database from a unified schema.

### Pair with our review scraper

For **app reviews, ratings over time, and AI sentiment/theme tagging**, use our **[App Review Scraper & Monitor](https://apify.com/dsh-org/app-review-scraper-monitor)**. This Actor covers the *metadata*; that one covers the *reviews* — together they give you the full App Store & Google Play intelligence picture.

### Limitations

- **Apple rate limit** (~20 requests/min on the iTunes API). Batch/bulk runs are throttled with backoff.
- **Apple gaps:** no install counts, no ratings histogram, no developer email, no App Store subtitle, and version history limited to the current version's notes (deeper history needs Apple's token-gated private API).
- **Google Play** metadata comes via the community `google-play-scraper` (HTTP `batchexecute`, no browser) — occasionally needs a parser update when Google changes markup; Apple runs are unaffected.
- **No historical database** — monitor mode tracks changes from your first run onward, not retroactively.
- Region-specific apps may not exist in every `country`; those are skipped with a warning, never a crash.

### Pricing (Pay-Per-Event)

Pay only for what you pull, **from ~$1.50 per 1,000 apps**:

| Event | When charged |
|---|---|
| Actor run start | Once per run |
| App metadata scraped | Per app fetched and output (both stores; every app checked in monitor mode) |
| App changes detected | Per app where monitor mode found a metadata change (the actionable-intelligence event) |

No subscription, no rental.

### Use it from an AI agent (MCP)

This Actor is **MCP-ready**: run it as a tool from Claude, Cursor, or ChatGPT via Apify's MCP integration to give your agent live app metadata from the Apple App Store and Google Play on demand.

### FAQ

**Do I need an API key?** No. Both the iTunes Search API and Google Play are public — no key, no account.

**How does keyword search work?** If an entry isn't an ID/bundle ID/URL, it's treated as a search term. With store auto-detected, it searches **both** stores and returns full metadata for the top hits (capped by `maxApps`).

**Which countries/languages?** Set `country` per app (affects pricing, availability, ratings) and `language` for Google Play text.

**What does monitor mode detect?** Changes to version, price, average rating (±0.1), rating count (+5%), release notes, category, and content rating — since your previous run.

**Does it scrape reviews?** No — this Actor is metadata only. For reviews and AI sentiment, use our [App Review Scraper & Monitor](https://apify.com/dsh-org/app-review-scraper-monitor).

**Does it use a browser?** No — iTunes Search API + HTTP-based `google-play-scraper`, which keeps runs fast and cheap.

# Actor input Schema

## `apps` (type: `array`):

Apps to fetch metadata for. Each item can be: a full App Store or Google Play URL, an Apple numeric ID ("310633997"), an Apple bundle ID ("com.google.Maps"), a Google package name ("com.whatsapp"), a keyword search term, OR a structured object { store, appId, country }. store is "apple", "google", or "auto" (default, detected from the ID format).

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

snapshot = fetch current metadata (no state). monitor = on the first run store a baseline, then on later runs detect and flag metadata changes (new version, price change, rating shift). Ideal for scheduled ASO/competitor tracking.

## `includeScreenshots` (type: `boolean`):

Include screenshot URLs in the output. Turn off to reduce output size for large bulk runs.

## `includeDescription` (type: `boolean`):

Include the full app description text. Turn off for compact output.

## `includeVersionHistory` (type: `boolean`):

For Apple apps, include the current version's release notes as a versionHistory entry. Google Play does not expose version history. Note: Apple's public API exposes only the current version's notes.

## `maxApps` (type: `integer`):

Safety cap on the total number of apps scraped in one run (caps PPE charges on large input lists and keyword searches).

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

ISO 2-letter language code for Google Play metadata (e.g. en, es, de). Apple metadata is returned per-country.

## Actor input object example

```json
{
  "apps": [
    "https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
    {
      "store": "google",
      "appId": "com.whatsapp",
      "country": "us"
    }
  ],
  "mode": "snapshot",
  "includeScreenshots": true,
  "includeDescription": true,
  "includeVersionHistory": false,
  "maxApps": 100,
  "language": "en"
}
```

# 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 = {
    "apps": [
        "https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
        {
            "store": "google",
            "appId": "com.whatsapp",
            "country": "us"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dsh-org/app-metadata-aso-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 = { "apps": [
        "https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
        {
            "store": "google",
            "appId": "com.whatsapp",
            "country": "us",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("dsh-org/app-metadata-aso-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 '{
  "apps": [
    "https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
    {
      "store": "google",
      "appId": "com.whatsapp",
      "country": "us"
    }
  ]
}' |
apify call dsh-org/app-metadata-aso-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=dsh-org/app-metadata-aso-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "App Store & Google Play Metadata & ASO Scraper",
        "description": "Scrape app metadata from Apple App Store and Google Play in one unified schema. Get title, ratings, screenshots, version history, pricing, and more. Monitor mode alerts you when competitors update their apps. No API key needed.",
        "version": "0.0",
        "x-build-id": "isfk8kxP4h6eZ6709"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dsh-org~app-metadata-aso-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dsh-org-app-metadata-aso-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/dsh-org~app-metadata-aso-scraper/runs": {
            "post": {
                "operationId": "runs-sync-dsh-org-app-metadata-aso-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/dsh-org~app-metadata-aso-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-dsh-org-app-metadata-aso-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",
                "required": [
                    "apps"
                ],
                "properties": {
                    "apps": {
                        "title": "Apps",
                        "type": "array",
                        "description": "Apps to fetch metadata for. Each item can be: a full App Store or Google Play URL, an Apple numeric ID (\"310633997\"), an Apple bundle ID (\"com.google.Maps\"), a Google package name (\"com.whatsapp\"), a keyword search term, OR a structured object { store, appId, country }. store is \"apple\", \"google\", or \"auto\" (default, detected from the ID format)."
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "snapshot",
                            "monitor"
                        ],
                        "type": "string",
                        "description": "snapshot = fetch current metadata (no state). monitor = on the first run store a baseline, then on later runs detect and flag metadata changes (new version, price change, rating shift). Ideal for scheduled ASO/competitor tracking.",
                        "default": "snapshot"
                    },
                    "includeScreenshots": {
                        "title": "Include screenshots",
                        "type": "boolean",
                        "description": "Include screenshot URLs in the output. Turn off to reduce output size for large bulk runs.",
                        "default": true
                    },
                    "includeDescription": {
                        "title": "Include full description",
                        "type": "boolean",
                        "description": "Include the full app description text. Turn off for compact output.",
                        "default": true
                    },
                    "includeVersionHistory": {
                        "title": "Include version history (Apple only)",
                        "type": "boolean",
                        "description": "For Apple apps, include the current version's release notes as a versionHistory entry. Google Play does not expose version history. Note: Apple's public API exposes only the current version's notes.",
                        "default": false
                    },
                    "maxApps": {
                        "title": "Max apps",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Safety cap on the total number of apps scraped in one run (caps PPE charges on large input lists and keyword searches).",
                        "default": 100
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "ISO 2-letter language code for Google Play metadata (e.g. en, es, de). Apple metadata is returned per-country.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
