# Schema Markup Validator (`automation-lab/schema-markup-validator`) Actor

Validate JSON-LD, Microdata, RDFa, Open Graph, and Twitter Cards across public pages and sitemaps for bulk structured-data SEO QA.

- **URL**: https://apify.com/automation-lab/schema-markup-validator.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** SEO tools
- **Stats:** 2 total users, 1 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

## Schema Markup Validator

Bulk validate structured data, schema.org markup, JSON-LD, Microdata, RDFa, Open Graph, and Twitter Cards from public web pages.

Use this actor when you need repeatable SEO QA at scale: crawl a list of URLs, expand an XML sitemap, detect schema types, parse markup, and export page-level warnings before a release, migration, or content audit.

### What does Schema Markup Validator do?

Schema Markup Validator fetches public HTML pages and inspects the markup that search engines and social platforms use.

It extracts and validates:

- ✅ JSON-LD blocks from `application/ld+json` scripts
- ✅ Microdata entities from `itemscope` and `itemprop`
- ✅ RDFa entities from `typeof` and `property`
- ✅ schema.org type names across all detected formats
- ✅ Open Graph meta tags such as `og:title` and `og:description`
- ✅ Twitter Card tags such as `twitter:card`
- ✅ JSON parse errors and missing context/type warnings
- ✅ local rich-result readiness hints for common schema types

The output is one dataset row per URL, which makes it easy to export to CSV, JSON, Google Sheets, BI tools, or automated QA pipelines.

### Who is it for?

This actor is built for teams that manage SEO-critical websites and need consistent structured-data checks.

- 🔍 Technical SEO agencies auditing client templates
- 📰 Publishers validating Article and NewsArticle pages
- 🛒 Ecommerce teams checking Product schema before launches
- 🏢 Local SEO teams checking LocalBusiness and Organization markup
- 🧑‍💻 Developers adding schema.org markup to templates
- 📈 Growth teams monitoring regression after CMS changes
- 🧪 QA teams adding SEO checks to release workflows

### Why use it?

Manual validators are useful for one page, but they are slow for dozens or thousands of pages.

Schema Markup Validator is designed for repeatable bulk audits:

- Run the same validation before every release
- Compare schema coverage across page templates
- Spot invalid JSON-LD in large URL lists
- Export issues to spreadsheets or ticket systems
- Monitor important pages after CMS or theme changes
- Validate social-card metadata alongside schema markup

### Data you can extract

| Field | Description |
| --- | --- |
| `url` | Input page URL |
| `finalUrl` | Final URL after redirects |
| `statusCode` | HTTP response status |
| `pageTitle` | HTML title text |
| `canonicalUrl` | Canonical link URL when present |
| `schemaTypes` | Detected schema.org types |
| `jsonLdCount` | Number of JSON-LD blocks |
| `microdataCount` | Number of Microdata entities |
| `rdfaCount` | Number of RDFa entities |
| `openGraphCount` | Number of Open Graph tags |
| `twitterCardCount` | Number of Twitter Card tags |
| `errors` | Blocking validation errors |
| `warnings` | Non-blocking quality warnings |
| `richResultHints` | Local required/recommended field hints |
| `jsonLd` | Parsed JSON-LD blocks |
| `microdata` | Extracted Microdata entities |
| `rdfa` | Extracted RDFa entities |
| `openGraph` | Open Graph metadata |
| `twitterCard` | Twitter Card metadata |
| `rawMarkup` | Optional raw snippets for debugging |
| `fetchedAt` | Validation timestamp |

### How much does it cost to validate schema markup?

This actor uses pay-per-event pricing.

You pay a small run-start fee and then a per-page validation fee for each dataset row produced.

The exact live prices are shown on the Apify Store pricing tab. The actor is designed as an HTTP-first tool, so it avoids browser automation by default and keeps validation runs inexpensive.

Cost-control tips:

- Start with 10-25 representative URLs
- Use `maxPages` when testing sitemaps
- Disable raw markup output for smaller exports
- Crawl links only when you need discovery
- Use sitemaps for controlled bulk validation

### How to use Schema Markup Validator

1. Add page URLs to `startUrls`.
2. Optionally add XML sitemap URLs to `sitemapUrls`.
3. Set `maxPages` to the number of pages you want to validate.
4. Keep `crawlLinks` disabled unless you want link discovery.
5. Run the actor.
6. Open the dataset table.
7. Filter rows with errors or warnings.
8. Export the dataset to CSV, JSON, XLSX, or your integration target.

### Input example

