# Instagram Reel Hooks & Competitor Analyzer (`coregent/instagram-reel-hooks-competitor-analyzer`) Actor

Analyze Instagram Reels from competitor accounts. Extract hooks, captions, hashtags, audio, posting cadence, and engagement metrics in flat CSV-friendly output for benchmarking, content research, and creative strategy.

- **URL**: https://apify.com/coregent/instagram-reel-hooks-competitor-analyzer.md
- **Developed by:** [Delowar Munna](https://apify.com/coregent) (community)
- **Categories:** Social media, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 reel 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 Reel Hooks & Competitor Analyzer

![Instagram Reel Hooks & Competitor Analyzer](https://raw.githubusercontent.com/coregentdevspace/instagram-reel-hooks-competitor-analyzer-assets/main/thumbnail-instagram-reel-hooks-competitor-analyzer.jpg)

Analyze Instagram Reels from competitor accounts. Extract hooks, captions, hashtags, audio, posting cadence, and engagement metrics in flat CSV-friendly output for benchmarking, content research, and creative strategy.

### What this actor does

**Instagram Reel Hooks & Competitor Analyzer** turns public Reels from any public Instagram profile (or direct Reel URLs) into a structured competitive-intelligence dataset. It is **not** a generic Reel downloader. The focus is on **analysis-ready output**:

- opening hook extraction + rule-based hook-style classification
- CTA type detection (`link_in_bio`, `dm`, `save`, `follow`, `share`, `buy`, …)
- hashtag / mention / audio extraction
- posting cadence (weekday, hour, days since published)
- engagement ratios and **account-level benchmarks** (views vs the profile's sample average, performance bucket)

Output is one flat row per Reel — ideal for CSV, Google Sheets, BI tools, or as clean input for downstream LLM summarization.

### How it works

1. **Input** — provide public profile URLs, bare usernames, or direct Reel URLs.
2. **Profile fetch** — for each profile, call Instagram's public `web_profile_info` endpoint and the Reels tab endpoint to collect up to `maxReelsPerProfile` recent Reels.
3. **Direct Reel fetch** — for each Reel URL, resolve the shortcode and fetch `/api/v1/media/{id}/info/`.
4. **Normalize** — extract a stable set of fields from whatever shape Instagram returned.
5. **Derive** — compute hook text, hook style, CTA type, hashtags/mentions, cadence, ratios, and sample benchmarks.
6. **Export** — push one flat row per Reel to the dataset.

### Inputs

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | `string[]` | required | Profile URLs, bare usernames, or Reel URLs (mix freely) |
| `maxReelsPerProfile` | int | `20` | Cap Reels per profile input |
| `dateFrom` | ISO date | — | Only include Reels published on/after this date |
| `dateTo` | ISO date | — | Only include Reels published on/before this date |
| `skipPinnedReels` | bool | `true` | Skip pinned Reels (they distort benchmarks) |
| `includeProfileContext` | bool | `true` | Emit `profile*` fields on every row |
| `includeDerivedFields` | bool | `true` | Emit `hookStyle`, `ctaType`, ratios, benchmarks |
| `includeHashtagsArray` | bool | `true` | Emit `hashtags` as array |
| `includeMentionsArray` | bool | `true` | Emit `mentions` as array |
| `includeAudioFields` | bool | `true` | Emit `audioTitle`, `audioArtist`, `audioType`, `audioOriginal` |
| `includeVideoUrl` | bool | `false` | Emit best-effort signed video URL |
| `requestTimeoutSecs` | int | `300` | Per-request timeout |
| `maxConcurrency` | int | `1` | Concurrent inputs |
| `debugMode` | bool | `false` | Verbose logging |

### Sample inputs

#### Example 1 — Multi-account competitor analysis

Compare Reel output across three competitor accounts, newest 30 each, skipping pinned Reels so benchmarks aren't distorted.

```json
{
  "startUrls": [
    "https://www.instagram.com/nike/",
    "https://www.instagram.com/adidas/",
    "lululemon"
  ],
  "maxReelsPerProfile": 30,
  "skipPinnedReels": true,
  "includeProfileContext": true,
  "includeDerivedFields": true
}
````

#### Example 2 — Single Reel deep dive

Analyze one specific Reel with full profile context, audio metadata, and the optional signed video URL.

```json
{
  "startUrls": [
    "https://www.instagram.com/reel/DWicOUHDvp5/"
  ],
  "includeProfileContext": true,
  "includeAudioFields": true,
  "includeVideoUrl": true
}
```

#### Example 3 — Date-windowed profile scan

Pull only Reels published in Q1 2026 from a single brand profile, trim output to scalar fields only (no arrays) for pure CSV workflows.

```json
{
  "startUrls": [
    "https://www.instagram.com/teslaaunz/"
  ],
  "maxReelsPerProfile": 50,
  "dateFrom": "2026-01-01",
  "dateTo": "2026-03-31",
  "skipPinnedReels": true,
  "includeHashtagsArray": false,
  "includeMentionsArray": false,
  "includeAudioFields": true
}
```

### Output

The run produces a single dataset view — **Reel Rows** — with one flat, CSV-friendly row per Reel.

![Reel Rows table view](https://raw.githubusercontent.com/coregentdevspace/instagram-reel-hooks-competitor-analyzer-assets/main/instagram-reel-hooks-competitor-analyzer-output-all-fields-table-view.png)

#### Sample record (one row per Reel)

Real output from analyzing `https://www.instagram.com/teslaaunz/`:

```json
{
  "inputUrl": "https://www.instagram.com/teslaaunz/?hl=en",
  "sourceType": "profile",
  "profileUsername": "teslaaunz",
  "profileFullName": "Tesla Australia and New Zealand",
  "profileUrl": "https://www.instagram.com/teslaaunz/",
  "profileId": "59601257554",
  "profileIsVerified": false,
  "profileCategoryName": null,
  "profileBiography": "We design and build products that people love.",
  "profileExternalUrl": "https://www.tesla.com/en_au",
  "profileFollowersCount": 11350,
  "profileFollowingCount": 6,
  "profilePostsCount": 151,
  "reelId": "3864775559205550713",
  "reelShortcode": "DWicOUHDvp5",
  "reelUrl": "https://www.instagram.com/reel/DWicOUHDvp5/",
  "reelType": "reel",
  "isPinned": false,
  "publishedAt": "2026-03-31T06:06:55.000Z",
  "publishedDate": "2026-03-31",
  "publishedTimestamp": 1774937215,
  "caption": "Reliable back up power and up to AUD $1,500/ NZD $1,700 back on your install. T&Cs apply",
  "hookText": "Reliable back up power and up to AUD $1,500/ NZD $1,700 back on your install. T&Cs apply",
  "hookLine1": "Reliable back up power and up to AUD $1,500/ NZD $1,700 back on your install. T&Cs apply",
  "hookLengthChars": 88,
  "hookLengthWords": 17,
  "hookStyle": "other",
  "ctaType": "none_detected",
  "hashtags": [],
  "mentions": [],
  "taggedUsers": [],
  "hashtagCount": 0,
  "mentionCount": 0,
  "languageHint": "en",
  "audioTitle": null,
  "audioArtist": null,
  "audioType": null,
  "audioOriginal": null,
  "durationSeconds": null,
  "likesCount": 54,
  "commentsCount": 1,
  "viewsCount": 688,
  "playsCount": null,
  "sharesCount": null,
  "engagementTotal": 55,
  "engagementRateByFollowers": 0.0048,
  "viewsToFollowersRatio": 0.0606,
  "likesToViewsRatio": 0.0785,
  "commentsToViewsRatio": 0.0015,
  "sharesToViewsRatio": null,
  "daysSincePublished": 24,
  "postingMonth": 3,
  "postingWeekday": "Tuesday",
  "postingHourLocal": 6,
  "dateBucket": "last_30d",
  "accountReelsSampleSize": 40,
  "accountAvgViewsSample": 6002.93,
  "accountAvgLikesSample": 176.47,
  "accountAvgCommentsSample": 8.65,
  "relativePerformanceVsAccountAvg": 0.115,
  "performanceBucket": "low",
  "contentTopicHint": null,
  "hasQuestionInHook": false,
  "hasNumberInHook": true,
  "hasEmojiInHook": false,
  "hasCTA": false,
  "captionLengthChars": 88,
  "captionLengthWords": 17,
  "thumbnailUrl": "https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/658797984_17985064196985555_7087428163089197254_n.jpg?...",
  "videoUrl": null,
  "scrapedAt": "2026-04-24T08:38:16.237Z",
  "runId": "Y9RGT5VKVzOJPL7fa"
}
```

> The `thumbnailUrl` is a signed Instagram CDN URL (time-limited). The full URL is returned in the dataset — it is truncated above only for readability.

#### Output field groups

All fields are scalar or simple arrays; missing values are `null`.

**Source / account** — `inputUrl`, `sourceType`, `profileUsername`, `profileFullName`, `profileUrl`, `profileId`, `profileIsVerified`, `profileCategoryName`, `profileBiography`, `profileExternalUrl`, `profileFollowersCount`, `profileFollowingCount`, `profilePostsCount`

**Reel identity** — `reelId`, `reelShortcode`, `reelUrl`, `reelType`, `isPinned`, `publishedAt`, `publishedDate`, `publishedTimestamp`

**Content** — `caption`, `hookText`, `hookLine1`, `hookLengthChars`, `hookLengthWords`, `hookStyle`, `ctaType`, `hashtags[]`, `mentions[]`, `taggedUsers[]`, `hashtagCount`, `mentionCount`, `languageHint`, `audioTitle`, `audioArtist`, `audioType`, `audioOriginal`, `durationSeconds`

**Performance** — `likesCount`, `commentsCount`, `viewsCount`, `playsCount`, `sharesCount`, `engagementTotal`, `engagementRateByFollowers`, `viewsToFollowersRatio`, `likesToViewsRatio`, `commentsToViewsRatio`, `sharesToViewsRatio`

**Timing / cadence** — `daysSincePublished`, `postingMonth`, `postingWeekday`, `postingHourLocal`, `dateBucket`

**Benchmarks** — `accountReelsSampleSize`, `accountAvgViewsSample`, `accountAvgLikesSample`, `accountAvgCommentsSample`, `relativePerformanceVsAccountAvg`, `performanceBucket` (`high` / `avg` / `low` / `unknown`)

**Hook flags + misc** — `contentTopicHint`, `hasQuestionInHook`, `hasNumberInHook`, `hasEmojiInHook`, `hasCTA`, `captionLengthChars`, `captionLengthWords`, `thumbnailUrl`, `videoUrl`, `scrapedAt`, `runId`

#### Hook style values

`question`, `how_to`, `list`, `mistake`, `warning`, `story`, `opinion`, `direct_cta`, `other`, `unknown`.

#### CTA type values

`follow`, `comment`, `dm`, `link_in_bio`, `save`, `share`, `buy`, `watch_more`, `none_detected`, `unknown`.

### Benchmarks

For profile inputs, the actor computes the sample average of views / likes / comments across the Reels it collected, then annotates each row with:

- `relativePerformanceVsAccountAvg` = `viewsCount ÷ accountAvgViewsSample` (falls back to likes when views are unavailable)
- `performanceBucket` — `high` (>1.5×), `avg` (0.5–1.5×), `low` (<0.5×)

In the sample record above, the Reel got 688 views against an account sample average of ~6,003 views (40-Reel sample), giving a `relativePerformanceVsAccountAvg` of `0.115` and bucketing it as `low`.

For single-Reel inputs, `accountReelsSampleSize = 1` and benchmarks are `null`.

### Pricing

Pay-per-event: **`reel-result`** — charged once per Reel row pushed to the dataset. The actor respects your configured spending limit: if the limit is reached mid-run, the run stops gracefully — no further rows pushed, no further events charged.

### Limitations

- **Public data only.** No login, no private accounts, no login-walled data.
- Some fields (`viewsCount`, `playsCount`, `sharesCount`, `audioArtist`) are best-effort and may be `null` for any given Reel.
- `postingHourLocal` reflects UTC hour, not the viewer's timezone.
- All derived fields (`hookStyle`, `ctaType`, benchmarks) are transparent, rule-based heuristics — not machine-learning classifications.

### Local development

```bash
cd actor
npm install
npm start      ## Run with INPUT.json
npm run dev    ## Run with local storage
```

Deployment to Apify is manual (`apify push`). This actor does not auto-deploy.

# Actor input Schema

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

Public Instagram profile URLs (e.g. https://www.instagram.com/nike/), bare usernames (e.g. nike), or direct Reel URLs (e.g. https://www.instagram.com/reel/ABC123/). Mix and match.

## `maxReelsPerProfile` (type: `integer`):

Maximum number of Reels to collect from each profile input. Ignored for direct Reel URL inputs.

## `dateFrom` (type: `string`):

Only include Reels published on or after this date (ISO 8601, e.g. 2025-01-01). Leave empty for no lower bound.

## `dateTo` (type: `string`):

Only include Reels published on or before this date (ISO 8601). Leave empty for no upper bound.

## `skipPinnedReels` (type: `boolean`):

Skip pinned Reels when pinning is detectable. Pinned Reels often distort benchmarks because profiles pin their best-performing content.

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

Emit profile-level fields (followers, bio, category, verified) on every Reel row. Useful for normalization and downstream joins.

## `includeDerivedFields` (type: `boolean`):

Emit derived analytics: hookStyle, ctaType, engagement ratios, and account-level benchmarks.

## `includeHashtagsArray` (type: `boolean`):

Emit hashtags as an array field. Disable to keep CSV exports purely scalar.

## `includeMentionsArray` (type: `boolean`):

Emit @mentions as an array field. Disable to keep CSV exports purely scalar.

## `includeAudioFields` (type: `boolean`):

Emit audio metadata (audioTitle, audioArtist, audioType, audioOriginal) when available.

## `includeVideoUrl` (type: `boolean`):

Emit a best-effort direct video URL. These URLs are short-lived and signed; they are provided for convenience only.

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

Maximum time in seconds to process each input entry.

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

Maximum number of inputs to process concurrently. Keep low for Instagram stability.

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

Enable verbose logging for debugging.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.instagram.com/garyvee/"
  ],
  "maxReelsPerProfile": 20,
  "dateFrom": "",
  "dateTo": "",
  "skipPinnedReels": true,
  "includeProfileContext": true,
  "includeDerivedFields": true,
  "includeHashtagsArray": true,
  "includeMentionsArray": true,
  "includeAudioFields": true,
  "includeVideoUrl": false,
  "requestTimeoutSecs": 300,
  "maxConcurrency": 1,
  "debugMode": false
}
```

# Actor output Schema

## `reels` (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-reel-hooks-competitor-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-reel-hooks-competitor-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-reel-hooks-competitor-analyzer --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Reel Hooks & Competitor Analyzer",
        "description": "Analyze Instagram Reels from competitor accounts. Extract hooks, captions, hashtags, audio, posting cadence, and engagement metrics in flat CSV-friendly output for benchmarking, content research, and creative strategy.",
        "version": "1.0",
        "x-build-id": "gWtiOL7YPIVuQYIX6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/coregent~instagram-reel-hooks-competitor-analyzer/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-coregent-instagram-reel-hooks-competitor-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-reel-hooks-competitor-analyzer/runs": {
            "post": {
                "operationId": "runs-sync-coregent-instagram-reel-hooks-competitor-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-reel-hooks-competitor-analyzer/run-sync": {
            "post": {
                "operationId": "run-sync-coregent-instagram-reel-hooks-competitor-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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Profiles or Reel URLs",
                        "type": "array",
                        "description": "Public Instagram profile URLs (e.g. https://www.instagram.com/nike/), bare usernames (e.g. nike), or direct Reel URLs (e.g. https://www.instagram.com/reel/ABC123/). Mix and match.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "https://www.instagram.com/garyvee/"
                        ]
                    },
                    "maxReelsPerProfile": {
                        "title": "Max Reels Per Profile",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of Reels to collect from each profile input. Ignored for direct Reel URL inputs.",
                        "default": 20
                    },
                    "dateFrom": {
                        "title": "Date From",
                        "type": "string",
                        "description": "Only include Reels published on or after this date (ISO 8601, e.g. 2025-01-01). Leave empty for no lower bound.",
                        "default": ""
                    },
                    "dateTo": {
                        "title": "Date To",
                        "type": "string",
                        "description": "Only include Reels published on or before this date (ISO 8601). Leave empty for no upper bound.",
                        "default": ""
                    },
                    "skipPinnedReels": {
                        "title": "Skip Pinned Reels",
                        "type": "boolean",
                        "description": "Skip pinned Reels when pinning is detectable. Pinned Reels often distort benchmarks because profiles pin their best-performing content.",
                        "default": true
                    },
                    "includeProfileContext": {
                        "title": "Include Profile Context",
                        "type": "boolean",
                        "description": "Emit profile-level fields (followers, bio, category, verified) on every Reel row. Useful for normalization and downstream joins.",
                        "default": true
                    },
                    "includeDerivedFields": {
                        "title": "Include Derived Fields",
                        "type": "boolean",
                        "description": "Emit derived analytics: hookStyle, ctaType, engagement ratios, and account-level benchmarks.",
                        "default": true
                    },
                    "includeHashtagsArray": {
                        "title": "Include Hashtags Array",
                        "type": "boolean",
                        "description": "Emit hashtags as an array field. Disable to keep CSV exports purely scalar.",
                        "default": true
                    },
                    "includeMentionsArray": {
                        "title": "Include Mentions Array",
                        "type": "boolean",
                        "description": "Emit @mentions as an array field. Disable to keep CSV exports purely scalar.",
                        "default": true
                    },
                    "includeAudioFields": {
                        "title": "Include Audio Fields",
                        "type": "boolean",
                        "description": "Emit audio metadata (audioTitle, audioArtist, audioType, audioOriginal) when available.",
                        "default": true
                    },
                    "includeVideoUrl": {
                        "title": "Include Video URL",
                        "type": "boolean",
                        "description": "Emit a best-effort direct video URL. These URLs are short-lived and signed; they are provided for convenience only.",
                        "default": false
                    },
                    "requestTimeoutSecs": {
                        "title": "Request Timeout (seconds)",
                        "minimum": 30,
                        "maximum": 900,
                        "type": "integer",
                        "description": "Maximum time in seconds to process each input entry.",
                        "default": 300
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Maximum number of inputs to process concurrently. Keep low for Instagram stability.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
