# Instagram Reel Transcript Scraper (`data-slayer/instagram-reel-transcript-scraper`) Actor

Extract searchable transcripts from public Instagram Reels and video posts, with language, source labels, and optional timestamps for analysis and export.

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

## Pricing

from $75.00 / 1,000 successful transcripts

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 Transcript Scraper

Extract searchable transcripts from public Instagram Reels and video posts. Submit up to 20 URLs, choose a duration limit, and export transcript text with language, source labels, and optional timestamps.

### Watch the demo

YouTube video coming soon.

### Why use this Actor?

- Turn short-form videos into text you can search, quote, classify, or analyze.
- Process a URL batch without profile crawling, login cookies, or private-media access.
- See whether each transcript came from native captions or speech-to-text.
- Keep unavailable, silent, unsupported, and failed items as explicit status rows.
- Pay the transcript event only when a non-empty transcript is saved.

### Quick start

1. Open the Actor input page.
2. Add 1–20 public Reel or video-post URLs.
3. Keep the 120-second limit or choose a lower value.
4. Enable timestamps if you need source-supplied segments.
5. Click **Start** and open the **Dataset** when the run finishes.

Example input:

```json
{
  "urls": [
    "https://www.instagram.com/reel/DV29mBcMQwp/"
  ],
  "maxDurationSeconds": 120,
  "includeTimestamps": true,
  "languageHint": "en"
}
```

`languageHint` is optional. Leave it out to detect the spoken language automatically when possible.

### What the results contain

Each unique URL produces one dataset row. Successful rows include transcript text and provenance. Non-success rows keep transcript fields null and explain the outcome with a stable status and error code.

| Field | Meaning |
|---|---|
| `inputUrl` | Canonical Instagram URL processed for the row |
| `status` | `ok` or a functional non-success status |
| `transcript` | Caption or speech transcript text when successful |
| `transcriptSource` | `native_captions` or `speech_to_text` |
| `language` | Detected or declared language when available |
| `durationSeconds` | Observed video duration |
| `segments` | Ordered source timestamps when requested and available |
| `mediaId`, `shortcode` | Instagram identifiers when available |
| `collectedAt` | UTC result timestamp |
| `errorCode`, `errorMessage` | Clear reason for a non-success row |

Abbreviated view of an observed successful row:

```json
{
  "inputUrl": "https://www.instagram.com/reel/DV29mBcMQwp/",
  "mediaId": "3852537424986049577",
  "shortcode": "DV29mBcMQwp",
  "status": "ok",
  "transcript": "Friday, US President Donald Trump claimed Iran's air force is no longer as a result of military action.",
  "transcriptSource": "native_captions",
  "language": "en-US",
  "durationSeconds": 68.21800231933594,
  "segments": [
    {
      "start": 0.0,
      "end": 2.641,
      "text": "Friday, US President Donald Trump claimed Iran's air force"
    }
  ],
  "collectedAt": "2026-09-14T11:54:52Z",
  "errorCode": null,
  "errorMessage": null
}
```

The transcript and segment arrays above are shortened for readability. The complete observed row is available in [`examples/native-output.json`](examples/native-output.json).

`status` is one of `ok`, `duration_exceeded`, `inaccessible`, `not_video`, `no_speech`, or `processing_failed`. Transcript fields are null for non-success rows.

### Pricing

The Actor charges $0.075 for each successful transcript. A run also includes one $0.0005 `Actor Start` event because this Actor is limited to 1 GB of memory. The `transcript` event is charged only when the Actor saves a non-empty transcript with `status: "ok"`. Inaccessible, over-limit, silent, and failed items do not trigger the transcript event.

### Export your transcripts

Open the run dataset to download results as JSON, CSV, Excel, XML, RSS, or JSONL. You can also retrieve dataset items through the Apify API and connect them to analysis, search, or content-review workflows.

### Common use cases

- Build a searchable research archive from selected short videos.
- Review spoken claims, topics, names, and phrases across a URL list.
- Prepare caption text for qualitative coding or content analysis.
- Export timestamped passages for manual source verification.

### Limits and responsible use

