# Schema.org Vocabulary Drift Monitor (`defenestrator/schema-org-vocabulary-drift-monitor`) Actor

Monitor the official Schema.org JSON-LD vocabulary for watched term changes, replacements, removals, and release drift.

- **URL**: https://apify.com/defenestrator/schema-org-vocabulary-drift-monitor.md
- **Developed by:** [Defenestrator](https://apify.com/defenestrator) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 monitor rows

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

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

## Schema.org Vocabulary Drift Monitor

Monitor the official Schema.org JSON-LD vocabulary for watched term changes, replacements, removals, and release drift.

This Actor is for SEO, structured-data, product-catalog, marketplace, knowledge-graph, and data-platform teams that rely on Schema.org terms such as `Product`, `Offer`, `JobPosting`, `SoftwareApplication`, `MerchantReturnPolicy`, or `Dataset`.

It is not a website crawler, rich-results validator, or generic JSON-LD extractor. It watches the upstream Schema.org vocabulary itself so you can decide whether production markup rules, schema mappings, validators, or structured-data generators need review.

Unofficial tool. Not affiliated with Schema.org, Google, Microsoft, Yandex, Yahoo, or any standards body. Always verify important markup and SEO decisions against the official Schema.org pages and the search/platform-specific structured-data documentation you rely on.

### What it does

- Fetches the official latest Schema.org JSON-LD vocabulary from `https://schema.org/version/latest/schemaorg-current-https.jsonld`.
- Normalizes classes, properties, data types, and enumeration values into deterministic dataset rows.
- Emits rows for watched IDs and text terms.
- Flags terms with `supersededBy` targets or attic-layer status.
- Optionally emits pending-layer terms.
- Compares against prior run rows passed in `baselineRows` to detect changed, new, or removed terms.
- Emits a summary row with vocabulary counts and source hashes so scheduled runs stay non-empty and trendable.

### Why run it repeatedly

Schema.org evolves. Structured-data templates, SEO playbooks, marketplace product feeds, job-posting feeds, and knowledge-graph ingestion code can drift away from the current vocabulary or keep using terms that have been replaced. Run this Actor on a schedule and feed the previous dataset rows back into `baselineRows` to detect upstream semantic changes.

### Input

```json
{
  "watchIds": ["Product", "Offer", "JobPosting", "SoftwareApplication", "MerchantReturnPolicy", "Dataset"],
  "watchTextTerms": ["return policy", "price", "employment", "software", "dataset"],
  "expectedIds": [],
  "baselineRows": [],
  "includeVocabularySummaryRows": true,
  "includeDeprecatedRows": true,
  "includePendingRows": false,
  "includeAllVocabularyRows": false,
  "emitNewRowsWhenBaselineProvided": true,
  "emitRemovedBaselineRows": true,
  "alertOnAnySemanticChange": true,
  "maxRows": 500
}
````

#### Key fields

- `watchIds`: exact Schema.org terms to always emit. Bare names like `Product` are normalized to `schema:Product`.
- `watchTextTerms`: case-insensitive text terms matched against IDs, labels, comments, domains, ranges, and replacement targets.
- `expectedIds`: terms that must be present. Missing expected terms create high-priority rows.
- `baselineRows`: rows from a previous run of this Actor. Matching rows enable drift detection. A partial watchlist baseline compares only the rows it contains; new-term detection requires a complete prior vocabulary plus its summary row.
- `includeAllVocabularyRows`: emit the whole vocabulary. This is useful for offline inventory but can create thousands of rows.

### Output rows

Rows are written to the default dataset. Common fields include:

- `rowType`: `vocabulary_item`, `vocabulary_summary`, `expected_missing`, `removed_baseline`, or `source_error`.
- `termId`, `termName`, `termKind`, `termLabel`, `termComment`.
- `domainIncludes`, `rangeIncludes`, `subClassOf`, `supersededBy`, and `layers`.
- `isDeprecatedOrReplaced`, `isPending`, `isAttic`.
- `matchedWatchIds`, `matchedWatchTerms`.
- `changedSincePrevious`, `newSincePrevious`, `removedSincePrevious`.
- `semanticHash`, `previousSemanticHash`, `sourceHash`, `sourceSemanticHash`.
- `priority`, `riskScore`, `alert`, `alertReasons`, `inventoryNotes`, `recommendedAction`.

Existing deprecated, replaced, attic, or pending terms are labeled as baseline inventory on a first run. They become alerts only when a supplied baseline shows a new or changed condition. Watched terms remain easy to find without presenting old vocabulary history as a new incident.

The key-value store `OUTPUT` record contains run-level counts, hashes, row-type counts, priority counts, and sample rows.

### Example use cases

- SEO team watches `Product`, `Offer`, `Review`, `MerchantReturnPolicy`, and `JobPosting` terms weekly.
- Marketplace engineering team stores a baseline and alerts when a watched property’s domain/range or replacement target changes.
- Knowledge-graph team emits all vocabulary rows once, then schedules smaller watchlist runs for the terms used in ingestion schemas.
- Compliance or content-platform team checks if old terms have moved to attic or acquired replacement targets.

### Limitations

- This Actor monitors the Schema.org vocabulary, not how search engines interpret or support individual structured-data types.
- It does not crawl your site and does not validate your page markup.
- Pending Schema.org terms may not be supported by search/rich-results products.
- `supersededBy` and attic status are strong review signals, not automatic legal, SEO, or product decisions.
- The source is a public official JSON-LD file; if the source is unavailable, the Actor emits/fails with a clear source error rather than silently using stale data.

### Pricing

**From $2 per 1,000 result rows.**

This Actor uses Apify Pay Per Event (PPE) pricing:

- `apify-actor-start`: `$0.00005` per run start.
- `apify-default-dataset-item`: `$0.002` per dataset row (`Monitor row`).
- Platform usage is included in the event price; users do not pay a separate platform-usage pass-through.
- A dataset row is one monitored result, source, or drift-check row emitted by the Actor. Run cost scales with the number of rows produced and the limits you choose.

Use Apify's max total charge setting before starting a run if you want a hard spend cap.

# Actor input Schema

## `watchIds` (type: `array`):

Exact Schema.org term IDs to always emit. Use bare names such as Product or prefixed IDs such as schema:Product.

## `watchTextTerms` (type: `array`):

Optional case-insensitive text terms to match against Schema.org IDs, labels, comments, domains, ranges, and superseded-by targets.

## `expectedIds` (type: `array`):

Exact Schema.org term IDs that must exist. Missing expected IDs emit HIGH-priority rows.

## `baselineRows` (type: `array`):

Rows from a prior run of this Actor. Matching rowKey and semanticHash values detect changed and removed terms. New-term detection runs only when the baseline contains the complete vocabulary plus its summary row.

## `includeVocabularySummaryRows` (type: `boolean`):

If true, emit a summary row with counts and source hashes. This keeps default runs non-empty and trendable.

## `includeDeprecatedRows` (type: `boolean`):

If true, emit Schema.org terms that have supersededBy targets or belong to the attic layer, even without a watch or baseline match.

## `includePendingRows` (type: `boolean`):

If true, emit Schema.org terms from the pending layer. This can be useful for SEO and product teams watching upcoming structured-data vocabulary.

## `includeAllVocabularyRows` (type: `boolean`):

If true, emit every parsed Schema.org term, not only watched, deprecated, pending, changed, new, removed, expected-missing, or summary rows.

## `emitNewRowsWhenBaselineProvided` (type: `boolean`):

If true and baselineRows proves it contains the complete prior vocabulary, current terms absent from that baseline emit MEDIUM-priority new-entry rows. Partial watchlist baselines never create false new-term alerts.

## `emitRemovedBaselineRows` (type: `boolean`):

If true, baseline rows absent from the current Schema.org vocabulary emit HIGH-priority removed-baseline rows.

## `alertOnAnySemanticChange` (type: `boolean`):

If true, changed semantic hashes for baseline-matched Schema.org terms produce alert rows.

## `maxRows` (type: `integer`):

Maximum rows to emit after priority sorting. Alerts, removals, changes, new rows, watched rows, deprecated rows, pending rows, and summaries are kept first.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout for the official Schema.org JSON-LD vocabulary fetch.

## `maxFetchAttempts` (type: `integer`):

Maximum bounded retry attempts for the official Schema.org source. Keep this low to avoid hammering official sources.

## `maxResponseBytes` (type: `integer`):

Maximum accepted response size for the official Schema.org JSON-LD vocabulary.

## Actor input object example

```json
{
  "watchIds": [
    "Product",
    "Offer",
    "JobPosting",
    "SoftwareApplication",
    "MerchantReturnPolicy",
    "Dataset"
  ],
  "watchTextTerms": [
    "return policy",
    "price",
    "employment",
    "software",
    "dataset"
  ],
  "expectedIds": [],
  "baselineRows": [],
  "includeVocabularySummaryRows": true,
  "includeDeprecatedRows": true,
  "includePendingRows": false,
  "includeAllVocabularyRows": false,
  "emitNewRowsWhenBaselineProvided": true,
  "emitRemovedBaselineRows": true,
  "alertOnAnySemanticChange": true,
  "maxRows": 500,
  "requestTimeoutSecs": 30,
  "maxFetchAttempts": 2,
  "maxResponseBytes": 5000000
}
```

# Actor output Schema

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

Dataset rows: watched terms, changed terms, new terms, removed baseline terms, replaced or attic terms, optional pending terms, and source summaries.

## `summary` (type: `string`):

Run-level source metadata, counts, hashes, and alert totals stored in OUTPUT.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("defenestrator/schema-org-vocabulary-drift-monitor").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("defenestrator/schema-org-vocabulary-drift-monitor").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 '{}' |
apify call defenestrator/schema-org-vocabulary-drift-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=defenestrator/schema-org-vocabulary-drift-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Schema.org Vocabulary Drift Monitor",
        "description": "Monitor the official Schema.org JSON-LD vocabulary for watched term changes, replacements, removals, and release drift.",
        "version": "0.0",
        "x-build-id": "6cGeP6GBusugTTjJ1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/defenestrator~schema-org-vocabulary-drift-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-defenestrator-schema-org-vocabulary-drift-monitor",
                "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/defenestrator~schema-org-vocabulary-drift-monitor/runs": {
            "post": {
                "operationId": "runs-sync-defenestrator-schema-org-vocabulary-drift-monitor",
                "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/defenestrator~schema-org-vocabulary-drift-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-defenestrator-schema-org-vocabulary-drift-monitor",
                "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": {
                    "watchIds": {
                        "title": "Schema.org term IDs to watch",
                        "type": "array",
                        "description": "Exact Schema.org term IDs to always emit. Use bare names such as Product or prefixed IDs such as schema:Product.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "Product",
                            "Offer",
                            "JobPosting",
                            "SoftwareApplication",
                            "MerchantReturnPolicy",
                            "Dataset"
                        ]
                    },
                    "watchTextTerms": {
                        "title": "Watch text terms",
                        "type": "array",
                        "description": "Optional case-insensitive text terms to match against Schema.org IDs, labels, comments, domains, ranges, and superseded-by targets.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "return policy",
                            "price",
                            "employment",
                            "software",
                            "dataset"
                        ]
                    },
                    "expectedIds": {
                        "title": "Expected Schema.org IDs",
                        "type": "array",
                        "description": "Exact Schema.org term IDs that must exist. Missing expected IDs emit HIGH-priority rows.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "baselineRows": {
                        "title": "Previous dataset rows",
                        "type": "array",
                        "description": "Rows from a prior run of this Actor. Matching rowKey and semanticHash values detect changed and removed terms. New-term detection runs only when the baseline contains the complete vocabulary plus its summary row.",
                        "items": {
                            "type": "object"
                        },
                        "default": []
                    },
                    "includeVocabularySummaryRows": {
                        "title": "Include vocabulary summary rows",
                        "type": "boolean",
                        "description": "If true, emit a summary row with counts and source hashes. This keeps default runs non-empty and trendable.",
                        "default": true
                    },
                    "includeDeprecatedRows": {
                        "title": "Include replaced or attic terms",
                        "type": "boolean",
                        "description": "If true, emit Schema.org terms that have supersededBy targets or belong to the attic layer, even without a watch or baseline match.",
                        "default": true
                    },
                    "includePendingRows": {
                        "title": "Include pending terms",
                        "type": "boolean",
                        "description": "If true, emit Schema.org terms from the pending layer. This can be useful for SEO and product teams watching upcoming structured-data vocabulary.",
                        "default": false
                    },
                    "includeAllVocabularyRows": {
                        "title": "Include all vocabulary rows",
                        "type": "boolean",
                        "description": "If true, emit every parsed Schema.org term, not only watched, deprecated, pending, changed, new, removed, expected-missing, or summary rows.",
                        "default": false
                    },
                    "emitNewRowsWhenBaselineProvided": {
                        "title": "Emit new rows when baseline is supplied",
                        "type": "boolean",
                        "description": "If true and baselineRows proves it contains the complete prior vocabulary, current terms absent from that baseline emit MEDIUM-priority new-entry rows. Partial watchlist baselines never create false new-term alerts.",
                        "default": true
                    },
                    "emitRemovedBaselineRows": {
                        "title": "Emit removed baseline rows",
                        "type": "boolean",
                        "description": "If true, baseline rows absent from the current Schema.org vocabulary emit HIGH-priority removed-baseline rows.",
                        "default": true
                    },
                    "alertOnAnySemanticChange": {
                        "title": "Alert on semantic changes",
                        "type": "boolean",
                        "description": "If true, changed semantic hashes for baseline-matched Schema.org terms produce alert rows.",
                        "default": true
                    },
                    "maxRows": {
                        "title": "Maximum dataset rows",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum rows to emit after priority sorting. Alerts, removals, changes, new rows, watched rows, deprecated rows, pending rows, and summaries are kept first.",
                        "default": 500
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout seconds",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Per-request timeout for the official Schema.org JSON-LD vocabulary fetch.",
                        "default": 30
                    },
                    "maxFetchAttempts": {
                        "title": "Maximum fetch attempts",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Maximum bounded retry attempts for the official Schema.org source. Keep this low to avoid hammering official sources.",
                        "default": 2
                    },
                    "maxResponseBytes": {
                        "title": "Maximum response bytes",
                        "minimum": 100000,
                        "maximum": 20000000,
                        "type": "integer",
                        "description": "Maximum accepted response size for the official Schema.org JSON-LD vocabulary.",
                        "default": 5000000
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
