# Instagram Reel to Script: Transcript, On-Screen Text, Hook, CTA (`agentic-kb/reel-to-script`) Actor

Turn Instagram Reels into structured scripts: GPU transcript, on-screen text in Latin, Arabic, Cyrillic, Devanagari and more, hook, CTA and beats.

- **URL**: https://apify.com/agentic-kb/reel-to-script.md
- **Developed by:** [Semih Korkmaz](https://apify.com/agentic-kb) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 reel processed-first 1,000 reels per account (launch price)s

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Instagram Reel to Script

Turn Instagram Reels into structured scripts you can read, compare and reuse. Each reel comes back as a clean row with its transcript, on-screen text, hook, call to action and a beat-by-beat breakdown.

Built for marketers, creators and researchers studying what works on short-form video.

### What you get for each reel

- **Transcript** with word timings, from a GPU speech model.
- **On-screen text**: titles, callouts, prices and labels, with times. Each entry is marked `overlay`, `subtitle` or `scene`, so you can keep only what the creator put on the video.
- **Hook**: the opening spoken line and on-screen text, plus the technique used.
- **Call to action**, quoted, with its type and time.
- **Beats**: the reel's structure, described from the video, in the reel's own language.

On-screen text is read in Latin, Arabic, Cyrillic, Devanagari, Greek, Hangul, Thai, Chinese and Japanese scripts. It's listed even when it's also spoken, so you see exactly what viewers read.

### How to use it

Give it one of these:

- **Reel URLs.** The Actor fetches them with Apify's Instagram Scraper, which bills your account at its own rate.
- **A dataset ID** from `apify/instagram-reel-scraper` or `apify/instagram-scraper`. Run this soon after the scraper, because Instagram's media links expire.

### Pricing

| | Price per reel |
|---|---|
| Launch price, first 1,000 reels per account | **$0.009** |
| After that | $0.025 |

You pay only for delivered results. Reels with nothing to analyze, failed reels, reels over 3 minutes, and repeats of a reel you ran in the last 7 days are free.

Apify platform usage is included in these prices. If you use reel URLs, Instagram Scraper is a separate Actor and bills your account its own fee. With a dataset ID, you've already paid for that step.

**Free-plan accounts** get a demo of 5 reels a day.

### Limits

- Reels up to 3 minutes, and up to 500 per run.
- Launch capacity is limited each day. When it's full, the run stops with a clear message, you aren't charged for the reels it didn't process, and capacity resets at 00:00 UTC.
- Hebrew and Vietnamese text is read from sampled frames, so it's less complete. Thai is the weakest supported script.
- Transcript accuracy is in line with leading tools on English speech. Mixed-language speech can come back in one language.
- Rows can include some text caught on camera. Filter on `kind == "overlay"` for a shorter list.

### Output example

This is one complete, unedited row from a real 50-second reel. `segments` holds the transcript with a timing for every word.

```json
{
  "reel_url": "https://www.instagram.com/p/DfKvzO5lGQN/",
  "reel_id": "DfKvzO5lGQN",
  "schema_version": "1.0",
  "status": "ok",
  "billable": true,
  "error": null,
  "language": "en",
  "language_probability": 0.999,
  "duration_s": 50.09,
  "transcript": "The new film is about a central male friendship. What ideas were you interested in exploring this time around? My male friendships are, you know, quite deep and sad and open and everything that, you know, a female friendship can be but is acknowledged to be and is seen as being in the culture. I like the gentleness of my male friendships. And I guess to show a bit more of that, you know, not just to have like a buddy movie where that's sort of empty or surface is what I was trying to get at with this film. And that's not something you ever really see in a Hollywood movie necessarily.",
  "hook": {"on_screen": "Martin McDonagh: 'My Male Friendships Are Quite Deep and Sad and Open' / THE INTERVIEW", "spoken": "The new film is about a central male friendship.", "type": "bold_claim"},
  "cta": {"at_s": 46, "text": "The full episode is in our app. Your first month is free.", "type": "subscribe"},
  "beats": [
    {"end_s": 8, "label": "hook", "start_s": 0, "summary": "Martin McDonagh is shown on camera with a headline that says his male friendships are deep, sad and open."},
    {"end_s": 24, "label": "story", "start_s": 8, "summary": "McDonagh explains that his male friendships are as deep and open as female friendships, which culture does not usually acknowledge."},
    {"end_s": 40, "label": "value", "start_s": 24, "summary": "He says he wants to show more of this gentleness, rather than a surface-level buddy movie, in his new film."},
    {"end_s": 43, "label": "proof", "start_s": 40, "summary": "He notes that Hollywood movies rarely show this kind of male friendship."},
    {"end_s": 50, "label": "offer", "start_s": 43, "summary": "The New York Times logo appears, then a card says the full episode is in the app with a free first month."}
  ],
  "on_screen_text": [
    {"confidence": 0.97, "end_s": 5, "kind": "overlay", "start_s": 0, "text": "Martin McDonagh: 'My Male Friendships Are Quite Deep and Sad and Open'"},
    {"confidence": 0.987, "end_s": 1, "kind": "subtitle", "start_s": 0, "text": "– The new film is about"},
    {"confidence": 0.999, "end_s": 5, "kind": "overlay", "start_s": 0, "text": "THE INTERVIEW"},
    {"confidence": 1, "end_s": 5, "kind": "subtitle", "start_s": 1, "text": "a central male friendship."},
    {"confidence": 0.968, "end_s": 8, "kind": "overlay", "start_s": 5, "text": "David Marchese HOST OF “THE INTERVIEW\" THE NEW YORK TIMES"},
    {"confidence": 1, "end_s": 6, "kind": "subtitle", "start_s": 5, "text": "What ideas were you"},
    {"confidence": 1, "end_s": 7, "kind": "subtitle", "start_s": 6, "text": "interested in exploring"},
    {"confidence": 0.999, "end_s": 8, "kind": "subtitle", "start_s": 7, "text": "this time around?"},
    {"confidence": 0.998, "end_s": 12, "kind": "subtitle", "start_s": 8, "text": "My male friendships are, you know, quite"},
    {"confidence": 0.997, "end_s": 13, "kind": "overlay", "start_s": 9, "text": "Martin McDonagh WRITER AND DIRECTOR"},
    {"confidence": 1, "end_s": 15, "kind": "subtitle", "start_s": 12, "text": "deep and sad and open"},
    {"confidence": 1, "end_s": 16, "kind": "subtitle", "start_s": 15, "text": "and everything that,"},
    {"confidence": 0.996, "end_s": 20, "kind": "subtitle", "start_s": 16, "text": "you know, a female friendship can be,"},
    {"confidence": 1, "end_s": 21, "kind": "subtitle", "start_s": 20, "text": "but is acknowledged"},
    {"confidence": 0.992, "end_s": 22, "kind": "subtitle", "start_s": 21, "text": "to be and is seen"},
    {"confidence": 0.987, "end_s": 24, "kind": "subtitle", "start_s": 22, "text": "as being in the culture."},
    {"confidence": 0.999, "end_s": 27, "kind": "subtitle", "start_s": 24, "text": "I like the gentleness of my"},
    {"confidence": 0.997, "end_s": 30, "kind": "subtitle", "start_s": 27, "text": "and I guess to show a bit more of that,"},
    {"confidence": 0.998, "end_s": 31, "kind": "subtitle", "start_s": 30, "text": "you know, not just to have"},
    {"confidence": 1, "end_s": 32, "kind": "subtitle", "start_s": 31, "text": "like a buddy movie"},
    {"confidence": 0.995, "end_s": 35, "kind": "subtitle", "start_s": 32, "text": "where that's sort of empty or surface"},
    {"confidence": 0.994, "end_s": 37, "kind": "subtitle", "start_s": 35, "text": "is what I was trying to get"},
    {"confidence": 0.971, "end_s": 38, "kind": "subtitle", "start_s": 37, "text": "at with this film."},
    {"confidence": 0.999, "end_s": 39, "kind": "subtitle", "start_s": 38, "text": "And that's not something"},
    {"confidence": 1, "end_s": 41, "kind": "subtitle", "start_s": 39, "text": "you ever really see in a"},
    {"confidence": 0.997, "end_s": 43, "kind": "subtitle", "start_s": 41, "text": "Hollywood movie, necessarily."},
    {"confidence": 0.999, "end_s": 43, "kind": "overlay", "start_s": 41, "text": "The Interview"},
    {"confidence": 0.997, "end_s": 50, "kind": "overlay", "start_s": 46, "text": "The full episode is in our app. Your first month is free."}
  ],
  "segments": [
    {"end_s": 3.6, "start_s": 0, "text": "The new film is about a central male friendship.", "words": [{"end_s": 0.12, "probability": 0.919, "start_s": 0, "text": "The"}, {"end_s": 0.28, "probability": 0.998, "start_s": 0.12, "text": "new"}, {"end_s": 0.54, "probability": 0.999, "start_s": 0.28, "text": "film"}, {"end_s": 0.66, "probability": 0.998, "start_s": 0.54, "text": "is"}, {"end_s": 0.88, "probability": 0.999, "start_s": 0.66, "text": "about"}, {"end_s": 1.04, "probability": 0.995, "start_s": 0.88, "text": "a"}, {"end_s": 1.44, "probability": 0.99, "start_s": 1.04, "text": "central"}, {"end_s": 2.44, "probability": 0.988, "start_s": 1.44, "text": "male"}, {"end_s": 3.6, "probability": 0.993, "start_s": 2.44, "text": "friendship."}]},
    {"end_s": 7.94, "start_s": 4.02, "text": "What ideas were you interested in exploring this time around?", "words": [{"end_s": 4.66, "probability": 0.992, "start_s": 4.02, "text": "What"}, {"end_s": 5.2, "probability": 0.999, "start_s": 4.66, "text": "ideas"}, {"end_s": 5.38, "probability": 0.997, "start_s": 5.2, "text": "were"}, {"end_s": 5.56, "probability": 0.999, "start_s": 5.38, "text": "you"}, {"end_s": 6.04, "probability": 0.999, "start_s": 5.56, "text": "interested"}, {"end_s": 6.42, "probability": 1, "start_s": 6.04, "text": "in"}, {"end_s": 6.92, "probability": 0.999, "start_s": 6.42, "text": "exploring"}, {"end_s": 7.56, "probability": 0.993, "start_s": 6.92, "text": "this"}, {"end_s": 7.74, "probability": 1, "start_s": 7.56, "text": "time"}, {"end_s": 7.94, "probability": 0.998, "start_s": 7.74, "text": "around?"}]},
    {"end_s": 23.46, "start_s": 8.2, "text": "My male friendships are, you know, quite deep and sad and open and everything that, you know, a female friendship can be but is acknowledged to be and is seen as being in the culture.", "words": [{"end_s": 8.54, "probability": 0.938, "start_s": 8.2, "text": "My"}, {"end_s": 8.9, "probability": 0.995, "start_s": 8.54, "text": "male"}, {"end_s": 9.26, "probability": 0.998, "start_s": 8.9, "text": "friendships"}, {"end_s": 9.58, "probability": 0.994, "start_s": 9.26, "text": "are,"}, {"end_s": 10.22, "probability": 0.997, "start_s": 9.58, "text": "you"}, {"end_s": 10.38, "probability": 1, "start_s": 10.22, "text": "know,"}, {"end_s": 10.74, "probability": 0.998, "start_s": 10.38, "text": "quite"}, {"end_s": 12.68, "probability": 0.919, "start_s": 10.74, "text": "deep"}, {"end_s": 13.06, "probability": 0.96, "start_s": 12.68, "text": "and"}, {"end_s": 13.72, "probability": 1, "start_s": 13.06, "text": "sad"}, {"end_s": 14.02, "probability": 0.994, "start_s": 13.72, "text": "and"}, {"end_s": 14.42, "probability": 0.999, "start_s": 14.02, "text": "open"}, {"end_s": 14.82, "probability": 0.898, "start_s": 14.42, "text": "and"}, {"end_s": 15.78, "probability": 0.977, "start_s": 14.82, "text": "everything"}, {"end_s": 16.18, "probability": 0.991, "start_s": 15.78, "text": "that,"}, {"end_s": 16.6, "probability": 0.999, "start_s": 16.26, "text": "you"}, {"end_s": 16.84, "probability": 1, "start_s": 16.6, "text": "know,"}, {"end_s": 17.66, "probability": 0.995, "start_s": 16.84, "text": "a"}, {"end_s": 18.38, "probability": 0.999, "start_s": 17.66, "text": "female"}, {"end_s": 18.82, "probability": 1, "start_s": 18.38, "text": "friendship"}, {"end_s": 19.82, "probability": 0.999, "start_s": 18.82, "text": "can"}, {"end_s": 20.08, "probability": 1, "start_s": 19.82, "text": "be"}, {"end_s": 20.36, "probability": 0.435, "start_s": 20.08, "text": "but"}, {"end_s": 20.52, "probability": 0.999, "start_s": 20.36, "text": "is"}, {"end_s": 20.82, "probability": 0.999, "start_s": 20.52, "text": "acknowledged"}, {"end_s": 21.12, "probability": 1, "start_s": 20.82, "text": "to"}, {"end_s": 21.32, "probability": 1, "start_s": 21.12, "text": "be"}, {"end_s": 21.6, "probability": 0.957, "start_s": 21.32, "text": "and"}, {"end_s": 21.76, "probability": 0.995, "start_s": 21.6, "text": "is"}, {"end_s": 22.22, "probability": 1, "start_s": 21.76, "text": "seen"}, {"end_s": 22.44, "probability": 1, "start_s": 22.22, "text": "as"}, {"end_s": 22.66, "probability": 1, "start_s": 22.44, "text": "being"}, {"end_s": 22.9, "probability": 0.999, "start_s": 22.66, "text": "in"}, {"end_s": 23.16, "probability": 0.999, "start_s": 22.9, "text": "the"}, {"end_s": 23.46, "probability": 1, "start_s": 23.16, "text": "culture."}]},
    {"end_s": 27.26, "start_s": 23.68, "text": "I like the gentleness of my male friendships.", "words": [{"end_s": 24.14, "probability": 0.999, "start_s": 23.68, "text": "I"}, {"end_s": 24.48, "probability": 1, "start_s": 24.14, "text": "like"}, {"end_s": 24.68, "probability": 1, "start_s": 24.48, "text": "the"}, {"end_s": 25.06, "probability": 1, "start_s": 24.68, "text": "gentleness"}, {"end_s": 25.28, "probability": 0.999, "start_s": 25.06, "text": "of"}, {"end_s": 25.44, "probability": 1, "start_s": 25.28, "text": "my"}, {"end_s": 26.8, "probability": 0.999, "start_s": 25.44, "text": "male"}, {"end_s": 27.26, "probability": 1, "start_s": 26.8, "text": "friendships."}]},
    {"end_s": 37.86, "start_s": 27.26, "text": "And I guess to show a bit more of that, you know, not just to have like a buddy movie where that's sort of empty or surface is what I was trying to get at with this film.", "words": [{"end_s": 27.5, "probability": 0.844, "start_s": 27.26, "text": "And"}, {"end_s": 27.56, "probability": 0.994, "start_s": 27.5, "text": "I"}, {"end_s": 27.92, "probability": 0.998, "start_s": 27.56, "text": "guess"}, {"end_s": 28.08, "probability": 0.971, "start_s": 27.92, "text": "to"}, {"end_s": 28.36, "probability": 1, "start_s": 28.08, "text": "show"}, {"end_s": 28.62, "probability": 0.999, "start_s": 28.36, "text": "a"}, {"end_s": 28.86, "probability": 1, "start_s": 28.62, "text": "bit"}, {"end_s": 29.1, "probability": 1, "start_s": 28.86, "text": "more"}, {"end_s": 29.26, "probability": 0.997, "start_s": 29.1, "text": "of"}, {"end_s": 29.5, "probability": 1, "start_s": 29.26, "text": "that,"}, {"end_s": 30.14, "probability": 0.831, "start_s": 29.6, "text": "you"}, {"end_s": 30.32, "probability": 1, "start_s": 30.14, "text": "know,"}, {"end_s": 30.7, "probability": 1, "start_s": 30.32, "text": "not"}, {"end_s": 30.9, "probability": 0.993, "start_s": 30.7, "text": "just"}, {"end_s": 31.2, "probability": 0.987, "start_s": 30.9, "text": "to"}, {"end_s": 31.36, "probability": 1, "start_s": 31.2, "text": "have"}, {"end_s": 31.5, "probability": 0.98, "start_s": 31.36, "text": "like"}, {"end_s": 31.62, "probability": 1, "start_s": 31.5, "text": "a"}, {"end_s": 31.82, "probability": 0.994, "start_s": 31.62, "text": "buddy"}, {"end_s": 32.18, "probability": 1, "start_s": 31.82, "text": "movie"}, {"end_s": 32.54, "probability": 0.91, "start_s": 32.18, "text": "where"}, {"end_s": 33.22, "probability": 0.984, "start_s": 32.54, "text": "that's"}, {"end_s": 33.46, "probability": 1, "start_s": 33.22, "text": "sort"}, {"end_s": 33.62, "probability": 1, "start_s": 33.46, "text": "of"}, {"end_s": 33.86, "probability": 0.999, "start_s": 33.62, "text": "empty"}, {"end_s": 34.12, "probability": 0.996, "start_s": 33.86, "text": "or"}, {"end_s": 34.48, "probability": 0.999, "start_s": 34.12, "text": "surface"}, {"end_s": 35.42, "probability": 0.928, "start_s": 34.48, "text": "is"}, {"end_s": 36.52, "probability": 1, "start_s": 35.42, "text": "what"}, {"end_s": 36.64, "probability": 1, "start_s": 36.52, "text": "I"}, {"end_s": 36.74, "probability": 1, "start_s": 36.64, "text": "was"}, {"end_s": 36.88, "probability": 1, "start_s": 36.74, "text": "trying"}, {"end_s": 37.02, "probability": 1, "start_s": 36.88, "text": "to"}, {"end_s": 37.14, "probability": 1, "start_s": 37.02, "text": "get"}, {"end_s": 37.3, "probability": 0.989, "start_s": 37.14, "text": "at"}, {"end_s": 37.44, "probability": 1, "start_s": 37.3, "text": "with"}, {"end_s": 37.56, "probability": 1, "start_s": 37.44, "text": "this"}, {"end_s": 37.86, "probability": 1, "start_s": 37.56, "text": "film."}]},
    {"end_s": 42.58, "start_s": 37.96, "text": "And that's not something you ever really see in a Hollywood movie necessarily.", "words": [{"end_s": 38.42, "probability": 1, "start_s": 37.96, "text": "And"}, {"end_s": 38.68, "probability": 1, "start_s": 38.42, "text": "that's"}, {"end_s": 38.78, "probability": 1, "start_s": 38.68, "text": "not"}, {"end_s": 39.2, "probability": 1, "start_s": 38.78, "text": "something"}, {"end_s": 39.36, "probability": 1, "start_s": 39.2, "text": "you"}, {"end_s": 39.5, "probability": 1, "start_s": 39.36, "text": "ever"}, {"end_s": 39.74, "probability": 1, "start_s": 39.5, "text": "really"}, {"end_s": 40.1, "probability": 1, "start_s": 39.74, "text": "see"}, {"end_s": 40.38, "probability": 1, "start_s": 40.1, "text": "in"}, {"end_s": 40.8, "probability": 0.989, "start_s": 40.38, "text": "a"}, {"end_s": 41.6, "probability": 1, "start_s": 40.8, "text": "Hollywood"}, {"end_s": 42.2, "probability": 1, "start_s": 41.6, "text": "movie"}, {"end_s": 42.58, "probability": 0.922, "start_s": 42.2, "text": "necessarily."}]}
  ]
}
```

`status` is one of:

| Status | Meaning | Charged |
|---|---|---|
| `ok` | Full result | Yes |
| `no_content` | Music only, no speech, or too little text | No |
| `partial` | Transcript and text, but the analysis failed | No |
| `failed` | See `error` | No |
| `skipped` | Too long, or no video link | No |
| `capacity`, `quota` | Daily limit reached, try again after 00:00 UTC | No |
| `busy`, `rate_limited`, `unavailable`, `paused` | The run stopped early, try again later | No |

### Data

Videos are processed and deleted straight away. Result text is kept for 7 days, only for your account, so repeat reels are free. Frames and text are sent to Anthropic's Claude for analysis.

Only process content you have the right to use.

# Actor input Schema

## `reelUrls` (type: `array`):

Instagram Reel links. These are fetched with Apify's Instagram Scraper, which bills your account at its own rate. Leave empty if you use a dataset.

## `datasetId` (type: `string`):

Output of apify/instagram-reel-scraper or apify/instagram-scraper. Run this soon after the scraper: Instagram's media links expire.

## `maxReels` (type: `integer`):

Reels to process in this run. Reels over 3 minutes are skipped and not charged. Free-plan accounts get a demo of 5 reels a day.

## Actor input object example

```json
{
  "reelUrls": [
    "https://www.instagram.com/reel/DfIiQ4Nqi5X/"
  ],
  "maxReels": 50
}
```

# Actor output Schema

## `scripts` (type: `string`):

Transcript, on-screen text, hook, call to action and beats for each reel.

# 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 = {
    "reelUrls": [
        "https://www.instagram.com/reel/DfIiQ4Nqi5X/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentic-kb/reel-to-script").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 = { "reelUrls": ["https://www.instagram.com/reel/DfIiQ4Nqi5X/"] }

# Run the Actor and wait for it to finish
run = client.actor("agentic-kb/reel-to-script").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "reelUrls": [
    "https://www.instagram.com/reel/DfIiQ4Nqi5X/"
  ]
}' |
apify call agentic-kb/reel-to-script --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,agentic-kb/reel-to-script"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xIVwDKpFbyseL3UzS/builds/U0t3b7pkIpZhDSUch/openapi.json
