# Instagram Bot / Fake-Follower Heuristic Analyzer (`coregent/instagram-bot-fake-follower-heuristic-analyzer`) Actor

Analyze public Instagram profiles for suspicious audience-quality signals using transparent heuristics. Export flat CSV-friendly bot-risk scores, confidence fields, and reason tags for influencer vetting, creator screening, and manual review.

- **URL**: https://apify.com/coregent/instagram-bot-fake-follower-heuristic-analyzer.md
- **Developed by:** [Delowar Munna](https://apify.com/coregent) (community)
- **Categories:** Social media, Lead generation, Other
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.60 / 1,000 profile analysis results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Instagram Bot / Fake-Follower Heuristic Analyzer

![Instagram Bot / Fake-Follower Heuristic Analyzer — Apify Actor banner](https://raw.githubusercontent.com/coregentdevspace/instagram-bot-fake-follower-heuristic-analyzer-assets/main/thumbnail-instagram-bot-fake-follower-heuristic-analyzer.jpg)

Analyze public Instagram profiles for suspicious audience-quality signals using transparent, documented heuristics. Returns flat, spreadsheet-ready rows with bot-risk-style scores, confidence, signal flags, and short reason fields so teams can prioritize manual review.

> **Positioning:** This is an **authenticity audit aid**, not a definitive fraud detector. Every score is heuristic and should be combined with manual review before any partnership decision.

### What does this actor do?

For each public Instagram username (or profile URL) you provide, the actor:

1. Fetches the profile's public metrics (followers, following, posts, bio, category, verification, business signals).
2. Optionally samples a bounded set of recent visible posts/reels and reads their like / comment / view counts.
3. Computes derived ratios (engagement rate approximation, comments-to-likes, followers-to-following, etc.).
4. Evaluates a set of **named, auditable heuristic flags** (low engagement for tier, sparse content, high following, low recency, inconsistent performance, suspicious growth proxy, profile completeness, business credibility offset).
5. Produces a conservative **bot-risk score (0–100)**, a **bucket** (`low` / `moderate` / `elevated` / `high` / `unknown`), a **confidence score**, a **manual review priority**, and a short **reason** field — one row per analyzed account.

The output is intentionally flat, CSV-friendly, and designed for analyst review — not for unilateral decisions.

### Use cases

- **Influencer vetting** — pre-screen creators before gifting / sponsorship deals.
- **Agency pre-screening** — quickly flag profiles needing manual review across a creator shortlist.
- **Competitor authenticity benchmarking** — compare suspicious-signal patterns across competitor accounts.
- **Marketplace and CRM triage** — produce a CSV of candidate accounts with risk-style fields.
- **Research** — structured public-signal exports for authenticity-related studies.

### What it is — and isn't

It **is** a public-signal analyzer, a risk-scoring helper, an authenticity audit support tool.

It is **not** a verified fraud detector, a replacement for manual review, an official Instagram trust signal, a private-data analyzer, or a tool for follower-by-follower forensics.

### Sample inputs

#### Example 1 — Influencer vetting batch (defaults)

Screen a shortlist of public creator/brand accounts using the default analysis settings.

```json
{
  "usernames": ["instagram", "therock", "nike"],
  "includeRecentPostsSample": true,
  "recentPostsLimit": 9,
  "includeDerivedSignals": true,
  "includeProfileContext": true,
  "minVisiblePostsRequired": 3
}
````

#### Example 2 — Mixed usernames + URLs with tighter sampling

Combine raw usernames and full profile URLs in a single run, with a smaller recent-posts sample to keep runtime and rate-limit pressure low.

```json
{
  "usernames": ["google"],
  "profileUrls": [
    "https://www.instagram.com/tesla/",
    "https://www.instagram.com/natgeo/"
  ],
  "includeRecentPostsSample": true,
  "recentPostsLimit": 6,
  "includeDerivedSignals": true,
  "includeProfileContext": true,
  "minVisiblePostsRequired": 3,
  "maxConcurrency": 1,
  "requestTimeoutSecs": 180
}
```

### Input reference

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `usernames` | string\[] | `[]` | Public Instagram usernames (without `@`). |
| `profileUrls` | string\[] | `[]` | Public Instagram profile URLs. Post / reel URLs are rejected. |
| `includeRecentPostsSample` | boolean | `true` | Sample a small set of recent posts/reels. Disable to keep runs minimal — engagement-based flags will not fire. |
| `recentPostsLimit` | integer | `9` | Max recent posts analyzed per profile (0–24). |
| `includeDerivedSignals` | boolean | `true` | Compute ratio fields. Score still emitted when disabled, but ratio columns will be `null`. |
| `includeProfileContext` | boolean | `true` | Include `biography`, `externalUrl`, `accountType`, `categoryName` in the row. |
| `minVisiblePostsRequired` | integer | `3` | Threshold used by the confidence score. Profiles with fewer visible posts still produce a row, with lower confidence. |
| `requestTimeoutSecs` | integer | `180` | Timeout per profile. |
| `maxConcurrency` | integer | `1` | Concurrent profile workers. Keep low to reduce rate-limit pressure. |
| `debugMode` | boolean | `false` | Verbose logging. |

You can mix `usernames` and `profileUrls` in the same run — duplicates are deduped automatically.

### Output

One JSON object per analyzed profile is pushed to the default dataset. The dataset has a single view named **Profile Audit Rows**.

#### Profile Audit Rows — table view

![Profile Audit Rows table view — one row per analyzed Instagram account, with risk bucket, confidence, flags, and reason fields](https://raw.githubusercontent.com/coregentdevspace/instagram-bot-fake-follower-heuristic-analyzer-assets/main/instagram-bot-fake-follower-heuristic-analyzer-output-profile-audit-rows-table-view.png)

#### Row groups

- **Identity**: `inputUsername`, `profileUsername`, `profileUrl`, `instagramUserId`, `fullName`, `isVerified`, `isPrivate`, `accountType`, `categoryName`
- **Public metrics**: `followersCount`, `followingCount`, `postsCount`, `followersToFollowingRatio`, `followersBucket`, `biography`, `externalUrl`, `hasExternalUrl`
- **Recent content sample**: `recentPostsAnalyzed`, `avgLikesRecent`, `avgCommentsRecent`, `avgViewsRecent`, `medianLikesRecent`, `medianCommentsRecent`, `maxLikesRecent`, `maxCommentsRecent`, `latestPostTimestamp`, `daysSinceLatestPost`, `recentActivitySignal`
- **Derived ratios**: `engagementRateApprox`, `commentsToFollowersRatio`, `likesToFollowersRatio`, `viewsToFollowersRatio`, `commentsToLikesRatio`, `engagementVarianceHint`
- **Heuristic flags**: `lowEngagementFlag`, `highFollowerLowEngagementFlag`, `highFollowingFlag`, `sparseContentFlag`, `lowRecencyFlag`, `inconsistentPerformanceFlag`, `suspiciousGrowthProxyFlag`, `profileCompletenessFlag`, `businessCredibilitySignal`
- **Scores**: `botRiskScore`, `botRiskBucket`, `confidenceScore`, `confidenceBucket`, `signalCount`, `scoreVersion`
- **Explanation**: `botRiskReason`, `topFlags` (pipe-delimited), `manualReviewPriority`
- **Utility**: `scrapedAt`, `runId`, `sourceActorVersion`

#### Example row — full record (Profile Audit Rows view)

A real row produced by the actor for `@instagram`. Every column listed in the row groups above is included, with `null` where Instagram does not expose a value publicly.

```json
{
  "inputUsername": "instagram",
  "profileUsername": "instagram",
  "profileUrl": "https://www.instagram.com/instagram/",
  "instagramUserId": "25025320",
  "fullName": "Instagram",
  "isVerified": true,
  "isPrivate": false,
  "accountType": "creator",
  "categoryName": null,
  "followersCount": 701007049,
  "followingCount": 175,
  "postsCount": 8425,
  "followersToFollowingRatio": 4005754.5657,
  "followersBucket": "mega",
  "biography": "Discover what's new on Instagram 🔎✨",
  "externalUrl": "http://help.instagram.com/",
  "hasExternalUrl": true,
  "recentPostsAnalyzed": 9,
  "avgLikesRecent": 467919,
  "avgCommentsRecent": 8293,
  "avgViewsRecent": 12428912,
  "medianLikesRecent": 280584,
  "medianCommentsRecent": 6843,
  "maxLikesRecent": 1032374,
  "maxCommentsRecent": 17160,
  "latestPostTimestamp": "2026-05-01T18:58:25.000Z",
  "daysSinceLatestPost": 2,
  "recentActivitySignal": "active",
  "engagementRateApprox": 0.000679,
  "commentsToFollowersRatio": 0.000012,
  "likesToFollowersRatio": 0.000667,
  "viewsToFollowersRatio": 0.01773,
  "commentsToLikesRatio": 0.0177,
  "engagementVarianceHint": "low",
  "lowEngagementFlag": true,
  "highFollowerLowEngagementFlag": true,
  "highFollowingFlag": false,
  "sparseContentFlag": false,
  "lowRecencyFlag": false,
  "inconsistentPerformanceFlag": false,
  "suspiciousGrowthProxyFlag": false,
  "profileCompletenessFlag": false,
  "businessCredibilitySignal": true,
  "botRiskScore": 25,
  "botRiskBucket": "moderate",
  "confidenceScore": 100,
  "confidenceBucket": "high",
  "signalCount": 2,
  "scoreVersion": "1.0.0",
  "botRiskReason": "Engagement rate is below typical baselines for this follower tier. High follower count with consistently weak visible engagement across recent posts. Some credibility signals are present, which partially offsets the risk. Review manually before partnership.",
  "topFlags": "lowEngagementFlag|highFollowerLowEngagementFlag",
  "manualReviewPriority": "medium",
  "scrapedAt": "2026-05-04T06:03:17.942Z",
  "runId": "cqJ7sg359cbIn9KvH",
  "sourceActorVersion": "1.0"
}
```

### Heuristic flags

| Flag | Trigger (default thresholds) |
|------|------------------------------|
| `lowEngagementFlag` | Engagement rate `< 0.5%` and followers `≥ 1k` |
| `highFollowerLowEngagementFlag` | Engagement rate `< 0.3%` and followers `≥ 50k` |
| `highFollowingFlag` | Following `> 5000` and followers/following `< 1` |
| `sparseContentFlag` | Posts `< 5` and followers `≥ 1k` |
| `lowRecencyFlag` | No visible post in the last 90 days |
| `inconsistentPerformanceFlag` | High variance (CV ≥ 1.5) across recent like counts |
| `suspiciousGrowthProxyFlag` | Followers `≥ 10k`, posts `< 20`, AND `lowEngagementFlag` is true |
| `profileCompletenessFlag` | No bio, no external link, no category |
| `businessCredibilitySignal` | Business / creator account, OR has both external URL and category (this **reduces** risk) |

All thresholds live in a single `THRESHOLDS` constant in `src/instagramExtractor.js` so they can be audited and tuned without searching the codebase. Bumping the heuristic logic must also bump `SCORE_VERSION`.

### Score buckets

| `botRiskBucket` | Range |
|------------------|-------|
| `low` | 0–24 |
| `moderate` | 25–49 |
| `elevated` | 50–69 |
| `high` | ≥ 70 |
| `unknown` | Private / unreachable / no public data |

Confidence ranges: `low` (`< 40`), `moderate` (`40–69`), `high` (`≥ 70`).

A high-risk score on a low-confidence row is **not** the same as a high-risk score on a high-confidence row. Always read both columns together.

### Graceful degradation

- Private accounts emit a row with `isPrivate: true`, `botRiskBucket: "unknown"`, and confidence near 0.
- Unreachable / non-existent usernames emit a row with `botRiskBucket: "unknown"` and a clear `botRiskReason` — they do not stop the crawler.
- When the recent-posts feed is unavailable, ratio fields are `null` and `engagementVarianceHint` is `null`. The score is still computed using the available signals, but flags that depend on engagement won't fire.

### Pricing

Pay-per-event:

- `profile-analysis-result` — charged once per analyzed profile row.

The actor respects user spending limits — when the configured limit is reached, the run stops gracefully without further charges.

### Local development

```bash
cd actor
npm install
npm start      ## uses INPUT.json
npm run dev    ## local storage only
```

The default `INPUT.json` analyzes a single well-known public profile so first runs are quick.

### Limitations

- All signals are **heuristic** and based only on **public** profile data. The actor does not, and cannot, prove fake followers.
- Instagram's public surface evolves; some metric fields can be missing for some accounts. The actor handles this by lowering the confidence score rather than failing.
- Aggressive sampling will trigger Instagram rate limits — keep `recentPostsLimit` and `maxConcurrency` modest.

# Actor input Schema

## `usernames` (type: `array`):

Public Instagram usernames to analyze (without @). You can mix this with profileUrls. Examples: natgeo, nasa.

## `profileUrls` (type: `array`):

Public Instagram profile URLs to analyze. Examples: https://www.instagram.com/natgeo/. Post and reel URLs are rejected.

## `includeRecentPostsSample` (type: `boolean`):

Sample a small set of recent visible posts/reels to compute engagement and recency signals. Disable to keep runs minimal — confidence will drop and engagement-based flags will not fire.

## `recentPostsLimit` (type: `integer`):

Maximum number of recent posts/reels analyzed per profile. Bounded to keep cost and runtime predictable.

## `includeDerivedSignals` (type: `boolean`):

Compute derived ratio fields (engagement rate, comments-to-likes, followers-to-following, etc.). Heuristic flags and the bot-risk score are still emitted when this is off, but ratio fields will be null.

## `includeProfileContext` (type: `boolean`):

Include the public profile context fields (biography, external URL, account type, category) in the output row.

## `minVisiblePostsRequired` (type: `integer`):

Threshold used for the confidence score. Profiles with fewer visible recent posts than this still produce a row, but with lower confidence.

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

Maximum time in seconds for processing each profile.

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

Maximum number of profiles processed concurrently. Keep low to reduce rate-limit pressure.

## `debugMode` (type: `boolean`):

Enable verbose logging for debugging.

## Actor input object example

```json
{
  "usernames": [
    "natgeo"
  ],
  "profileUrls": [],
  "includeRecentPostsSample": true,
  "recentPostsLimit": 9,
  "includeDerivedSignals": true,
  "includeProfileContext": true,
  "minVisiblePostsRequired": 3,
  "requestTimeoutSecs": 180,
  "maxConcurrency": 1,
  "debugMode": false
}
```

# Actor output Schema

## `profiles` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("coregent/instagram-bot-fake-follower-heuristic-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("coregent/instagram-bot-fake-follower-heuristic-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 '{}' |
apify call coregent/instagram-bot-fake-follower-heuristic-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=coregent/instagram-bot-fake-follower-heuristic-analyzer",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Bot / Fake-Follower Heuristic Analyzer",
        "description": "Analyze public Instagram profiles for suspicious audience-quality signals using transparent heuristics. Export flat CSV-friendly bot-risk scores, confidence fields, and reason tags for influencer vetting, creator screening, and manual review.",
        "version": "1.0",
        "x-build-id": "XZgTRqM8Ha7f3hrAR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/coregent~instagram-bot-fake-follower-heuristic-analyzer/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-coregent-instagram-bot-fake-follower-heuristic-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/coregent~instagram-bot-fake-follower-heuristic-analyzer/runs": {
            "post": {
                "operationId": "runs-sync-coregent-instagram-bot-fake-follower-heuristic-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/coregent~instagram-bot-fake-follower-heuristic-analyzer/run-sync": {
            "post": {
                "operationId": "run-sync-coregent-instagram-bot-fake-follower-heuristic-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": {
                    "usernames": {
                        "title": "Instagram Usernames",
                        "type": "array",
                        "description": "Public Instagram usernames to analyze (without @). You can mix this with profileUrls. Examples: natgeo, nasa.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "natgeo"
                        ]
                    },
                    "profileUrls": {
                        "title": "Instagram Profile URLs",
                        "type": "array",
                        "description": "Public Instagram profile URLs to analyze. Examples: https://www.instagram.com/natgeo/. Post and reel URLs are rejected.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "includeRecentPostsSample": {
                        "title": "Include Recent Posts Sample",
                        "type": "boolean",
                        "description": "Sample a small set of recent visible posts/reels to compute engagement and recency signals. Disable to keep runs minimal — confidence will drop and engagement-based flags will not fire.",
                        "default": true
                    },
                    "recentPostsLimit": {
                        "title": "Recent Posts Limit",
                        "minimum": 0,
                        "maximum": 24,
                        "type": "integer",
                        "description": "Maximum number of recent posts/reels analyzed per profile. Bounded to keep cost and runtime predictable.",
                        "default": 9
                    },
                    "includeDerivedSignals": {
                        "title": "Include Derived Signals",
                        "type": "boolean",
                        "description": "Compute derived ratio fields (engagement rate, comments-to-likes, followers-to-following, etc.). Heuristic flags and the bot-risk score are still emitted when this is off, but ratio fields will be null.",
                        "default": true
                    },
                    "includeProfileContext": {
                        "title": "Include Profile Context",
                        "type": "boolean",
                        "description": "Include the public profile context fields (biography, external URL, account type, category) in the output row.",
                        "default": true
                    },
                    "minVisiblePostsRequired": {
                        "title": "Minimum Visible Posts For Confident Score",
                        "minimum": 0,
                        "maximum": 24,
                        "type": "integer",
                        "description": "Threshold used for the confidence score. Profiles with fewer visible recent posts than this still produce a row, but with lower confidence.",
                        "default": 3
                    },
                    "requestTimeoutSecs": {
                        "title": "Request Timeout (seconds)",
                        "minimum": 30,
                        "maximum": 600,
                        "type": "integer",
                        "description": "Maximum time in seconds for processing each profile.",
                        "default": 180
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Maximum number of profiles processed concurrently. Keep low to reduce rate-limit pressure.",
                        "default": 1
                    },
                    "debugMode": {
                        "title": "Debug Mode",
                        "type": "boolean",
                        "description": "Enable verbose logging for debugging.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
