# Creative Intelligence - AI Ad Creative Analysis (`whoareyouanas/creative-intelligence`) Actor

Analyze ad creatives from URLs or scraper datasets using the user's OpenAI, xAI, or Claude API key. Returns structured creative scoring, visual classifications, extracted text, hooks, and improvement suggestions.

- **URL**: https://apify.com/whoareyouanas/creative-intelligence.md
- **Developed by:** [Anas Nadeem](https://apify.com/whoareyouanas) (community)
- **Categories:** AI, E-commerce, Social media
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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.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

## AI Ad Creative Analysis & Scoring

Turn ad images, videos, carousels, CSV rows, or existing Apify ads scraper datasets into structured creative intelligence. This Actor uses your OpenAI, xAI/Grok, or Anthropic Claude API key to score creatives, extract visible text, classify visual patterns, identify hooks, and return actionable improvement suggestions.

It is designed as the analysis layer after you collect ads from tools such as Facebook Ads Library scrapers, Google Ads scrapers, TikTok/Instagram ad workflows, spreadsheet exports, or your own creative library.

### What you get

- Creative score, performance signal score, and combined weighted score
- Hook, likely target audience, CTA quality, and benefit clarity
- Visual tags for style, theme, tone, background, people, product, offer, and overlay text density
- OCR-style extracted text split into heading, sub-heading, and extras
- Metric-by-metric justifications for relevance, hook strength, creative quality, trust, psychology, CTA, and benefits
- Improvement suggestions written for marketers, media buyers, and creative teams
- A dataset row for every processed creative, including failure rows with an error message

### Common use cases

- Rank competitor ads scraped from Facebook Ads Library or Google Ads Transparency Center
- Audit paid social creatives before launching new campaigns
- Compare image, video, and carousel creative patterns across brands
- Extract hooks and visible ad text from creative assets
- Build creative testing dashboards from Apify datasets
- Turn spreadsheet creative reviews into repeatable AI scoring

### Input sources

You can use any one of these sources:

- `creatives`: simple JSON rows with copy, CTA, and asset URL fields
- `csvInput`: pasted CSV or tab-separated spreadsheet rows
- `sourceDatasetId`: an Apify dataset ID or name from a previous scraper run
- `ads`: advanced scraper-shaped JSON rows

Each creative needs at least one usable image or video URL. Multiple image URLs are treated as a carousel.

### Quick start

1. Choose `openai`, `xai`, or `anthropic`.
2. Paste the matching API key in `apiKey`. Apify stores this field as a secret.
3. Add creatives with JSON, CSV, a dataset ID, or advanced ad objects.
4. Keep `maxConcurrency` at `1` to `3` if you are unsure about provider rate limits.
5. Run the Actor and open the default dataset overview.

Simple JSON input:

```json
{
  "provider": "openai",
  "apiKey": "YOUR_OPENAI_API_KEY",
  "creatives": [
    {
      "id": "creative-1",
      "brand": "Example Brand",
      "body": "Turn ad creatives into measurable insights.",
      "cta": "Learn More",
      "assetUrl": "https://example.com/ad.jpg",
      "assetType": "image"
    }
  ]
}
````

CSV input:

```csv
id,brand,body,cta,assetUrls,assetType
creative-1,Brand,Primary ad text,Shop Now,https://example.com/ad.jpg,image
creative-2,Brand,Carousel copy,Learn More,https://example.com/slide-1.jpg;https://example.com/slide-2.jpg,carousel
```

Supported CSV headers include:

- `id`, `creativeId`, `libraryID`
- `brand`
- `body`, `primaryText`, `text`, `copy`
- `cta`, `ctaText`, `callToAction`
- `assetUrl`, `assetUrls`, `asset`, `assets`, `mediaUrl`, `mediaUrls`, `imageUrl`, `videoUrl`
- `assetType`, `format`, `type`
- `active`, `runTimeDays`, `runningTAT`, `multipleVersions`, `similarAdCount`, `totalPlatforms`, `platforms`

For multiple assets in one CSV cell, separate URLs with `;`, `|`, or new lines.

### Output

The default dataset contains one item per creative. Successful rows include:

- `analysis_status`
- `provider`, `model`, `model_used`
- `libraryID`, `brand`, `source_format`, `media_urls`
- `visual_style`, `theme`, `tone`, `background`, `overlay_text`
- `hook`, `target_audience`, `creative_insights`
- `product_display`, `human_display`, `human_face_display`, `offer_display`
- `extracted_text`
- `metrics`
- `ai_score`
- `performance_score`
- `total_weighted_score`
- `improvement_suggestions`
- `analyzed_at`

Failed rows are still saved with `analysis_status: "failed"` and an `error` field so downstream workflows can inspect what happened.

### Provider defaults

Leave `model` empty to use the default model for the selected provider:

- OpenAI: `gpt-5.4-mini`
- xAI / Grok: `grok-4.3`
- Anthropic Claude: `claude-sonnet-4-6`

Use `model` if you want a different provider-supported vision model.

### Video and image settings

- `analyzeVideos`: enables video download and frame extraction.
- `maxVideoFrames`: limits frames sent to the AI model.
- `videoFrameIntervalSeconds`: controls frame sampling frequency.
- `imageInputMode: "url"` passes public image URLs directly to the provider.
- `imageInputMode: "download"` downloads images and sends base64 data, which helps when a provider cannot fetch a public URL.
- `imageDetail`: use `low` for lower cost and `high` or `auto` when OCR/layout detail matters.

### Cost notes

This Actor is bring-your-own-key for AI providers. The provider API charges go to your OpenAI, xAI, or Anthropic account. Video analysis, high image detail, more frames, and higher concurrency can increase provider cost and runtime.

If this Actor is monetized on Apify Store, the Apify price is separate from your AI provider usage and is shown before you start a run.

### Limitations

- The Actor does not scrape ads by itself. Use it after you already have creative URLs or an Apify scraper dataset.
- Private, expired, or blocked media URLs may fail unless they are publicly fetchable.
- The performance score uses available metadata such as active status, runtime, variants, similar ad count, and platform count. It is not a replacement for true spend, CPA, CTR, or ROAS data.
- AI outputs can vary between providers and model versions. Use the same provider/model when comparing large batches.

### Local development

```bash
npm install
npm test
npm run build
```

`npm test` runs TypeScript checks and behavior tests for input normalization and provider defaults.

# Actor input Schema

## `provider` (type: `string`):

The AI provider to use for creative analysis.

## `apiKey` (type: `string`):

Your API key for the selected provider. This field is stored encrypted by Apify and is only decrypted inside the actor run.

## `model` (type: `string`):

Optional model name. Leave empty to use a provider-specific vision-capable default.

## `creatives` (type: `array`):

Simple JSON rows for anyone who has ad copy and creative assets. Each row needs at least an assetUrl, assetUrls, imageUrl, videoUrl, or mediaUrl. Common fields: id, brand, body, cta, assetUrl, assetType.

## `csvInput` (type: `string`):

Paste CSV from a spreadsheet. Supported headers include id, brand, body, cta, assetUrl, assetUrls, mediaUrl, imageUrl, videoUrl, assetType, format, active, runTimeDays, multipleVersions, similarAdCount, totalPlatforms, platforms. Use semicolon, pipe, or new lines inside assetUrls for multiple assets.

## `sourceDatasetId` (type: `string`):

Optional Apify dataset ID/name from a previous ads scraper run. If set, the actor reads ads from this dataset.

## `ads` (type: `array`):

Backward-compatible ad objects from scraper output. Each item can contain libraryID, brand, body, ctaText, format, images, videos, active, runTimeDays, multipleVersions, similarAdCount, and totalPlatforms.

## `maxAds` (type: `integer`):

Maximum number of creatives to analyze from all source inputs. Set to 0 for all available creatives.

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

Number of ads to analyze in parallel. Provider rate limits and image/video size affect reliability; 1-3 is recommended.

## `analyzeVideos` (type: `boolean`):

If enabled, video ads are downloaded and sampled into frames for multimodal analysis. Disable to skip video ads.

## `maxVideoFrames` (type: `integer`):

Maximum frames extracted from each video. More frames improve context but increase cost and latency.

## `videoFrameIntervalSeconds` (type: `integer`):

Sample one frame every N seconds until max video frames is reached.

## `imageInputMode` (type: `string`):

Use URL mode for public images. Use download mode if the provider cannot fetch image URLs directly.

## `imageDetail` (type: `string`):

Vision detail level. Higher detail can improve OCR and layout reasoning but usually costs more.

## `includeRawResponse` (type: `boolean`):

If enabled, saves the parsed raw provider response in each dataset item for debugging. Leave off for cleaner output.

## Actor input object example

```json
{
  "provider": "openai",
  "creatives": [
    {
      "id": "creative-1",
      "brand": "Example Brand",
      "body": "Turn your ad creatives into measurable insights.",
      "cta": "Learn More",
      "assetUrl": "https://images.unsplash.com/photo-1556742049-0cfed4f6a45d",
      "assetType": "image"
    }
  ],
  "csvInput": "id,brand,body,cta,assetUrl,assetType\ncreative-1,Example Brand,Turn your ad creatives into measurable insights.,Learn More,https://images.unsplash.com/photo-1556742049-0cfed4f6a45d,image",
  "ads": [
    {
      "libraryID": "example-ad-1",
      "brand": "Example Brand",
      "body": "Turn your ad creatives into measurable insights.",
      "ctaText": "Learn More",
      "format": "image",
      "images": [
        {
          "url": "https://images.unsplash.com/photo-1556742049-0cfed4f6a45d"
        }
      ],
      "active": true,
      "runTimeDays": 21,
      "multipleVersions": false,
      "similarAdCount": 1,
      "totalPlatforms": 1
    }
  ],
  "maxAds": 100,
  "maxConcurrency": 2,
  "analyzeVideos": true,
  "maxVideoFrames": 8,
  "videoFrameIntervalSeconds": 2,
  "imageInputMode": "url",
  "imageDetail": "low",
  "includeRawResponse": false
}
```

# Actor output Schema

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

Table view of analyzed ads with core scoring and classifications.

## `allResults` (type: `string`):

Full dataset items with metrics, extracted text, and suggestions.

# 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 = {
    "creatives": [
        {
            "id": "creative-1",
            "brand": "Example Brand",
            "body": "Turn your ad creatives into measurable insights.",
            "cta": "Learn More",
            "assetUrl": "https://images.unsplash.com/photo-1556742049-0cfed4f6a45d",
            "assetType": "image"
        }
    ],
    "csvInput": `id,brand,body,cta,assetUrl,assetType
creative-1,Example Brand,Turn your ad creatives into measurable insights.,Learn More,https://images.unsplash.com/photo-1556742049-0cfed4f6a45d,image`,
    "ads": [
        {
            "libraryID": "example-ad-1",
            "brand": "Example Brand",
            "body": "Turn your ad creatives into measurable insights.",
            "ctaText": "Learn More",
            "format": "image",
            "images": [
                {
                    "url": "https://images.unsplash.com/photo-1556742049-0cfed4f6a45d"
                }
            ],
            "active": true,
            "runTimeDays": 21,
            "multipleVersions": false,
            "similarAdCount": 1,
            "totalPlatforms": 1
        }
    ],
    "maxAds": 100,
    "maxConcurrency": 2,
    "maxVideoFrames": 8,
    "videoFrameIntervalSeconds": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("whoareyouanas/creative-intelligence").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 = {
    "creatives": [{
            "id": "creative-1",
            "brand": "Example Brand",
            "body": "Turn your ad creatives into measurable insights.",
            "cta": "Learn More",
            "assetUrl": "https://images.unsplash.com/photo-1556742049-0cfed4f6a45d",
            "assetType": "image",
        }],
    "csvInput": """id,brand,body,cta,assetUrl,assetType
creative-1,Example Brand,Turn your ad creatives into measurable insights.,Learn More,https://images.unsplash.com/photo-1556742049-0cfed4f6a45d,image""",
    "ads": [{
            "libraryID": "example-ad-1",
            "brand": "Example Brand",
            "body": "Turn your ad creatives into measurable insights.",
            "ctaText": "Learn More",
            "format": "image",
            "images": [{ "url": "https://images.unsplash.com/photo-1556742049-0cfed4f6a45d" }],
            "active": True,
            "runTimeDays": 21,
            "multipleVersions": False,
            "similarAdCount": 1,
            "totalPlatforms": 1,
        }],
    "maxAds": 100,
    "maxConcurrency": 2,
    "maxVideoFrames": 8,
    "videoFrameIntervalSeconds": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("whoareyouanas/creative-intelligence").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 '{
  "creatives": [
    {
      "id": "creative-1",
      "brand": "Example Brand",
      "body": "Turn your ad creatives into measurable insights.",
      "cta": "Learn More",
      "assetUrl": "https://images.unsplash.com/photo-1556742049-0cfed4f6a45d",
      "assetType": "image"
    }
  ],
  "csvInput": "id,brand,body,cta,assetUrl,assetType\\ncreative-1,Example Brand,Turn your ad creatives into measurable insights.,Learn More,https://images.unsplash.com/photo-1556742049-0cfed4f6a45d,image",
  "ads": [
    {
      "libraryID": "example-ad-1",
      "brand": "Example Brand",
      "body": "Turn your ad creatives into measurable insights.",
      "ctaText": "Learn More",
      "format": "image",
      "images": [
        {
          "url": "https://images.unsplash.com/photo-1556742049-0cfed4f6a45d"
        }
      ],
      "active": true,
      "runTimeDays": 21,
      "multipleVersions": false,
      "similarAdCount": 1,
      "totalPlatforms": 1
    }
  ],
  "maxAds": 100,
  "maxConcurrency": 2,
  "maxVideoFrames": 8,
  "videoFrameIntervalSeconds": 2
}' |
apify call whoareyouanas/creative-intelligence --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Creative Intelligence - AI Ad Creative Analysis",
        "description": "Analyze ad creatives from URLs or scraper datasets using the user's OpenAI, xAI, or Claude API key. Returns structured creative scoring, visual classifications, extracted text, hooks, and improvement suggestions.",
        "version": "0.0",
        "x-build-id": "Qcm9Na9OAK1uiR6On"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/whoareyouanas~creative-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-whoareyouanas-creative-intelligence",
                "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/whoareyouanas~creative-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-whoareyouanas-creative-intelligence",
                "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/whoareyouanas~creative-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-whoareyouanas-creative-intelligence",
                "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": [
                    "provider",
                    "apiKey"
                ],
                "properties": {
                    "provider": {
                        "title": "AI Provider",
                        "enum": [
                            "openai",
                            "xai",
                            "anthropic"
                        ],
                        "type": "string",
                        "description": "The AI provider to use for creative analysis.",
                        "default": "openai"
                    },
                    "apiKey": {
                        "title": "Provider API Key",
                        "type": "string",
                        "description": "Your API key for the selected provider. This field is stored encrypted by Apify and is only decrypted inside the actor run."
                    },
                    "model": {
                        "title": "Model Override",
                        "type": "string",
                        "description": "Optional model name. Leave empty to use a provider-specific vision-capable default."
                    },
                    "creatives": {
                        "title": "Creative Rows (JSON)",
                        "type": "array",
                        "description": "Simple JSON rows for anyone who has ad copy and creative assets. Each row needs at least an assetUrl, assetUrls, imageUrl, videoUrl, or mediaUrl. Common fields: id, brand, body, cta, assetUrl, assetType.",
                        "default": []
                    },
                    "csvInput": {
                        "title": "CSV Paste",
                        "type": "string",
                        "description": "Paste CSV from a spreadsheet. Supported headers include id, brand, body, cta, assetUrl, assetUrls, mediaUrl, imageUrl, videoUrl, assetType, format, active, runTimeDays, multipleVersions, similarAdCount, totalPlatforms, platforms. Use semicolon, pipe, or new lines inside assetUrls for multiple assets."
                    },
                    "sourceDatasetId": {
                        "title": "Source Dataset ID or Name",
                        "type": "string",
                        "description": "Optional Apify dataset ID/name from a previous ads scraper run. If set, the actor reads ads from this dataset."
                    },
                    "ads": {
                        "title": "Advanced Inline Ads (Scraper Shape)",
                        "type": "array",
                        "description": "Backward-compatible ad objects from scraper output. Each item can contain libraryID, brand, body, ctaText, format, images, videos, active, runTimeDays, multipleVersions, similarAdCount, and totalPlatforms.",
                        "default": []
                    },
                    "maxAds": {
                        "title": "Max Ads",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of creatives to analyze from all source inputs. Set to 0 for all available creatives.",
                        "default": 100
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of ads to analyze in parallel. Provider rate limits and image/video size affect reliability; 1-3 is recommended.",
                        "default": 2
                    },
                    "analyzeVideos": {
                        "title": "Analyze Videos",
                        "type": "boolean",
                        "description": "If enabled, video ads are downloaded and sampled into frames for multimodal analysis. Disable to skip video ads.",
                        "default": true
                    },
                    "maxVideoFrames": {
                        "title": "Max Video Frames",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum frames extracted from each video. More frames improve context but increase cost and latency.",
                        "default": 8
                    },
                    "videoFrameIntervalSeconds": {
                        "title": "Video Frame Interval Seconds",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Sample one frame every N seconds until max video frames is reached.",
                        "default": 2
                    },
                    "imageInputMode": {
                        "title": "Image Input Mode",
                        "enum": [
                            "url",
                            "download"
                        ],
                        "type": "string",
                        "description": "Use URL mode for public images. Use download mode if the provider cannot fetch image URLs directly.",
                        "default": "url"
                    },
                    "imageDetail": {
                        "title": "Image Detail",
                        "enum": [
                            "low",
                            "high",
                            "auto"
                        ],
                        "type": "string",
                        "description": "Vision detail level. Higher detail can improve OCR and layout reasoning but usually costs more.",
                        "default": "low"
                    },
                    "includeRawResponse": {
                        "title": "Include Raw Provider Response",
                        "type": "boolean",
                        "description": "If enabled, saves the parsed raw provider response in each dataset item for debugging. Leave off for cleaner output.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
