# SEO & Marketing Framing Analyzer — No-AI, Evidence-Backed (`equ1n0x/seo-marketing-framing-analyzer`) Actor

Extract on-page SEO signals and classify marketing persuasion framing (urgency, scarcity, social proof, authority, benefit, risk-reversal) — deterministic, no LLM, every result backed by a verbatim evidence quote. Plus multimodal scraping and custom-lens classification.

- **URL**: https://apify.com/equ1n0x/seo-marketing-framing-analyzer.md
- **Developed by:** [Noah Davidson](https://apify.com/equ1n0x) (community)
- **Categories:** SEO tools, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 page processeds

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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

## SEO & Marketing Framing Analyzer — deterministic, no-AI, evidence-backed

**In plain words:** every page on the internet is trying to move you — *hurry, last chance,
everyone's switching, experts agree.* This tool reads pages and shows you exactly **how** they're
doing it, quoting the very sentence each time. No AI and no guessing: if it can't point to the
actual words on the page, it says nothing at all. Marketers use it to study copy at scale; anyone
can use it to see the machinery plainly. The rest of this page is the same promise in engineering
terms.

Extract on-page **SEO signals**, capture pages **multimodally**, and classify the **marketing framing**
of web copy — with an engine that uses **no LLM**. That means: no model sits in the loop to drift,
sample, or hallucinate — so there are **no invented fields**, every classification is backed by a
**verbatim evidence quote**, and there's **no per-result AI cost** — so it stays fast and cheap at
scale. (Two runs of the same URL can differ when the *page* changes or a dynamic page renders
differently — that's the input moving, never the engine guessing.)

Three jobs in one Actor — read a page's search-engine signals and its persuasion moves, scrape
pages cleanly, or tag pages against your own labels:

| Mode | What you get |
|------|--------------|
| **SEO + marketing framing** (`seo`) | Title, meta description/keywords/robots, canonical, Open Graph & Twitter cards, full heading tree, word count, image alt-text coverage, internal/external link counts, keyword density — **plus** a classification of the copy's persuasion framing (urgency, scarcity, social proof, authority, benefit-led, risk-reversal), each with the exact quote that evidences it. |
| **Multimodal scrape** (`scrape`) | Clean, readable page text. Turn on **Multimodal** to also render the page and transcribe on-screen text (useful for JavaScript-heavy pages or text baked into images). |
| **Classify against your own lens** (`code`) | Bring your own set of labels + trigger phrases and classify any list of pages against them. General-purpose, deterministic tagging with evidence quotes. |

### Why this Actor

- **No model, no mood** — there's no LLM in the loop, so nothing is sampled, invented, or drifting;
  results are driven only by what's actually on the page. The engine adds no variance of its own —
  what can change between two runs of the same URL is the live page itself (a content update, or a
  dynamic render), never the engine's judgment.
- **No hallucinated data** — a field is only emitted when it's actually present on the page, and every
  marketing-framing label carries the verbatim sentence that triggered it. Nothing is invented.
- **Internally corroborated** — a classification ships only after it is independently cross-checked
  inside the engine; a weak or conflicting signal is **discarded, not reported**. When results arrive,
  they've already survived their own audit. In plain words: it double-checks itself before it
  speaks, and throws away what it isn't sure of.
- **Your data never meets an AI provider** — the engine is LLM-free, so page content is processed
  entirely in-container and never sent to any third-party model. Privacy by construction, not policy.
- **No per-result AI cost** — LLM-free also means runs stay cheap and fast even across thousands of
  pages. That's what keeps pay-per-event pricing low.
- **Provenance on every row** — each result carries a tamper-evident `provenance` tag; with a secret
  set, tags are HMAC-signed so *you* can prove to a client which rows came from your audit, unaltered.
- **Bring a proprietary lens, keep it proprietary** — ship your own classification framework encrypted
  (AES-256-GCM); it decrypts only in memory at runtime. Your methodology never sits in the clear.
  In plain words: your method stays your secret — even from us.

### Input

What you tell it: which pages to read, and which of the three jobs to do:

```jsonc
{
  "mode": "seo",                                  // "seo" | "scrape" | "code"
  "startUrls": [{ "url": "https://example.com" }],
  "multimodal": false,                            // render + transcribe on-screen text
  "lensName": "marketing_seo_v1",                 // built-in framing lens (seo/code modes)
  "maxItems": 50,
  "timeoutSecs": 30
}
````

For the `code` mode you can pass your **own** lens instead:

```jsonc
{
  "mode": "code",
  "startUrls": [{ "url": "https://example.com/pricing" }],
  "lensJson": {
    "matching_modes": {
      "pricing_signals": {
        "free_tier":  { "lexical_markers": ["free plan", "free tier", "no credit card"] },
        "enterprise": { "lexical_markers": ["contact sales", "custom pricing", "enterprise"] }
      }
    }
  }
}
```

### Output

What comes back: everything found on each page, with every claim carrying the exact words that
earned it.

**`seo` mode** — one item per page:

```jsonc
{
  "url": "https://example.com",
  "title": "Example — Get Started Today",
  "title_length": 30,
  "meta_description": "Try it free, cancel anytime.",
  "canonical": "https://example.com/",
  "og": { "title": "Example", "description": "...", "image": "https://.../og.png", "type": "website" },
  "twitter": { "card": "summary_large_image", "title": "Example" },
  "h1_count": 1,
  "word_count": 812,
  "images_total": 14,
  "images_with_alt": 11,
  "images_alt_coverage": 0.786,
  "links_internal": 42,
  "links_external": 9,
  "top_keywords": [{ "term": "pricing", "count": 12 }, { "term": "free", "count": 8 }],
  "marketing_framing": [
    { "dimension": "persuasion_framing", "label": "risk_reversal",
      "evidence_quote": "Try it free, cancel anytime.", "review_needed": false },
    { "dimension": "persuasion_framing", "label": "urgency",
      "evidence_quote": "Get started today.", "review_needed": false }
  ],
  "marketing_framing_counts": { "risk_reversal": 1, "urgency": 1 },
  "provenance": "dove0:9f2c…"
}
```

**`code` mode** — one item per classification, each with its evidence:

```jsonc
{ "dimension": "pricing_signals", "label": "free_tier",
  "evidence_quote": "Start on the free plan, no credit card required.",
  "source_url": "https://example.com/pricing", "source_title": "Pricing",
  "review_needed": false, "provenance": "dove0:1a7b…" }
```

### Great for

- **SEO audits** at scale — meta/heading/canonical/OG hygiene across a whole site or competitor set.
- **Marketing & competitive intel** — see *how* competitors persuade (urgency vs. social proof vs.
  authority), backed by the exact copy.
- **Content & CRO teams** — quantify persuasion framing on landing pages, reproducibly.
- **Custom tagging pipelines** — the `code` mode is a deterministic, evidence-backed classifier for any
  label set you define.

### Deterministic vs. an AI analyzer — a structural difference, not a slogan

Most tools that classify web copy at scale run on an LLM. That buys fluency — and it gives up three
guarantees you can't get back, not because any vendor is careless, but because a probabilistic model
*structurally* can't make them:

- **Reproducibility.** Ask a model the same thing twice and the answer can drift. Ask this engine, and
  the same page yields the same result — no sampling, no temperature, nothing to drift.
- **Evidence.** A model can return a confident label with nothing on the page behind it, and can't
  *prove* it didn't. Here, every label carries the verbatim sentence that triggered it, or it isn't
  emitted — a guess has no path onto your bill.
- **Privacy.** A model has to send your content off to judge it. This engine is LLM-free, so your
  pages never leave the container and never reach any AI provider.

None of that calls an AI tool dishonest. It's the difference between what a probabilistic method can
*offer* and what a deterministic one can *guarantee* — and we'd rather you check it than take our
word. Run the same audit twice and diff the output. Trace any label to its quoted sentence. Watch the
network and see nothing leave. The difference isn't a claim you have to trust; it's one you can verify
from where you sit.

### Pricing

You pay only for what verifiably happened, and the bill is one number you can work out before you
run: a small fixed **run fee** plus a flat **per-page** price. Two meters:

| Meter | When it fires | Price |
|-------|---------------|-------|
| **run-started** | Once per run — boot, integrity self-check, browser spin-up (the fixed startup cost, priced as itself) | $3.00 / 1,000 |
| **page-processed** | Once per page fetched and fully analyzed — SEO signals *and* its marketing-framing classifications, each with a verbatim evidence quote | $7.00 / 1,000 |

That's the whole meter — no per-result charge you can't predict. Your total is `run-started + (pages ×
page-processed)`, so a page costs the same whether it yields six framing labels or none. The
**$7.00 / 1,000** figure Apify shows in the header is your per-page price — the real driver of the
bill — on top of a one-time **$3.00 / 1,000** run fee that rounds to nothing on any real run. Because
the engine is LLM-free, that per-page price buys a full scrape, SEO audit, and evidence-backed
framing analysis for well under a cent.

#### What a real run costs

Concrete, and knowable before you press run:

- **Quick 3-page check** — 1 run + 3 pages ≈ **$0.02**
- **100-page SEO audit** — 1 run + 100 pages ≈ **$0.70**
- **1,000-page audit** — 1 run + 1,000 pages ≈ **$7.00**

A page the engine abstains on — nothing it can quote — costs exactly the same as any other: you're
paying for the read, not for findings, so a guess can never appear on your bill and ambiguous copy
never inflates it.

#### How this price was derived

Priced by derivation, not by market — no reference to anyone else's prices. The formula:
**measured cost ÷ platform share + a stated stewardship wage.** From a real measured run
(2026-07-22): 2 pages + 4 classifications cost $0.0078 total — a marginal page cost of roughly
$0.002–0.003. After the platform's ~20% share, cost-recovery is about $0.003 a page; the rest of the
$0.007 is an openly-stated stewardship wage for building and keeping an engine that reads meaning
without guessing. Classifications aren't metered separately — they cost ~nothing to emit, so the
work, and the price, is the page. The launch is priced once as itself, so a 3-page check and a
3,000-page audit each pay the true shape of their own cost — no cross-subsidy. And one thing you are
*never* charged for: a guess — the engine abstains on ambiguous copy rather than inventing a
classification to bill you for. When the meters change, the price is re-derived and this section
updated.

### The honesty contract (what it will and won't do)

**What you can rely on:** every classification is evidence-quoted, internally corroborated, and free
of model drift — no LLM sits in the loop to hallucinate or change its mind between runs, so the
analysis is driven entirely by the page in front of it. When a page hasn't changed, a re-run
reproduces it; when it has, what you see is the page's change, never the engine's mood.
On ambiguous phrasing it **abstains rather than guesses** — so when it *does* speak, the label has
already survived cross-examination. Precision over recall is a capability, not an apology: it is the
one guarantee AI-based analyzers structurally cannot make.

**The true limits, stated plainly:**

- It classifies by what is actually on the page. Framing that lives purely in tone, imagery, or
  implication — with no words to quote — is reported as nothing, on purpose. It stays silent rather
  than guess.
- `multimodal` mode renders each page (slower); reserve it for JavaScript-heavy pages or text baked
  into images — where it will read what non-rendering scrapers can't see at all.
- Respect each target site's terms of service and robots policy when scraping.

### Servicing of terms

We flipped the label on purpose: not terms that govern the service — a service that keeps its
terms. Here they are, short enough to actually read: **your data stays yours**
(processed in-container, never retained after the run, never sold, never trained on, never shown to
any AI provider); **no rights are claimed** over your inputs or outputs beyond mechanically running
the job you asked for; **you pay only for receipted events — never for a guess**; **you can leave
anytime with nothing held**. We ask one term back: don't point this tool at taking — respect the
grounds you aim it at.

### Support

Questions or a custom lens for your use case? Open an issue on the Actor's Issues tab.

# Actor input Schema

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

SEO + marketing framing = on-page SEO signals plus persuasion-framing classification. Multimodal scrape = clean text (+ optional on-screen text transcription). Classify against a lens = tag pages against your own labels.

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

The URLs to process. Paste a list, upload a file, or link another Actor's output.

## `urls` (type: `array`):

Alternative to the field above: a plain list of URL strings.

## `multimodal` (type: `boolean`):

Renders each page and reads text from the rendered view — useful for JavaScript-heavy pages or text baked into images. Slower; leave off for standard HTML pages.

## `lensName` (type: `string`):

Which built-in lens to classify against (SEO and Classify modes).

## `lensJson` (type: `object`):

Bring your own labels: { "matching\_modes": { "<group>": { "<label>": { "lexical\_markers": \["trigger phrase", "another"] } } } }. Overrides the built-in lens.

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

Cap on how many pages this run processes.

## `timeoutSecs` (type: `integer`):

How long to wait for a single page before skipping it.

## `LENS_KEY` (type: `string`):

Only needed if you use an encrypted proprietary lens. Leave blank otherwise.

## Actor input object example

```json
{
  "mode": "seo",
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "multimodal": false,
  "lensName": "marketing_seo_v1",
  "lensJson": {
    "matching_modes": {
      "pricing_signals": {
        "free_tier": {
          "lexical_markers": [
            "free plan",
            "no credit card"
          ]
        },
        "enterprise": {
          "lexical_markers": [
            "contact sales",
            "custom pricing"
          ]
        }
      }
    }
  },
  "maxItems": 50,
  "timeoutSecs": 30
}
```

# 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 = {
    "mode": "seo",
    "startUrls": [
        {
            "url": "https://apify.com"
        }
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("equ1n0x/seo-marketing-framing-analyzer").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 = {
    "mode": "seo",
    "startUrls": [{ "url": "https://apify.com" }],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("equ1n0x/seo-marketing-framing-analyzer").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 '{
  "mode": "seo",
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "maxItems": 50
}' |
apify call equ1n0x/seo-marketing-framing-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=equ1n0x/seo-marketing-framing-analyzer",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEO & Marketing Framing Analyzer — No-AI, Evidence-Backed",
        "description": "Extract on-page SEO signals and classify marketing persuasion framing (urgency, scarcity, social proof, authority, benefit, risk-reversal) — deterministic, no LLM, every result backed by a verbatim evidence quote. Plus multimodal scraping and custom-lens classification.",
        "version": "0.1",
        "x-build-id": "AVdXl0a9JdOPoUqPj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/equ1n0x~seo-marketing-framing-analyzer/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-equ1n0x-seo-marketing-framing-analyzer",
                "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/equ1n0x~seo-marketing-framing-analyzer/runs": {
            "post": {
                "operationId": "runs-sync-equ1n0x-seo-marketing-framing-analyzer",
                "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/equ1n0x~seo-marketing-framing-analyzer/run-sync": {
            "post": {
                "operationId": "run-sync-equ1n0x-seo-marketing-framing-analyzer",
                "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": {
                    "mode": {
                        "title": "What do you want to do?",
                        "enum": [
                            "seo",
                            "scrape",
                            "code"
                        ],
                        "type": "string",
                        "description": "SEO + marketing framing = on-page SEO signals plus persuasion-framing classification. Multimodal scrape = clean text (+ optional on-screen text transcription). Classify against a lens = tag pages against your own labels.",
                        "default": "seo"
                    },
                    "startUrls": {
                        "title": "Pages to analyze",
                        "type": "array",
                        "description": "The URLs to process. Paste a list, upload a file, or link another Actor's output.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "urls": {
                        "title": "URLs (plain list)",
                        "type": "array",
                        "description": "Alternative to the field above: a plain list of URL strings.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "multimodal": {
                        "title": "Render pages and transcribe on-screen text",
                        "type": "boolean",
                        "description": "Renders each page and reads text from the rendered view — useful for JavaScript-heavy pages or text baked into images. Slower; leave off for standard HTML pages.",
                        "default": false
                    },
                    "lensName": {
                        "title": "Framing lens",
                        "enum": [
                            "marketing_seo_v1"
                        ],
                        "type": "string",
                        "description": "Which built-in lens to classify against (SEO and Classify modes).",
                        "default": "marketing_seo_v1"
                    },
                    "lensJson": {
                        "title": "Custom lens (Classify mode)",
                        "type": "object",
                        "description": "Bring your own labels: { \"matching_modes\": { \"<group>\": { \"<label>\": { \"lexical_markers\": [\"trigger phrase\", \"another\"] } } } }. Overrides the built-in lens."
                    },
                    "maxItems": {
                        "title": "Max pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Cap on how many pages this run processes.",
                        "default": 50
                    },
                    "timeoutSecs": {
                        "title": "Per-page timeout (seconds)",
                        "minimum": 5,
                        "type": "integer",
                        "description": "How long to wait for a single page before skipping it.",
                        "default": 30
                    },
                    "LENS_KEY": {
                        "title": "Lens decryption key (advanced)",
                        "type": "string",
                        "description": "Only needed if you use an encrypted proprietary lens. Leave blank otherwise."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