```json
{
  "startUrls": [
    { "url": "https://schema.org/Article" },
    { "url": "https://schema.org/Product" }
  ],
  "maxPages": 25,
  "includeRawMarkup": false,
  "validateRichResultHints": true
}
````

### Sitemap input example

```json
{
  "startUrls": [
    { "url": "https://example.com/" }
  ],
  "sitemapUrls": [
    { "url": "https://example.com/sitemap.xml" }
  ],
  "maxPages": 100,
  "crawlLinks": false
}
```

### Output example

```json
{
  "url": "https://schema.org/Article",
  "finalUrl": "https://schema.org/Article",
  "statusCode": 200,
  "pageTitle": "Article - Schema.org Type",
  "canonicalUrl": "https://schema.org/Article",
  "schemaTypes": ["Article"],
  "jsonLdCount": 1,
  "microdataCount": 0,
  "rdfaCount": 0,
  "openGraphCount": 3,
  "twitterCardCount": 2,
  "errors": [],
  "warnings": [],
  "richResultHints": [
    {
      "type": "Article",
      "eligible": false,
      "missingRequired": ["headline", "image"],
      "missingRecommended": ["publisher"]
    }
  ]
}
```

### JSON-LD validation

The actor parses every `application/ld+json` script block independently.

It reports:

- invalid JSON syntax
- missing `@context`
- missing `@type` or `@graph`
- detected schema.org types
- optional raw block text

This helps teams find broken template snippets without waiting for a search-engine recrawl.

### Microdata validation

The actor extracts Microdata from elements with `itemscope`, `itemtype`, `itemid`, and `itemprop`.

Each entity includes the item type, optional ID, and detected properties.

This is useful for older templates, ecommerce themes, and CMS plugins that still generate Microdata instead of JSON-LD.

### RDFa validation

The actor extracts RDFa-like entities from elements with `typeof`, `property`, `resource`, and `about` attributes.

RDFa is less common than JSON-LD, but many older sites and semantic templates still use it.

### Open Graph checks

Open Graph tags control link previews on platforms such as Facebook, LinkedIn, Slack, and many messaging apps.

The actor extracts all `og:*` properties and warns when common core fields are missing.

Common tags include:

- `og:title`
- `og:description`
- `og:image`
- `og:url`
- `og:type`

### Twitter Card checks

Twitter Card metadata controls previews on X/Twitter and other tools that read `twitter:*` tags.

The actor extracts all Twitter Card tags and warns when `twitter:card` is missing.

### Rich-result hints

The actor includes deterministic local hints for common schema types.

Supported hint families include:

- Article
- NewsArticle
- BlogPosting
- Product
- LocalBusiness
- Organization
- FAQPage
- HowTo
- Recipe
- Event
- JobPosting
- BreadcrumbList

These hints are not a replacement for Google's official tools. They are fast local checks for common required and recommended fields.

### Integrations

You can connect Schema Markup Validator to many workflows:

- Send dataset rows to Google Sheets for SEO review
- Trigger Slack alerts when errors appear
- Store historical validation exports in S3
- Compare staging and production templates
- Add structured-data checks to release QA
- Feed warnings into Jira, Linear, or GitHub issues
- Monitor high-value product or article pages weekly

### API usage with Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/schema-markup-validator').call({
  startUrls: [{ url: 'https://schema.org/Article' }],
  maxPages: 10,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/schema-markup-validator').call(run_input={
    'startUrls': [{'url': 'https://schema.org/Article'}],
    'maxPages': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### API usage with cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/automation-lab~schema-markup-validator/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"startUrls":[{"url":"https://schema.org/Article"}],"maxPages":10}'
```

### MCP usage

Use the actor from Claude Desktop, Claude Code, or other MCP-compatible clients through Apify MCP Server.

MCP endpoint:

```text
https://mcp.apify.com/?tools=automation-lab/schema-markup-validator
```

Claude Code setup:

```bash
claude mcp add apify-schema-validator --transport http https://mcp.apify.com/?tools=automation-lab/schema-markup-validator
```

Claude Desktop JSON config:

```json
{
  "mcpServers": {
    "apify-schema-validator": {
      "url": "https://mcp.apify.com/?tools=automation-lab/schema-markup-validator"
    }
  }
}
```

Example prompts:

- "Validate schema markup for these 20 product URLs and summarize missing fields."
- "Check whether our article pages have valid JSON-LD and Open Graph tags."
- "Audit this sitemap and give me a CSV of pages missing Twitter Cards."

### Tips for best results

- Validate representative template URLs first.
- Use sitemaps for controlled bulk audits.
- Keep `includeRawMarkup` off unless you need debugging snippets.
- Use `crawlLinks` only for small site discovery runs.
- Treat rich-result hints as local guidance, not official Google eligibility.
- Export results and track error counts over time.

### Troubleshooting

#### Why do I see no structured data?

The page may not include schema markup in server-rendered HTML, or it may generate markup only in the browser after JavaScript runs. This actor is HTTP-first for cost and reliability.

#### Why does a page show rich-result warnings even with schema present?

The actor checks common required and recommended fields for popular schema types. A warning means the detected entity may be missing fields commonly expected for that rich-result family.

#### Why did a URL return status code 0?

Status code 0 means the request failed before a normal HTTP response was available. Check whether the site blocks automated requests, redirects unusually, or requires login.

### Legality and ethical use