- Public Instagram Reel, video-post, and legacy TV URLs only.
- Up to 20 unique URLs per run and 120 seconds per video.
- No profile traversal, translation, comment scraping, or private-media access.
- Timestamps appear only when the source supplies them; they are never invented.
- Transcript accuracy varies with audio quality, accents, background sound, and caption availability. Verify important quotations against the original video.
- Use the results in accordance with applicable law, platform terms, and the rights of content owners.

### Frequently asked questions

#### Does this Actor work with private Instagram accounts?

No. It processes only public URLs that are available at run time and does not accept login cookies.

#### Which languages are supported?

The Actor returns a detected or declared language when available. Coverage and accuracy depend on the spoken audio or native caption track, so no universal language guarantee is made.

#### Are timestamps always included?

No. Enable `includeTimestamps` to request them. The `segments` array remains empty when the transcript source does not supply timestamps.

#### Are failed or silent videos charged as transcripts?

No. The $0.0005 `Actor Start` event applies to the run, but the $0.075 `transcript` event is charged only for a saved, non-empty transcript. Other outcomes are returned as status rows.

#### Does the Actor translate transcripts?

No. Version 1 preserves the observed transcript language and does not add translation.

#### Is this an official Instagram product?

No. This is an independent data-processing tool and is not affiliated with or endorsed by Instagram.

### Support

If a result looks wrong, open an issue from the Actor page and include the Apify run ID, the row status, and a redacted example URL. Do not post private credentials or sensitive content.

### Related Instagram Actors

