# USPTO Trademark Search — Wordmark, Owner, Class & Serial Lookup (`memo23/uspto-trademark-scraper`) Actor

Search US federal trademarks straight from USPTO: by wordmark/brand, owner name, or goods & services, plus exact serial-number lookup. Filter by live/dead status and Nice class. Full records — status, owner, classes, dates, goods, mark image. No API key. JSON/CSV

- **URL**: https://apify.com/memo23/uspto-trademark-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Developer tools, Automation, AI
- **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.

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

## USPTO Trademark Search — Wordmark, Owner, Class & Serial Lookup

Search **US federal trademarks straight from the USPTO** — by wordmark/brand, by owner, by goods & services, or by exact serial number — and get back clean, structured records: status, owner, international classes, filing and registration dates, the full goods & services text, and a link to the mark image. No API key, no login, no CAPTCHA.

### Why Use This Scraper?

- **Straight from the source.** Queries the USPTO's own trademark search index, so every field is the official record — not a third-party copy that lags behind.
- **Four ways to search.** By wordmark/brand keyword, by owner/applicant name, by words in the goods & services text, or by exact serial-number lookup — one operation each, one clean dataset out.
- **Built-in filters.** Narrow to **live** (active/pending) or **dead** (abandoned/cancelled) marks, and to one or more **international (Nice) classes** — perfect for brand-clearance and availability checks.
- **Full records, flattened.** Each row carries status, owner(s), mark type, classes (international + US + coordinated), filing/registration/abandon/cancel dates, the complete goods & services description, design codes, disclaimer, translation, and a direct mark-image URL.
- **No key, no login, no browser.** Pure HTTP against a public endpoint — fast, stable, and cheap. Auto-paginates every match up to USPTO's limit.
- **Bulk-ready.** Pass many terms or many serial numbers in one run; results merge into a single dataset you can export as JSON, CSV, or Excel.

### Overview

This actor turns the USPTO Trademark Search system into a structured data feed. You pick an **operation** (how you want to search), give it terms or serial numbers, optionally filter by status and class, and it returns one flat record per matching trademark.

It runs four operations, each a distinct search mode against the same official index:

- **`search`** — the core wordmark/brand search (e.g. `nike`, `apple`). Optionally require an exact phrase for tighter clearance checks.
- **`owner-search`** — every mark held by an owner or applicant (e.g. `Nike, Inc.`).
- **`goods-services-search`** — full-text search across the goods & services descriptions (e.g. `athletic footwear`).
- **`serial-lookup`** — fetch exact records for a list of serial numbers.

Typical uses: trademark clearance and availability checks before a launch, portfolio monitoring of a competitor's marks, IP due-diligence, building a brand database, and feeding trademark data to legal/brand AI agents.

### Supported Inputs

- **Wordmark / brand terms** — one or more keywords for the `search` operation.
- **Owner names** — for `owner-search` (e.g. `Tesla, Inc.`).
- **Goods & services phrases** — for `goods-services-search` (e.g. `computer software`).
- **Serial numbers** — for `serial-lookup` (digits only; dashes/spaces are stripped).
- **Filters** — `liveDead` (all / live / dead) and `internationalClasses` (Nice classes) apply to all three search operations.

### Use Cases

| Who | What they use it for |
| --- | --- |
| **Trademark attorneys & paralegals** | Run clearance and availability searches before filing; pull every live mark in a class to assess likelihood of confusion. |
| **Brand & marketing teams** | Check whether a proposed brand name is already taken (live marks in the relevant classes) before a launch. |
| **Competitive / IP intelligence** | Monitor a competitor's trademark portfolio by owner name — new filings, abandonments, classes they're expanding into. |
| **Domainers & startup founders** | Screen candidate names against federal trademarks in bulk. |
| **Legal-tech & AI agents** | Feed structured, official trademark records into clearance tools, dashboards, or LLM apps. |

### How It Works

![How the USPTO Trademark Search scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-uspto.png)

1. **Choose a mode** — pick an operation (wordmark, owner, goods & services, or serial lookup), give it terms or serial numbers, and optionally set the live/dead and class filters.
2. **Query USPTO** — the actor queries the USPTO trademark search index directly over plain HTTP (no API key, no login) and auto-paginates through every match up to the cap.
3. **Export** — each matching mark becomes one flat record, streamed to the dataset for download as JSON, CSV, or Excel, or via the Apify API.

