# Apple App Privacy Labels Scraper (`automation-lab/apple-app-privacy-labels-scraper`) Actor

🍎 Normalize Apple App Store privacy disclosures for compliance audits, vendor-risk reviews, and recurring app portfolio monitoring.

- **URL**: https://apify.com/automation-lab/apple-app-privacy-labels-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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.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

## Apple App Privacy Labels Scraper

Extract and normalize Apple App Store privacy disclosures for compliance audits, vendor-risk reviews, app intelligence, and recurring portfolio monitoring.

Give the Actor public App Store URLs or numeric app IDs. It returns one stable snapshot per app and storefront, including Apple’s three privacy groups, purposes, data types, developer privacy-policy link, raw disclosure text, and collection timestamp.

### What does Apple App Privacy Labels Scraper do?

Apple publishes standardized “privacy nutrition labels” on app product pages.

This Actor converts those labels into analysis-ready JSON.

It extracts:

- App ID and app name
- Developer name
- Apple storefront country
- Developer privacy-policy URL
- Privacy-label availability status
- Data Used to Track You
- Data Linked to You
- Data Not Linked to You
- Purposes within each group
- Data types within each purpose
- Raw disclosure text
- Canonical source URL
- Scrape timestamp

### Who is it for?

#### Mobile privacy and compliance teams

Audit first-party and third-party mobile apps without copying disclosures manually.

#### Vendor-risk analysts

Capture evidence for supplier reviews and compare disclosures across recurring assessments.

#### App-market intelligence teams

Monitor competitors’ declared data practices alongside rankings, releases, and pricing.

#### ASO and mobile agencies

Review a client portfolio across multiple Apple storefronts.

#### Researchers and journalists

Create structured datasets about declared tracking and data collection practices.

### Why use this Actor?

- **Normalized output:** stable group slugs simplify filtering and diffs.
- **Auditability:** raw label text is retained with source and timestamp.
- **Batch support:** process URLs and app IDs in one run.
- **Storefront control:** select a two-letter country storefront.
- **Clear absence semantics:** missing disclosures are not confused with request failures.
- **HTTP-first operation:** no browser is required for ordinary public pages.

### What data can you extract?

| Field | Type | Description |
|---|---|---|
| `appId` | string | Numeric Apple app identifier |
| `appName` | string | App name displayed by Apple |
| `developerName` | string or null | Developer named in the privacy disclosure |
| `country` | string | Requested two-letter storefront |
| `privacyPolicyUrl` | string or null | Developer privacy-policy link |
| `privacyLabelStatus` | string | `available` or `not-provided` |
| `privacyGroups` | array | Normalized disclosure groups |
| `rawPrivacyText` | string or null | Full extracted disclosure text |
| `sourceUrl` | string | Canonical Apple App Store URL |
| `scrapedAt` | string | ISO 8601 collection timestamp |

Each privacy group contains:

- `label`: Apple’s display label
- `slug`: stable machine-readable key
- `description`: Apple’s group explanation
- `purposes`: purpose and data-type pairs
- `dataTypes`: deduplicated group-level data types

### How to scrape Apple App privacy labels

1. Open the Actor input page.
2. Add one or more App Store URLs or numeric app IDs.
3. Choose the storefront country.
4. Keep concurrency low for reliable portfolio runs.
5. Click **Start**.
6. Open the dataset when the run finishes.
7. Export JSON, CSV, Excel, XML, or another supported format.

### Input

#### App Store URLs

Use public product URLs such as:

