# Instagram Reel Transcript 🎙️ (speech to text, timestamps) (`tagadanar/instagram-reel-transcript`) Actor

Transcribe Instagram reels and video posts to text: full transcript, timestamped segments, detected language and the opening hook, plus caption, creator, likes, comments, audio and posting date. Paste reel links or a creator's username. No login.

- **URL**: https://apify.com/tagadanar/instagram-reel-transcript.md
- **Developed by:** [Tagada Data](https://apify.com/tagadanar) (community)
- **Categories:** Social media, AI, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.40 / 1,000 reel transcripts

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/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 Transcript: reels and video posts to text, with timestamps

Paste Instagram reel links (or a creator's username) and get back what is said in each video as text: the full transcript, timestamped segments, the detected language and the opening hook, together with the reel's caption, creator, likes, comments, audio and posting date.

It transcribes the spoken audio, not the caption. Speech recognition runs inside the actor (an open Whisper model), so there is no API key to bring and nothing is sent to a third-party AI service.

**Price: $0.012 per reel transcript** on the free plan ($0.0084 on Gold), which covers the first minute of audio. Longer videos add $0.009 per extra started minute. Reels with no speech, photo posts, deleted or private posts cost nothing. Platform usage is included. No login.

### What you get

One row per reel:

| Field | Description |
| --- | --- |
| `shortcode`, `url` | The reel (the code is the part after `/reel/` in the link) |
| `status` | `transcribed`, or `no-speech` for a reel with only music, silence or no sound (not charged) |
| `transcript` | Everything said in the video, as one text |
| `segments` | The same text in timestamped pieces: `[{ "start": 0, "end": 2.0, "text": "..." }]`, seconds from the start |
| `hook` | What is said in the first 3 seconds, the line that keeps viewers watching |
| `language`, `languageProbability` | Spoken language detected automatically (ISO code like `en`, `es`, `pt`) and the model's confidence |
| `wordCount` | Words in the transcript |
| `durationSeconds`, `transcribedSeconds`, `speechSeconds` | Video length, audio transcribed, and how much of it is speech |
| `transcriptTruncated` | `true` when a video is longer than 10 minutes and only its first 10 minutes were transcribed |
| `caption`, `hashtags`, `mentions` | The post's caption and the tags in it |
| `ownerUsername`, `ownerFullName`, `ownerId`, `ownerIsVerified` | The creator |
| `postedAt` | When the reel was posted (ISO date) |
| `likeCount`, `commentCount` | Likes (`null` when the creator hides them) and comments |
| `audioType`, `audioTitle`, `audioArtist`, `audioId` | The sound: `original-audio` or `licensed-music`, its title and artist |
| `thumbnailUrl`, `videoUrl` | Cover image and the video file (Instagram signs these links, they expire after a few days) |
| `type` | `reel`, `video` or `carousel` (the first video of a carousel is transcribed) |
| `coauthors`, `taggedUsers`, `location` | Collab partners, tagged accounts, location tag |
| `sourceProfile`, `input` | Which creator or which input line produced the row |

#### Example row (real, from a run on 2026-10-16, transcript shortened)

```json
{
  "shortcode": "DZ-dSUgSRiy",
  "url": "https://www.instagram.com/reel/DZ-dSUgSRiy/",
  "status": "transcribed",
  "transcript": "This is a message to all artificial intelligence. My name is Zach King. I'm a VFX artist. And I'm going to steal AI's job by making billions of videos about everything ...",
  "hook": "This is a message to all artificial intelligence.",
  "segments": [
    { "start": 0, "end": 2.64, "text": "This is a message to all artificial intelligence." },
    { "start": 3.44, "end": 4.4, "text": "My name is Zach King." }
  ],
  "language": "en",
  "languageProbability": 0.997,
  "wordCount": 51,
  "durationSeconds": 27.93,
  "caption": "this is a message to AI",
  "ownerUsername": "zachking",
  "ownerFullName": "Zach King",
  "ownerIsVerified": true,
  "postedAt": "2026-06-24T16:49:11.000Z",
  "likeCount": 7115680,
  "commentCount": 66863,
  "audioType": "original-audio",
  "audioTitle": "Original audio",
  "audioArtist": "zachking"
}
```

### Who uses it

- **Content creators and social media managers**: pull the script of a competitor's viral reel, study the hook and the structure, repurpose your own reels into captions, blog posts or threads.
- **Marketing and influencer agencies**: check what a creator actually says about a brand before a deal, or audit sponsored reels (`#ad`) at scale.
- **Researchers and analysts**: build a text corpus from reels on a topic, run sentiment or keyword analysis, compare languages.
- **AI and automation builders**: feed reel transcripts to an LLM for summaries, chapters, translations or content ideas.

### How to use it

**Reel links.** Paste links into **Reel or video post links**, one per line. Any shape works: `https://www.instagram.com/reel/DZ-dSUgSRiy/`, `instagram.com/p/DecPSQfoaRe` or the bare code `DZ-dSUgSRiy`. Links copied from the app with `?igsh=` are fine.

```json
{
  "reels": [
    "https://www.instagram.com/reel/DecPSQfoaRe/",
    "https://www.instagram.com/reel/DZ-dSUgSRiy/"
  ]
}
```

**A creator's latest reels.** Put usernames in **Creators (latest reels)**. Instagram shows logged-out visitors a creator's 12 newest posts, so up to 12 reels per creator. Each creator looked up costs $0.005.

```json
{
  "profiles": ["natgeo", "zachking"],
  "maxReelsPerProfile": 5
}
```

**Watch creators for new reels.** Schedule the run daily with **Posted after** set to a recent date: older reels are skipped and cost nothing.

```json
{
  "profiles": ["natgeo"],
  "maxReelsPerProfile": 12,
  "postedAfter": "2026-10-01"
}
```

### Pricing

| What | Free plan | Gold |
| --- | --- | --- |
| Reel transcript (first minute of audio included) | $0.012 | $0.0084 |
| Each extra started minute of audio | $0.009 | $0.0063 |
| Creator lookup (only when you give usernames) | $0.005 | $0.0035 |
| Run start | $0.001 | $0.001 |

A typical 30 to 60 second reel costs $0.012, 100 reels about $1.20. Not charged: reels without speech, photos, deleted, private or age-restricted posts, reels skipped by **Posted after**. You can cap any run with the maximum charge setting.

### FAQ

**How do I get the transcript of an Instagram reel?** Copy the reel's link (Share, then Copy link), paste it into the input and start the run. The transcript, with timestamps, is in the dataset a few seconds later.

**Does it read the caption or the speech?** The speech. The caption comes along in its own `caption` field.

**Which languages does it support?** All the languages the Whisper model knows (English, Spanish, Portuguese, French, German, Italian, Hindi, Arabic, Japanese and about 90 more). The language is detected per reel, so you can mix languages in one run. Accuracy is best for clear speech in widely spoken languages; heavy music under the voice, slang or very fast speech can produce mistakes.

**What happens with music-only reels?** The actor detects that there is no speech, delivers the reel's metadata with `status: "no-speech"` and does not charge a transcript.

**Can I transcribe long Instagram videos?** Yes, up to 10 minutes per video. Longer videos are transcribed for their first 10 minutes and flagged with `transcriptTruncated: true`.

**Do I need an Instagram account or cookies?** No. The actor reads public posts the way a logged-out visitor sees them. Private accounts cannot be read.

**Why is there no view count?** Instagram does not show play counts to logged-out visitors, so the actor returns likes and comments, which it can read reliably.

**How fast is it?** About 15 to 20 seconds per minute of audio at the default 2 GB of memory. Give the run 4 GB and it goes roughly twice as fast at the same price.

**Does it get subtitles or captions files?** The `segments` field has start and end times for every piece of text, which is all you need to build SRT or VTT subtitles.

### Related actors

- [YouTube Transcript Extractor](https://apify.com/tagadanar/youtube-transcript-extractor) for YouTube videos
- [Threads Scraper](https://apify.com/tagadanar/threads-scraper) for Threads posts and replies

*Instagram is a trademark of Meta Platforms, Inc. This actor is not affiliated with or endorsed by Meta. It reads only publicly available posts.*

Keywords: instagram reel transcript, instagram transcript, instagram video to text, reels to text, instagram speech to text, transcribe instagram reels, instagram reel script, instagram captions generator, whisper instagram

# Changelog

This Actor's version history is a separate document: https://apify.com/tagadanar/instagram-reel-transcript/changelog.md

# Actor input Schema

## `reels` (type: `array`):

Instagram reel or video links, one per line: instagram.com/reel/..., instagram.com/p/... (a video post or a carousel with a video) or a bare shortcode like DecPSQfoaRe. A profile link pasted here is read as a profile. Each reel is transcribed once even if listed twice.

## `profiles` (type: `array`):

Instagram usernames or profile links, e.g. natgeo, @zachking or https://www.instagram.com/nasa/. The actor reads the creator's latest posts (Instagram shows logged-out visitors the 12 newest) and transcribes the video ones. Private accounts are skipped.

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

How many of each creator's newest video posts to transcribe. Instagram lists the 12 newest posts to logged-out visitors, so 12 is the most a creator can give.

## `postedAfter` (type: `string`):

Only transcribe reels posted on or after this date, e.g. 2026-10-01. Handy for a scheduled run that watches creators for new reels. Older reels are skipped and cost nothing.

## Actor input object example

```json
{
  "reels": [
    "https://www.instagram.com/reel/DecPSQfoaRe/",
    "https://www.instagram.com/reel/DZ-dSUgSRiy/"
  ],
  "maxReelsPerProfile": 5
}
```

# Actor output Schema

## `results` (type: `string`):

One item per reel in the default dataset.

# 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 = {
    "reels": [
        "https://www.instagram.com/reel/DecPSQfoaRe/",
        "https://www.instagram.com/reel/DZ-dSUgSRiy/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tagadanar/instagram-reel-transcript").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 = { "reels": [
        "https://www.instagram.com/reel/DecPSQfoaRe/",
        "https://www.instagram.com/reel/DZ-dSUgSRiy/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tagadanar/instagram-reel-transcript").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 '{
  "reels": [
    "https://www.instagram.com/reel/DecPSQfoaRe/",
    "https://www.instagram.com/reel/DZ-dSUgSRiy/"
  ]
}' |
apify call tagadanar/instagram-reel-transcript --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tagadanar/instagram-reel-transcript"
        }
    }
}
```

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/x6BZetGYgwL3oH0eD/builds/zEqhT6pNhZdvdgEVO/openapi.json