### Input Configuration

| Field | Type | Description |
| --- | --- | --- |
| `operation` | enum | `search`, `owner-search`, `goods-services-search`, or `serial-lookup`. |
| `searchTerms` | array | Terms to search. Wordmarks (search), owner names (owner-search), or goods/services words (goods-services-search). Each term runs as its own query; results merge. |
| `serialNumbers` | array | Serial numbers for `serial-lookup` (digits only). |
| `exactMatch` | boolean | `search` only — require the wordmark to contain the term as an exact phrase. Great for availability checks. Default `false`. |
| `liveDead` | enum | Restrict to `live`, `dead`, or `all` marks. Default `all`. |
| `internationalClasses` | array | Optional Nice-class filter, e.g. `["025","009"]` or `["IC 025"]`. Matches any listed class. |
| `maxItems` | integer | Hard cap on records returned this run. USPTO limits deep paging to 10,000 per query. |
| `proxy` | object | Optional. The API is open, so the actor runs direct by default; set a proxy only for very large runs. |

#### Example input

```json
{
  "operation": "search",
  "searchTerms": ["nike"],
  "liveDead": "live",
  "internationalClasses": ["025"],
  "exactMatch": false,
  "maxItems": 500
}
````

### Output Overview

Every matching trademark is emitted as one flat JSON object. Array fields (owners, classes, goods & services, design codes) come back as arrays; fields a given mark doesn't have come back `null` or `[]`, so the schema stays consistent across the whole dataset. Download as JSON, CSV, Excel, or via the Apify API.

### Output Sample

A live registered wordmark (trimmed for readability):

```json
{
  "serialNumber": "97509558",
  "wordmark": "NIKE UNIVERSA",
  "pseudoMark": null,
  "status": "LIVE",
  "alive": true,
  "markType": ["TRADEMARK"],
  "registrationNumber": "7489663",
  "registrationType": ["PRINCIPAL"],
  "filedDate": "2022-07-19",
  "registrationDate": "2024-08-27",
  "abandonDate": null,
  "cancelDate": null,
  "owners": ["Nike, Inc. (CORPORATION; OREGON, USA)"],
  "ownerType": "ORIGINAL REGISTRANT",
  "goodsAndServices": [
    "IC 025: Athletic apparel, namely, leggings, pants, shorts, athletic tights and cycling shorts, tops, footwear, headwear."
  ],
  "internationalClasses": ["IC 025"],
  "usClasses": ["039 022."],
  "coordinatedClasses": [],
  "markDescription": [],
  "designCodes": [],
  "drawingCode": 4,
  "disclaimer": null,
  "translation": null,
  "currentBasis": ["1a"],
  "attorney": "Jennifer M. Reynolds",
  "markImageUrl": "https://tmcms-docs.uspto.gov/cases/97509558/mark/large.png",
  "tsdrUrl": "https://tsdr.uspto.gov/#caseNumber=97509558&caseType=SERIAL_NO&searchType=statusSearch",
  "relevanceScore": 89.4
}
```

### Key Output Fields

**Identity & status**

- `serialNumber` — USPTO serial number (the record's unique id)
- `wordmark` — the literal mark text; `pseudoMark` — USPTO's phonetic equivalent
- `status` — `LIVE` or `DEAD`; `alive` — boolean
- `markType`, `registrationNumber`, `registrationType`, `drawingCode`

**Owner**

- `owners` — owner/applicant name(s); `ownerFullText` — full owner blocks with addresses; `ownerType`

**Classification & goods**

- `internationalClasses` — Nice classes (e.g. `IC 025`); `usClasses`; `coordinatedClasses`
- `goodsAndServices` — the full goods & services description(s)
- `designCodes` — design-search codes for figurative marks; `disclaimer`, `translation`, `markDescription`

**Dates**

- `filedDate`, `registrationDate`, `abandonDate`, `cancelDate`, `priorityDate`, `publishForOppositionDate`

**Links**

- `markImageUrl` — the mark image (for design/stylized marks); `tsdrUrl` — the official status page; `attorney`; `relevanceScore`

### FAQ

**Do I need a USPTO API key or an account?**
No. The actor queries the public USPTO trademark search index directly over HTTP. There is no key, no login, and no CAPTCHA.

**What's the difference between the four operations?**
`search` looks in the wordmark (brand text). `owner-search` looks in the owner/applicant name. `goods-services-search` looks in the goods & services description. `serial-lookup` fetches exact records by serial number. Pick the one that matches how you want to find marks.

**How do I check if a brand name is available?**
Use `search` with `exactMatch: true` and `liveDead: "live"`, optionally filtered to the international class(es) you care about. Live marks that exactly contain your term are the ones most relevant to a clearance decision. (This is a research aid, not legal advice — see the disclaimer.)

**Can I filter by trademark class?**
Yes. Set `internationalClasses` to one or more Nice classes, e.g. `["025"]` for clothing/footwear or `["009"]` for software/electronics. A mark matches if it belongs to any listed class.

**Why do some records have no mark image?**
`markImageUrl` points to the mark drawing. Standard-character (typed) marks have no stylized image, so the URL will 404 for those; design/stylized marks return a PNG.

**How many results can I get per search?**
The USPTO search index caps deep paging at 10,000 results per query, so a single very broad term returns at most 10,000 records. Narrow with filters or more specific terms to stay under that. `maxItems` caps your run below that if you want fewer.

**Does it include full prosecution history / status documents?**
No — this actor returns the searchable trademark record (status, owner, classes, goods, dates, image). Full document history lives behind USPTO's separate TSDR document API, which now requires a USPTO API key. The `tsdrUrl` on each row links to that official status page.

**What export formats are supported?**
Every run writes to an Apify dataset you can download as JSON, CSV, Excel, XML, or JSONL, or fetch via the Apify API — and wire into scheduling, webhooks, Google Sheets, Zapier, or Make.

### Support

- **Found a bug or need a new field?** Open a ticket on the **Issues** tab of this actor — it's the fastest way to reach me and I actively maintain this scraper.
- **Email:** <muhamed.didovic@gmail.com>
- **Website:** [muhamed-didovic.github.io](https://muhamed-didovic.github.io/)

### Additional Services

Need something beyond the standard output? I build and maintain custom scrapers and data pipelines. Happy to help with:

- Scheduled trademark-portfolio monitoring wired into your CRM, data warehouse, or Slack/email alerts
- Custom fields, filters, or exports tailored to your clearance workflow
- Cross-referencing with other IP sources (patents, TTAB proceedings, international registers)
- Private or dedicated actors for high-volume or compliance-sensitive use

Reach out via the Issues tab or email and describe what you need.

### Explore More Scrapers

Browse my other Apify actors — business directories, review sites, job boards, real estate, and lead-generation tools — on my profile: [memo23 on Apify](https://apify.com/memo23).

### ⚠️ Disclaimer

This Actor accesses **publicly available** trademark data published by the United States Patent and Trademark Office (USPTO) for legitimate research, clearance, and business-analysis purposes. It is an independent tool and is **not** affiliated with, endorsed by, or officially connected to the USPTO or any government agency.

The output is provided for informational purposes only and is **not legal advice**. A trademark clearance or availability decision should be made by a qualified attorney; the presence or absence of a record in these results does not by itself establish that a mark is available or free to use. Use the data in compliance with applicable laws and the USPTO's terms of use. We do not store any scraped data; the Actor returns it directly to your Apify dataset for your authorized use.

### SEO Keywords

USPTO trademark scraper, USPTO trademark search, trademark search API, trademark availability check, trademark clearance search, wordmark search, trademark owner search, trademark serial number lookup, TESS alternative, trademark search system, federal trademark database, trademark data extraction, brand name availability, Nice class trademark search, live trademark search, trademark monitoring, trademark portfolio, goods and services search, trademark lookup tool, IP due diligence, trademark JSON export, trademark CSV export, no-code trademark scraper, trademark clearance API

# Actor input Schema

## `operation` (type: `string`):

Which search to run. 'search' = by wordmark/brand keyword; 'owner-search' = by owner/applicant name; 'goods-services-search' = full-text over the goods & services text; 'serial-lookup' = fetch exact records by serial number.

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

Terms to search. For 'search' these are wordmarks/brands (e.g. nike, apple); for 'owner-search' they are owner names (e.g. Nike, Inc.); for 'goods-services-search' they are words from the goods/services text (e.g. athletic footwear). Each term runs as its own query and results are merged. Leave empty when using serial-lookup.

## `serialNumbers` (type: `array`):

USPTO serial numbers to fetch exact records for. Digits only — dashes and spaces are stripped automatically. Used only by the 'serial-lookup' operation.

## `exactMatch` (type: `boolean`):

When on, only marks whose wordmark contains the term as an exact phrase are returned — useful for brand-availability / clearance checks. When off (default), a broader relevance search is used.

## `liveDead` (type: `string`):

Restrict results to live (active/pending) marks, dead (abandoned/cancelled/expired) marks, or all.

## `internationalClasses` (type: `array`):

Optional. Restrict to one or more international classes, e.g. \["025", "009"] (or "IC 025"). A mark matches if it belongs to ANY listed class. Leave empty for all classes.

## `maxItems` (type: `integer`):

Hard cap on how many trademark records to return this run (across all terms). Note: USPTO limits deep paging to 10,000 results per query.

## `proxy` (type: `object`):

Optional. The USPTO search API is open, so the actor runs direct by default. Only set a proxy if you want to route requests through Apify Proxy or your own proxies for very large runs.

## Actor input object example

```json
{
  "operation": "search",
  "searchTerms": [
    "nike"
  ],
  "exactMatch": false,
  "liveDead": "all",
  "maxItems": 1000
}
```

# 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 = {
    "searchTerms": [
        "nike"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/uspto-trademark-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 = { "searchTerms": ["nike"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/uspto-trademark-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 '{
  "searchTerms": [
    "nike"
  ]
}' |
apify call memo23/uspto-trademark-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "USPTO Trademark Search — Wordmark, Owner, Class & Serial Lookup",
        "description": "Search US federal trademarks straight from USPTO: by wordmark/brand, owner name, or goods & services, plus exact serial-number lookup. Filter by live/dead status and Nice class. Full records — status, owner, classes, dates, goods, mark image. No API key. JSON/CSV",
        "version": "0.0",
        "x-build-id": "PPxIhqCrnNEJQcATb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~uspto-trademark-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-uspto-trademark-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/memo23~uspto-trademark-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-uspto-trademark-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/memo23~uspto-trademark-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-uspto-trademark-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "operation"
                ],
                "properties": {
                    "operation": {
                        "title": "Operation",
                        "enum": [
                            "search",
                            "owner-search",
                            "goods-services-search",
                            "serial-lookup"
                        ],
                        "type": "string",
                        "description": "Which search to run. 'search' = by wordmark/brand keyword; 'owner-search' = by owner/applicant name; 'goods-services-search' = full-text over the goods & services text; 'serial-lookup' = fetch exact records by serial number.",
                        "default": "search"
                    },
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Terms to search. For 'search' these are wordmarks/brands (e.g. nike, apple); for 'owner-search' they are owner names (e.g. Nike, Inc.); for 'goods-services-search' they are words from the goods/services text (e.g. athletic footwear). Each term runs as its own query and results are merged. Leave empty when using serial-lookup.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "serialNumbers": {
                        "title": "Serial numbers (serial-lookup only)",
                        "type": "array",
                        "description": "USPTO serial numbers to fetch exact records for. Digits only — dashes and spaces are stripped automatically. Used only by the 'serial-lookup' operation.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "exactMatch": {
                        "title": "Exact wordmark phrase (search only)",
                        "type": "boolean",
                        "description": "When on, only marks whose wordmark contains the term as an exact phrase are returned — useful for brand-availability / clearance checks. When off (default), a broader relevance search is used.",
                        "default": false
                    },
                    "liveDead": {
                        "title": "Status filter",
                        "enum": [
                            "all",
                            "live",
                            "dead"
                        ],
                        "type": "string",
                        "description": "Restrict results to live (active/pending) marks, dead (abandoned/cancelled/expired) marks, or all.",
                        "default": "all"
                    },
                    "internationalClasses": {
                        "title": "International (Nice) class filter",
                        "type": "array",
                        "description": "Optional. Restrict to one or more international classes, e.g. [\"025\", \"009\"] (or \"IC 025\"). A mark matches if it belongs to ANY listed class. Leave empty for all classes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max records",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on how many trademark records to return this run (across all terms). Note: USPTO limits deep paging to 10,000 results per query.",
                        "default": 1000
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. The USPTO search API is open, so the actor runs direct by default. Only set a proxy if you want to route requests through Apify Proxy or your own proxies for very large runs."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