```text
https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580
````

The Actor extracts the numeric ID and rebuilds the URL for the selected storefront.

#### App IDs

You can provide IDs directly:

```json
["324684580", "310633997", "874139669"]
```

#### Storefront country

Use a two-letter code such as `us`, `gb`, `de`, `fr`, or `jp`.

Privacy disclosures can vary by app and storefront.

#### Maximum concurrency

The accepted range is 1–3.

The default of 3 balances throughput, request reliability, and memory safety.

### Input example

```json
{
  "appIds": [
    "324684580",
    "310633997",
    "874139669"
  ],
  "country": "us",
  "maxConcurrency": 3
}
```

URLs and IDs can be combined in the same run.

Duplicate app IDs are requested only once.

### Output example

```json
{
  "appId": "324684580",
  "appName": "Spotify: Music and Podcasts",
  "developerName": "Spotify",
  "country": "us",
  "privacyPolicyUrl": "http://www.spotify.com/legal/privacy-policy/",
  "privacyLabelStatus": "available",
  "privacyGroups": [
    {
      "label": "Data Used to Track You",
      "slug": "data-used-to-track-you",
      "description": "The following data may be used to track you...",
      "purposes": [],
      "dataTypes": ["Identifiers", "Usage Data"]
    }
  ],
  "rawPrivacyText": "App Privacy ...",
  "sourceUrl": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
  "scrapedAt": "2026-07-12T05:00:00.000Z"
}
```

Actual groups and data types depend on Apple’s current disclosure.

### Privacy group normalization

The Actor recognizes three Apple labels:

| Display label | Stable slug |
|---|---|
| Data Used to Track You | `data-used-to-track-you` |
| Data Linked to You | `data-linked-to-you` |
| Data Not Linked to You | `data-not-linked-to-you` |

Both display labels and slugs are retained.

This makes exported data readable to people and stable for software.

### Monitoring disclosure changes

Schedule the Actor daily, weekly, or monthly.

Store each run’s dataset or send it to your data warehouse.

Use `appId`, `country`, and group `slug` as stable comparison keys.

Typical changes to monitor include:

- A new tracking group appears
- A data type moves between linked and unlinked groups
- A purpose is added or removed
- The privacy-policy URL changes
- A label changes from absent to available

### How much does it cost to scrape Apple privacy labels?

The Actor uses pay-per-event pricing.

A small start event covers run initialization.

A result event is charged for each successfully stored app snapshot.

Failed URLs do not produce dataset records.

Exact tier prices are displayed on the Actor page before you start a run.

Larger subscription tiers receive lower per-result pricing.

### Tips for reliable portfolio audits

- Prefer numeric app IDs when app names may change.
- Run separate jobs for storefronts you need to compare.
- Keep concurrency at the default of 3 for large recurring jobs.
- Preserve `rawPrivacyText` for evidence and troubleshooting.
- Compare normalized slugs rather than display copy.
- Treat Apple labels as developer declarations, not independently verified facts.

### Error handling

Malformed URLs and IDs are rejected before requests begin.

HTTP failures are logged with their normalized source URL.

A valid fetched page with no privacy groups emits:

```json
{"privacyLabelStatus":"not-provided"}
```

A failed request does not emit that status.

This distinction prevents false “no disclosure” findings.

### Integrations

#### Google Sheets

Export CSV or connect through Make to maintain a review register.

#### Slack and email alerts

Compare the newest dataset with a prior snapshot and alert on changed groups.

#### Data warehouses

Load JSON into BigQuery, Snowflake, PostgreSQL, or another warehouse.

#### Webhooks

Use an Apify webhook to start downstream risk-scoring workflows after each run.

#### Zapier and Make

Trigger periodic audits and route changed disclosures to compliance owners.

### API usage with JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/apple-app-privacy-labels-scraper').call({
  appIds: ['324684580', '310633997'],
  country: 'us',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Apify API with Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/apple-app-privacy-labels-scraper').call(run_input={
    'appIds': ['324684580', '310633997'],
    'country': 'us',
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### Apify API with cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~apple-app-privacy-labels-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"appIds":["324684580"],"country":"us"}'
```

Poll the returned run ID or use a synchronous API endpoint when appropriate.

### Use with MCP and AI agents

Connect the Actor through Apify’s MCP server. In Claude Code, run:

```bash
claude mcp add --transport http apify https://mcp.apify.com/?tools=automation-lab/apple-app-privacy-labels-scraper
```