- [Instagram Post & Reel Details Scraper](https://apify.com/data-slayer/instagram-post-details)
- [Instagram Profile Reels Scraper](https://apify.com/data-slayer/instagram-profile-reels)
- [Instagram Reels Search & Trend Discovery](https://apify.com/data-slayer/instagram-search-reels)
- [Instagram Audio & Trending Sounds Scraper](https://apify.com/data-slayer/instagram-audio-scraper)

### FAQ

**How much does it cost to run this Actor?**
Pricing is listed in the Pricing section above, charged per row returned. You only pay for the rows
the Actor actually produces, so a small test run costs cents.

**Do I need cookies or a login?**
No. This Actor reads public data only - no cookies, no account, no browser automation.

**Can I schedule it?**
Yes. Run it from the Apify API, on a schedule, or via a webhook, and export results as JSON, CSV or Excel.

**What if I need a slightly different output?**
Open an issue on the Actor's Issues tab describing the shape you need.

### Related actors

More Instagram actors from the same portfolio. Apify only auto-recommends actors in the same category, so here are the rest of ours:

| Actor |
|---|
| [Instagram Audio & Trending Sounds Scraper · No Login](https://apify.com/data-slayer/instagram-audio-scraper) |
| [Instagram Brand Mentions & UGC Monitor](https://apify.com/data-slayer/instagram-brand-monitor) |
| [Instagram Comments Scraper with Replies · No Login](https://apify.com/data-slayer/instagram-comments-scraper-no-login-required) |
| [Instagram Creator Lead Finder · Keywords & Hashtags](https://apify.com/data-slayer/instagram-creator-lead-finder) |
| [Instagram Engaged Audience Exporter](https://apify.com/data-slayer/instagram-engaged-audience-exporter) |
| [Instagram Follower Count & Growth Monitor](https://apify.com/data-slayer/instagram-follower-count-growth-monitor) |
| [Instagram Followers & Following Search](https://apify.com/data-slayer/instagram-followers-following-search) |
| [Instagram Followers Scraper & Enricher · No Login](https://apify.com/data-slayer/instagram-followers-scraper---no-login) |
| [Instagram Following Scraper & Enricher · No Login](https://apify.com/data-slayer/instagram-following) |
| [Instagram Hashtag Finder · No Login](https://apify.com/data-slayer/instagram-hashtags-scraper-no-login-required) |
| [Instagram Hashtag Posts & Reels Scraper · No Login](https://apify.com/data-slayer/instagram-hashtag-posts-reels-scraper-no-login) |
| [Instagram Hashtag Research Reports](https://apify.com/data-slayer/instagram-hashtag-research) |
| [Instagram Highlights Scraper · No Login](https://apify.com/data-slayer/instagram-highlights-scraper) |
| [Instagram Keyword Posts Scraper](https://apify.com/data-slayer/instagram-keyword-posts-scraper) |
| [Instagram Likes Scraper · No Cookies](https://apify.com/data-slayer/instagram-likes) |
| [Instagram Location Posts Scraper · No Login](https://apify.com/data-slayer/instagram-location-posts) |
| [Instagram Media Archive Downloader](https://apify.com/data-slayer/instagram-media-archive-downloader) |
| [Instagram Place Finder & Details](https://apify.com/data-slayer/instagram-place-finder) |
| [Instagram Post & Reel Details Scraper · No Login](https://apify.com/data-slayer/instagram-post-details) |
| [Instagram Profile Posts & Reels Scraper · No Login](https://apify.com/data-slayer/instagram-posts) |
| [Instagram Profile Reels Scraper · No Login](https://apify.com/data-slayer/instagram-profile-reels) |
| [Instagram Profile Scraper · Account Age & Verified Emails](https://apify.com/data-slayer/instagram-user-info-scraper-cookieless) |
| [Instagram Public Contact Finder](https://apify.com/data-slayer/instagram-email-phone-scraper) |
| [Instagram Reel Performance Tracker](https://apify.com/data-slayer/instagram-reel-performance-tracker) |
| [Instagram Reels Search & Trend Discovery · No Login](https://apify.com/data-slayer/instagram-search-reels) |
| [Instagram Reels by Audio ID · Sound & Music Tracker · No Login](https://apify.com/data-slayer/instagram-reels-by-audio) |
| [Instagram Related Creator Network](https://apify.com/data-slayer/instagram-related-creator-network) |
| [Instagram Reposts Scraper · Profile Repost History · No Login](https://apify.com/data-slayer/instagram-reposts) |
| [Instagram Similar Accounts Scraper · No Login](https://apify.com/data-slayer/instagram-related-profiles-scraper) |
| [Instagram Similar Accounts Scraper · No Login](https://apify.com/data-slayer/instagram-similar-accounts-scraper) |
| [Instagram Stories Scraper · No Login](https://apify.com/data-slayer/instagram-stories-scraper) |
| [Instagram Tagged Posts & Mentions Scraper · No Login](https://apify.com/data-slayer/instagram-tagged-posts) |
| [Instagram Trending Audio & Sounds Search · No Login](https://apify.com/data-slayer/instagram-trending-audio-search) |
| [Instagram User Search · Find Leads by Keyword · No Login](https://apify.com/data-slayer/instagram-search-users) |

# Actor input Schema

## `urls` (type: `array`):

Add 1–20 public Instagram Reel, video-post, or legacy TV URLs. Tracking parameters are removed and each unique URL is processed once.

## `maxDurationSeconds` (type: `integer`):

Choose a limit from 1 to 120 seconds. Longer videos return a duration\_exceeded status and are not charged as successful transcripts.

## `includeTimestamps` (type: `boolean`):

Include ordered start and end times when the transcript source supplies timestamps.

## `languageHint` (type: `string`):

Optionally enter a language code such as en, hi, or es. Leave blank to detect the spoken language automatically when possible.

## Actor input object example

```json
{
  "urls": [
    "https://www.instagram.com/reel/DV29mBcMQwp/"
  ],
  "maxDurationSeconds": 120,
  "includeTimestamps": false
}
```

# Actor output Schema

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

One transcript or status row for each unique input URL, ready to view or export.

## `runSummary` (type: `string`):

Run status, a clear message, and counts for requested URLs, unique URLs, processed rows, successful transcript charges, status rows, duplicates, and budget stops.

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

// Run the Actor and wait for it to finish
const run = await client.actor("data-slayer/instagram-reel-transcript-scraper").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 = { "urls": ["https://www.instagram.com/reel/DV29mBcMQwp/"] }

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

```

## MCP server setup

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

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/CxxYvU4LczCcl7DQN/builds/dvogq4RefDYaBSufs/openapi.json
