# TikTok | Instagram | Facebook | YouTube Shorts Transcriber (`tictechid/anoxvanzi-transcriber`) Actor

Extract accurate transcripts from Instagram Reels, Facebook Reels, YouTube Shorts, and TikTok videos. Use video URLs to transcribe public content with timestamps. Export transcripts in JSON format, run via API, MCP, schedule runs, or integrate with other tools for automated transcription workflows.

- **URL**: https://apify.com/tictechid/anoxvanzi-transcriber.md
- **Developed by:** [TicTech](https://apify.com/tictechid) (community)
- **Categories:** Social media, Videos, Automation
- **Features:** Limited permissions
- **Stats:** 2,505 total users, 93 monthly users, 100.0% runs succeeded, 85 bookmarks
- **User rating**: 4.06 out of 5 stars

## Pricing

from $1.00 / 1,000 seconds of video transcribeds

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

## Social Video Transcriber

Transform your social videos into actionable insights! Instantly convert Instagram Reels, TikTok, Youtube Shorts and Facebook Reels into searchable transcripts with optional timestamps, speaker labels, and automatic (or manual) language detection. Process one link or many in a single run. Unlock the full value of your content for analysis, accessibility, and growth.

> **Note:** Only publicly available videos can be transcribed. Private or restricted videos are not supported.

> **Important:** Due to CORS security and anti-scraping/bot measures, success rates are not guaranteed. The platform actively blocks automated access, which may result in failed downloads even for public content.

### Why Use This Tool?

- **Automate tedious work:** No more manual transcription, get results in minutes, not hours.
- **Unlock hidden insights:** Search, analyze, and repurpose your video content for new opportunities.
- **Boost accessibility:** Make your videos inclusive for all audiences with accurate transcripts.
- **Enhance discoverability:** Improve SEO and compliance with rich, timestamped text.
- **Stay ahead:** Track trends, monitor competitors, and optimize your content strategy with ease.

### Features

- Supports Instagram Reels, TikTok, Youtube Shorts, Facebook Reels, and Facebook Watch videos (public videos only)
- **Bulk transcription:** process multiple video URLs in a single run
- **Timestamps:** `[start - end]` markers on each line (on by default; can be turned off)
- **Optional speaker diarization:** label different speakers (`[Speaker 0]`, `[Speaker 1]`, …), ideal for interviews and podcasts (off by default)
- **Language:** auto-detect by default, or pick a specific language (see supported languages below)

### Use Cases

- **Content Creators:** Generate captions, repurpose content, and analyze performance.
- **Marketers:** Track brand mentions, analyze trends, and optimize strategy.
- **Researchers:** Study social media trends and extract insights from public discourse.
- **Businesses:** Create training materials, monitor feedback, and maintain compliance records.

### Supported Languages

- Bulgarian `bg`, Catalan `ca`, Chinese (Simplified) `zh-CN`, Chinese (Traditional) `zh-TW`
- Czech `cs`, Danish `da`, Dutch / Flemish `nl`, English `en`, Estonian `et`, Finnish `fi`
- French `fr`, German `de`, German (Switzerland) `de-CH`, Greek `el`, Hindi `hi`, Hungarian `hu`
- Indonesian `id`, Italian `it`, Japanese `ja`, Korean `ko`, Latvian `lv`, Lithuanian `lt`
- Malay `ms`, Norwegian `no`, Polish `pl`, Portuguese `pt`, Romanian `ro`, Russian `ru`
- Slovak `sk`, Spanish `es`, Swedish `sv`, Thai `th`, Turkish `tr`, Ukrainian `uk`, Vietnamese `vi`

### Input Example

```json
{
  "urls": [
    "https://www.instagram.com/reel/example/",
    "https://www.tiktok.com/@user/video/123"
  ],
  "include_timestamps": true,
  "enable_diarization": false,
  "language": "auto"
}
```

All fields except `urls` are optional. `include_timestamps` defaults to `true`, `enable_diarization` to `false`, and `language` to `"auto"` (auto-detect).

### Output Example (Success)

```json
{
  "sourceUrl": "https://www.instagram.com/reel/example/",
  "videoId": "unique-video-id",
  "status": "success",
  "durationSec": 45.2,
  "transcript": "[0.00s - 2.50s] Welcome to my channel! [2.50s - 8.10s] Today I'm going to show you how to make the perfect pasta dish.",
  "detected_language": "en",
  "speakers_detected": null,
  "timestamp": "2024-01-01T12:00:00.000Z"
}
```

> With `include_timestamps: false`, the transcript is plain text without the `[start - end]` markers. With `enable_diarization: true`, lines are labeled `[Speaker 0] ...` and `speakers_detected` reports the speaker count.

### Output Example (Failed)

```json
{
  "sourceUrl": "https://www.instagram.com/reel/private/",
  "videoId": "unique-video-id",
  "status": "failed",
  "error": "Failed to download video (video may be private or restricted)",
  "timestamp": "2024-01-01T12:00:00.000Z"
}
```

#### Output Fields

- **sourceUrl**: Original video URL
- **videoId**: Unique identifier for the video
- **status**: "success" or "failed"
- **durationSec**: Video duration in seconds (only for success)
- **transcript**: Transcribed text with `[start - end]` timestamps and/or `[Speaker N]` labels when those options are enabled (only for success)
- **detected_language**: BCP-47 code for the detected language (only for success)
- **speakers_detected**: Number of distinct speakers (only when diarization is enabled; otherwise `null`)
- **error**: Error message (only for failed outputs)
- **timestamp**: Processing time

### How to Run on Apify

1. Open the actor on Apify and click **Try actor**.
2. Add one or more public video URLs in **Video URLs** (`urls`). Optionally toggle timestamps, speaker diarization, or pick a language. Private/restricted videos will fail.
3. Start the run. When it finishes, check the **Dataset** tab for the transcripts.

#### Input Schema

- `urls` (string\[]): public video URLs to process (one or many).
- `include_timestamps` (boolean, default `true`): add `[start - end]` markers to each line.
- `enable_diarization` (boolean, default `false`): label different speakers.
- `language` (string, default `"auto"`): spoken language, or auto-detect.
- `start_urls` (string): **deprecated** single-URL field, kept for backward compatibility. Ignored when `urls` is provided.

#### Output Location

- Results are saved to the run’s **Dataset** in JSON items matching the examples below.

### Usage Limits

- **Free tier:** 5 videos total, across all runs. Only successfully transcribed videos count; failed videos don't use up your quota. If a run has more URLs than you have left, the first ones are processed and the rest are returned as failed with `errorCode: "FREE_LIMIT_REACHED"`. Upgrade to continue.
- **Paid plans:** Unlimited videos per Apify limits.

> Transcribing more than 5 videos requires an Apify paid plan. See [Apify Pricing](https://apify.com/pricing?fpr=maxknj).

### Pricing

This actor uses Apify's pay-per-event model. You are charged for two things: each video processed (**Videos Transcribed**) and each second of video transcribed (**Seconds of Video Transcribed**). Platform usage (compute, storage, proxies) is free, so there are no separate infrastructure charges on top of the rates below.

Prices are per 1,000 units, as on the Apify pricing table, with the single-unit price in brackets:

| Event | Free | Starter (Bronze) | Scale (Silver) | Business (Gold) |
|---|---|---|---|---|
| **Seconds of Video Transcribed** (per 1,000 seconds) | $1.80 ($0.0018/s) | $1.50 ($0.0015/s) | $1.20 ($0.0012/s) | $1.00 ($0.0010/s) |
| **Videos Transcribed** (per 1,000 videos) | $8.00 ($0.008/video) | $5.00 ($0.005/video) | $5.00 ($0.005/video) | $5.00 ($0.005/video) |
| **Platform usage** | Free | Free | Free | Free |

Higher Apify plans get an automatic discount, so a Business plan (Gold tier) pays 44% less per second of video than Free.

```
total = (Videos Transcribed rate × number of videos) + (Seconds of Video Transcribed rate × total seconds of video)
```

Two details that matter:

- **Videos Transcribed is charged per successful video, not per run.** A single run with 10 URLs that all succeed is charged 10 Videos Transcribed events. Bulk runs do not amortize this fee.
- **Length is rounded to the nearest second**, measured from the video's audio track. A 30.4 second video bills as 30 seconds. A video that rounds to 0 seconds is not charged any Seconds of Video Transcribed.

Example, 5 videos of 30 seconds each on the Free tier: (5 × $0.008) + (150 × $0.0018) = **$0.31**.

**Failed videos are free.** A video that cannot be downloaded (private, removed, geo-blocked, or blocked by anti-bot measures) or cannot be transcribed is not charged at all: no Videos Transcribed fee and no Seconds of Video Transcribed. You only pay for videos that return a transcript (`"status": "success"`).

***

### More tools from TicTech

Building a full social research stack? Pair this Transcriber with our other public Actors:

| Need | Actor |
| --- | --- |
| Download YouTube as MP4/MP3 | [YouTube Downloader](https://apify.com/tictechid/vanzi-youtube-downloader) |
| TikTok post / profile metadata | [TikTok Scraper](https://apify.com/tictechid/vanzi-tiktok-scraper) |
| Instagram posts & reels metadata | [Instagram Scraper](https://apify.com/tictechid/vanzi-instagram-scraper) |
| Transcribe X / Twitter videos | [X Video Transcriber](https://apify.com/tictechid/vanzi-x-transcriber) |
| TikTok Shop products (US + SE Asia) | [TikTok Shop Scraper](https://apify.com/tictechid/vanzi-tiktok-shop) |
| Google Ads creatives & brand watch | [Google Ads Transparency](https://apify.com/tictechid/vanzi-google-ads-transparency) |
| Bluesky posts, threads & search | [Bluesky Scraper](https://apify.com/tictechid/vanzi-bluesky-scraper) |

> Tip: scrape the post/reel first, then pass the video URL into this Transcriber for captions and searchable text.

All Actors: [apify.com/tictechid](https://apify.com/tictechid) · contact@tictech.id

For more details, contact the maintainer or email us at contact@tictech.id

# Actor input Schema

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

Instagram Reels, TikTok, YouTube Shorts, or Facebook Reels links. Add one or many for bulk transcription.

## `include_timestamps` (type: `boolean`):

Include \[start - end] timestamps in the transcript output. No effect on cost.

## `enable_diarization` (type: `boolean`):

Identify and label different speakers (\[Speaker 0], \[Speaker 1], ...). Useful for interviews and podcasts; leave off for single-speaker videos. No effect on cost.

## `language` (type: `string`):

Spoken language of the audio. Leave on Auto-detect unless detection is unreliable.

## `start_urls` (type: `string`):

Deprecated — kept only for backward compatibility with older API integrations. Use the Video URLs field above instead, which supports one or many links.

## Actor input object example

```json
{
  "urls": [
    "https://www.instagram.com/reel/DMflZnXOKUj"
  ],
  "include_timestamps": true,
  "enable_diarization": false,
  "language": "auto"
}
```

# Actor output Schema

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

// Run the Actor and wait for it to finish
const run = await client.actor("tictechid/anoxvanzi-transcriber").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/DMflZnXOKUj"] }

# Run the Actor and wait for it to finish
run = client.actor("tictechid/anoxvanzi-transcriber").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/DMflZnXOKUj"
  ]
}' |
apify call tictechid/anoxvanzi-transcriber --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tictechid/anoxvanzi-transcriber"
        }
    }
}
```

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/CVQmx5Se22zxPaWc1/builds/uHNczaFFIkHubNAER/openapi.json