For Claude Desktop, Cursor, or VS Code, add this HTTP server to the client's MCP JSON configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=automation-lab/apple-app-privacy-labels-scraper"
    }
  }
}
```

Restart the client after saving the configuration, then use actor-specific prompts such as:

Claude Code prompt:

> Extract US App Store privacy labels for these app IDs and summarize every data type used for tracking.

Claude Desktop prompt:

> Compare the linked-data disclosures for this vendor portfolio and flag apps with changed privacy-policy URLs.

Agent workflows can consume the stable JSON without parsing Apple’s page markup.

### Scheduling

Use Apify schedules to run recurring portfolio snapshots.

Recommended cadence depends on risk:

- Weekly for high-risk vendors
- Monthly for ordinary supplier reviews
- Quarterly for low-change internal portfolios
- On demand before procurement or release approval

Name datasets or export snapshots with the run date for easy comparisons.

### Export formats

Apify datasets support:

- JSON
- JSONL
- CSV
- Excel
- XML
- RSS

Nested privacy groups are richest in JSON and JSONL.

Flatten group data downstream when a spreadsheet workflow requires it.

### Legality

The Actor accesses public App Store product pages.

Privacy labels are declarations supplied by app developers and displayed by Apple.

Apple states that this information has not necessarily been verified by Apple.

Use results as an input to review, not as proof of technical app behavior.

Follow applicable laws, contractual requirements, and Apple’s terms.

Do not use the Actor to collect personal data or bypass access controls.

### Limitations

- Apple can change page markup.
- Disclosures may differ between storefronts.
- Some apps may not provide a privacy label.
- The Actor does not inspect application binaries or network traffic.
- It reports declared practices, not observed runtime behavior.
- Removed or unavailable apps can return HTTP errors.

### FAQ

#### Can I use only an app ID?

Yes. Provide the numeric ID in `appIds` and select a storefront country.

#### Can I submit full URLs?

Yes. Add public product URLs to `startUrls`.

#### Can I mix URLs and IDs?

Yes. The Actor normalizes and deduplicates both lists.

#### Does it scrape reviews or rankings?

No. It specializes in App Privacy disclosures.

#### Why is `privacyLabelStatus` set to `not-provided`?

The page was fetched successfully but no recognized privacy groups were present.

#### Why did an app produce no record?

Check the run log for an invalid ID, unavailable storefront page, timeout, or HTTP error.

#### Why are there fewer than three groups?

Apple displays only groups relevant to the developer’s current declaration.

#### Are the declarations verified?

No. Apple notes that developer-supplied privacy information has not necessarily been verified.

#### Which export format should I use?

Use JSON or JSONL to preserve nested purposes and data-type arrays.

#### How do I compare two runs?

Join records by `appId` and `country`, then compare each privacy group by `slug`.

### Related scrapers

Combine this Actor with other `automation-lab` App Store actors when you also need general metadata, rankings, reviews, charts, or keyword intelligence.

Keep privacy-label snapshots separate from volatile review and ranking datasets so compliance diffs remain easy to audit.

### Support

If a public App Store page contains a visible privacy label that was not extracted, open an issue from the Actor page.

Include:

- The App Store URL
- Storefront country
- Run ID
- Expected privacy group
- Any relevant log message

This information helps reproduce markup and storefront differences quickly.

# Actor input Schema

## `startUrls` (type: `array`):

Apple App Store product URLs to audit.

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

Numeric Apple app IDs, such as 324684580.

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

Two-letter Apple storefront code.

## `maxConcurrency` (type: `integer`):

Parallel requests (1-3). Bounded to keep large portfolio runs memory-safe.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580"
    }
  ],
  "appIds": [],
  "country": "us",
  "maxConcurrency": 3
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580"
        }
    ],
    "country": "us"
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/apple-app-privacy-labels-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 = {
    "startUrls": [{ "url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580" }],
    "country": "us",
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/apple-app-privacy-labels-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 '{
  "startUrls": [
    {
      "url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580"
    }
  ],
  "country": "us"
}' |
apify call automation-lab/apple-app-privacy-labels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/apple-app-privacy-labels-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Apple App Privacy Labels Scraper",
        "description": "🍎 Normalize Apple App Store privacy disclosures for compliance audits, vendor-risk reviews, and recurring app portfolio monitoring.",
        "version": "0.1",
        "x-build-id": "Dv0flh0pZA6YsfZZ6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~apple-app-privacy-labels-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-apple-app-privacy-labels-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/automation-lab~apple-app-privacy-labels-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-apple-app-privacy-labels-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/automation-lab~apple-app-privacy-labels-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-apple-app-privacy-labels-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": {
                    "startUrls": {
                        "title": "🍎 App Store URLs",
                        "type": "array",
                        "description": "Apple App Store product URLs to audit.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "appIds": {
                        "title": "App IDs",
                        "type": "array",
                        "description": "Numeric Apple app IDs, such as 324684580.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Storefront country",
                        "pattern": "^[A-Za-z]{2}$",
                        "type": "string",
                        "description": "Two-letter Apple storefront code.",
                        "default": "us"
                    },
                    "maxConcurrency": {
                        "title": "Maximum concurrency",
                        "minimum": 1,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Parallel requests (1-3). Bounded to keep large portfolio runs memory-safe.",
                        "default": 3
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