This actor validates public page markup supplied by the user. Use it only on websites you are allowed to audit and follow the target site's terms, robots policies, and applicable laws.

Do not use it to overload websites. Keep `maxPages` reasonable and run recurring audits at responsible intervals.

### Related scrapers and SEO tools

Explore other automation-lab actors on Apify:

- https://apify.com/automation-lab/website-contact-finder
- https://apify.com/automation-lab/google-maps-lead-finder
- https://apify.com/automation-lab/bulk-url-status-checker

### Changelog

- Initial version: HTTP-first schema.org, JSON-LD, Microdata, RDFa, Open Graph, and Twitter Card validation.

### Support

If you need a validation field that is not included yet, open an issue on the Apify actor page with an example URL and the expected output.

# Actor input Schema

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

Public page URLs to fetch and validate. Use a few representative pages for the first run.

## `sitemapUrls` (type: `array`):

Optional XML sitemap URLs. The actor extracts page URLs from <loc> tags until maxPages is reached.

## `maxPages` (type: `integer`):

Maximum number of URL validation records to save. Keep the first run small, then scale to full audits.

## `crawlLinks` (type: `boolean`):

When enabled, the actor follows links discovered on start pages until maxPages is reached.

## `sameDomainOnly` (type: `boolean`):

Only follow links on the same hostname as the fetched page when crawling links.

## `includeRawMarkup` (type: `boolean`):

Save raw JSON-LD and limited Microdata/RDFa HTML snippets for debugging. Disable for smaller exports.

## `validateRichResultHints` (type: `boolean`):

Check common required/recommended fields for popular schema.org rich-result types. This is deterministic local guidance, not Google Rich Results Test output.

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

Per-page HTTP timeout. Increase for slow websites.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://schema.org/Article"
    }
  ],
  "sitemapUrls": [],
  "maxPages": 20,
  "crawlLinks": false,
  "sameDomainOnly": true,
  "includeRawMarkup": false,
  "validateRichResultHints": true,
  "requestTimeoutSecs": 30
}
```

# 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://schema.org/Article"
        }
    ],
    "sitemapUrls": [],
    "maxPages": 20,
    "crawlLinks": false,
    "sameDomainOnly": true,
    "includeRawMarkup": false,
    "validateRichResultHints": true,
    "requestTimeoutSecs": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/schema-markup-validator").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://schema.org/Article" }],
    "sitemapUrls": [],
    "maxPages": 20,
    "crawlLinks": False,
    "sameDomainOnly": True,
    "includeRawMarkup": False,
    "validateRichResultHints": True,
    "requestTimeoutSecs": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/schema-markup-validator").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://schema.org/Article"
    }
  ],
  "sitemapUrls": [],
  "maxPages": 20,
  "crawlLinks": false,
  "sameDomainOnly": true,
  "includeRawMarkup": false,
  "validateRichResultHints": true,
  "requestTimeoutSecs": 30
}' |
apify call automation-lab/schema-markup-validator --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Schema Markup Validator",
        "description": "Validate JSON-LD, Microdata, RDFa, Open Graph, and Twitter Cards across public pages and sitemaps for bulk structured-data SEO QA.",
        "version": "0.1",
        "x-build-id": "PFZRmjzGx3EiRFU3a"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~schema-markup-validator/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-schema-markup-validator",
                "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~schema-markup-validator/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-schema-markup-validator",
                "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~schema-markup-validator/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-schema-markup-validator",
                "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": "Start URLs",
                        "type": "array",
                        "description": "Public page URLs to fetch and validate. Use a few representative pages for the first run.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "sitemapUrls": {
                        "title": "Sitemap URLs",
                        "type": "array",
                        "description": "Optional XML sitemap URLs. The actor extracts page URLs from <loc> tags until maxPages is reached.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxPages": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of URL validation records to save. Keep the first run small, then scale to full audits.",
                        "default": 20
                    },
                    "crawlLinks": {
                        "title": "Crawl links from start pages",
                        "type": "boolean",
                        "description": "When enabled, the actor follows links discovered on start pages until maxPages is reached.",
                        "default": false
                    },
                    "sameDomainOnly": {
                        "title": "Stay on the same domain",
                        "type": "boolean",
                        "description": "Only follow links on the same hostname as the fetched page when crawling links.",
                        "default": true
                    },
                    "includeRawMarkup": {
                        "title": "Include raw markup snippets",
                        "type": "boolean",
                        "description": "Save raw JSON-LD and limited Microdata/RDFa HTML snippets for debugging. Disable for smaller exports.",
                        "default": false
                    },
                    "validateRichResultHints": {
                        "title": "Add rich-result readiness hints",
                        "type": "boolean",
                        "description": "Check common required/recommended fields for popular schema.org rich-result types. This is deterministic local guidance, not Google Rich Results Test output.",
                        "default": true
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout in seconds",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Per-page HTTP timeout. Increase for slow websites.",
                        "default": 30
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
