# Video To Text (`truefetch/video-to-text`) Actor

Video To Text turns one public video URL or media upload up to 8 GB into readable text for notes, captions, interviews, and content reuse. Results include language detection, ordered timestamps, source details, and optional translation into 133 languages. A completed transcript starts at $0.468.

- **URL**: https://apify.com/truefetch/video-to-text.md
- **Developed by:** [TrueFetch](https://apify.com/truefetch) (community)
- **Categories:** Videos, Automation, Integrations
- **Stats:** 317 total users, 8 monthly users, 100.0% runs succeeded, 14 bookmarks
- **User rating**: 4.99 out of 5 stars

## Pricing

from $0.468 / transcript

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

**Video To Text is a video to text converter api that converts a public video URL from a supported source or an authorized media upload into detected-language text, ordered timestamps, source metadata, and optional translation for data and automation workflows.**

- **One successful input writes one Dataset item with 22 top-level fields.**
- **The transcript contains full text and ordered `start`, `end`, and `text` segments.**
- **The optional translation selector exposes 133 target languages.**
- **The public candidate completed in 19.503 seconds on August 12, 2026 and produced one Dataset item.**

[**Run a one-result test**](https://apify.com/truefetch/video-to-text) · [**View API**](https://apify.com/truefetch/video-to-text/api)

Start with `https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ` and no translation to test the smallest path. The FREE-tier fixed events are $0.53 for one transcript plus a 1 GB start, followed by metered Actor usage.

### What does Video To Text do?

Video To Text downloads the accessible media behind a public video URL from a supported source or an authorized media upload, recognizes its speech, and publishes one normalized record with source context and timestamped text. Use one normalized transcript shape across supported public video sources or an authorized uploaded media file.

The result keeps recognition in `transcript` and, when requested, a second aligned object in `translation`. Each object contains a language label, combined text, and ordered segments. Source metadata can include title, description, author, duration, thumbnail, publication time, audio attribution, taxonomy, and engagement counts when the page exposes them.

This Actor does not search supported public video, open private content, label speakers, read text drawn inside video frames, create a video download product, or decide whether you have legal rights to use the media. [YouTube's official sharing help](https://support.google.com/youtube/answer/57741?hl=en) describes the source's own sharing or media behavior.

### How do I run Video To Text?

Run Video To Text with one public media item and inspect the single Dataset row before scheduling a larger workflow.

1. Open the [Actor input](https://console.apify.com/actors/truefetch~video-to-text/input) and paste `https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ` into `video_url`.
2. Leave `translate` empty for the original detected language, or choose `spanish` to reproduce this page's translated scenario.
3. Provide `video_url` or `video_file`; the uploaded file wins when both are present.
4. Start the Actor and wait for a terminal status.
5. Open the default Dataset and confirm that `transcript.text` and `transcript.segments` match the source audio.

```json
{
  "video_url": "https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ",
  "translate": "spanish"
}
```

The billing unit is one completed transcript row. A failed source retrieval or silent-media path writes no result row and therefore does not represent a successful transcript event.

### What data does Video To Text return?

Video To Text returns one 22-field Dataset item combining processing details, source metadata, engagement values, recognized speech, and optional translation.

| Data group | Fields |
| --- | --- |
| Processing | `processor`, `processed_at`, `platform` |
| Source identity | `title`, `description`, `author`, `author_id`, `author_url`, `duration`, `published_at`, `thumbnail` |
| Audio and taxonomy | `audio_title`, `audio_artist`, `categories`, `tags` |
| Engagement | `view_count`, `like_count`, `shares_count`, `dislike_count`, `comment_count` |
| Speech | `transcript`, `translation` |

The item below is abbreviated to show the nested speech shape. A successful real item retains all 22 top-level fields and all returned segments.

```json
{
  "platform": "supported public video",
  "title": "Source title when available",
  "author": "Source creator when available",
  "duration": 24.4,
  "transcript": {
    "language": "English",
    "text": "Abbreviated recognized speech.",
    "segments": [
      {
        "start": "00:00:00.000",
        "end": "00:00:02.400",
        "text": "Abbreviated recognized speech."
      }
    ]
  },
  "translation": {
    "language": "Spanish",
    "text": "Traducción abreviada.",
    "segments": [
      {
        "start": "00:00:00.000",
        "end": "00:00:02.400",
        "text": "Traducción abreviada."
      }
    ]
  }
}
```

Unavailable source values remain null rather than being converted to zero or guessed. The Dataset is exportable in Apify-supported formats; JSON preserves the nested transcript and translation structures most directly.

### What inputs can I configure?

Video To Text exposes 3 inputs in schema order, with one URL requirement and one optional translation selector plus an upload alternative.

| Parameter | Type | Required | Description | Example |
| --- | --- | --- | --- | --- |
| `video_url` | `string` | No | One public media page URL in this Actor's documented scope. | `https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ` |
| `video_file` | `string` | No | An authorized audio or video file up to 8 GB; when supplied, it takes priority over `video_url`. | `Upload or direct media-file URL` |
| `translate` | `string` | No | Optional target language; the schema exposes 133 choices. | `spanish` |

`translate` is optional; omitting it does not imply English or any other target. The recognition path detects the source language, while a selected target asks for a separate translated object. Provide `video_url` or `video_file`; the uploaded file wins when both are present.

### What platforms and markets does Video To Text cover?

Video To Text covers a public video URL from a supported source or an authorized media upload rather than a country, market, account, feed, search page, or URL batch.

The platform-specific boundary makes integration tests clear: use a direct media item that a normal public visitor can open. Profiles, channel pages, playlists, searches, private shares, removed posts, credential-gated media, unrelated domains, and live pages without a retrievable recording are outside the input boundary.

Language coverage is separate from platform coverage. Speech recognition detects the source language, and `translate` offers 133 target choices. Source page availability, regional rules, and the clarity of the audio can still affect results.

### Why use Video To Text?

Use Video To Text when the workflow needs structured, time-addressable speech rather than manual playback or an unstructured text file.

| Capability | Workflow benefit |
| --- | --- |
| One public media URL per run | Small, reproducible jobs with a clear source identity |
| Ordered transcript segments | Search a phrase and return to the corresponding media time |
| 22 stable top-level fields | One downstream reader for speech and source context |
| 133 translation targets | Keep original recognition and translated text together |
| Apify Dataset and API | Export, schedule, webhook, or connect the result without managing storage |

The main trade-off is that transcription requires media retrieval and speech processing. It is heavier than reading source-supplied captions alone, and accuracy can decline with noise, music, accents, overlapping speakers, or specialized names.

### Who is Video To Text for?

Video To Text is for developers, data teams, researchers, accessibility workflows, and content operations that already know the public media URL they are authorized to process.

Developers can call one Actor and receive predictable JSON. Researchers can make spoken material searchable while retaining source metadata. Content teams can find quotes or draft notes from time-coded segments. Multilingual reviewers can compare `transcript` and `translation` without losing segment order. Use one normalized transcript shape across supported public video sources or an authorized uploaded media file.

It is not the right tool for private-content access, account automation, speaker diarization, video discovery, continuous live captioning, bulk URL search, subtitle-file editing, or rights clearance.

### How can I use Video To Text through the API or MCP?

Use public Actor ID `E9f5oS7cOn2Kgw0uy` or the readable name `truefetch/video-to-text` with the same one-item JSON used in Console.

```bash
curl -X POST "https://api.apify.com/v2/acts/E9f5oS7cOn2Kgw0uy/run-sync-get-dataset-items?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"video_url": "https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ", "translate": "spanish"}'
```

The synchronous endpoint is convenient for a short item. For longer media, start an asynchronous run, poll its status, and read the default Dataset after success. Keep the Apify token in an environment variable or secret store rather than source code.

For MCP, configure the [official Apify MCP endpoint](https://docs.apify.com/integrations/mcp) and expose `truefetch/video-to-text` as an Actor tool. The [live API page](https://apify.com/truefetch/video-to-text/api) provides generated examples for supported clients and the OpenAPI definition.

### How much does Video To Text cost?

On the FREE tier, one transcript is $0.52, the default 1 GB Actor Start is $0.01, and the smallest successful run has $0.53 in fixed events plus metered usage.

| Tier | Transcript | Translation | Actor Start | Actor usage |
| --- | ---: | ---: | ---: | ---: |
| FREE | $0.52 | $0.18 | $0.01 per GB, minimum one event | $0.00001 per usage event |
| BRONZE | $0.50267 | $0.174 | $0.01 per GB, minimum one event | $0.00001 per usage event |
| SILVER | $0.48533 | $0.168 | $0.01 per GB, minimum one event | $0.00001 per usage event |
| GOLD | $0.468 | $0.162 | $0.01 per GB, minimum one event | $0.00001 per usage event |
| PLATINUM | $0.468 | $0.162 | $0.01 per GB, minimum one event | $0.00001 per usage event |
| DIAMOND | $0.468 | $0.162 | $0.01 per GB, minimum one event | $0.00001 per usage event |

The Transcript event is charged for one completed recognized result. Translation adds $0.18 on the FREE tier when requested and completed. For the example with Spanish, the fixed-event total is $0.71 plus usage. Actor usage varies with media length, retrieval, and processing time. Confirm the [live pricing page](https://apify.com/truefetch/video-to-text/pricing) before relying on a rate because prices can change.

### How does Video To Text compare with alternatives?

Video To Text is the best fit when one known public supported public video item must become normalized JSON with timestamped speech and optional translation.

| Option | Best fit | Trade-off |
| --- | --- | --- |
| Video To Text | One public source URL, source metadata, and time-coded text | Requires a retrievable public media item and bills a run |
| Manual playback and typing | A very short, one-time review | Difficult to timestamp, repeat, schedule, or export consistently |
| The source's own caption or transcript feature | The source already exposes authorized text in the needed format | Availability and export shape depend on the source and media owner |
| A general file transcription category | You already possess an authorized local file | Source URL context and public-page metadata may be absent |

Choose the universal Video To Text edition when uploads or mixed supported sources matter. Choose this edition when supported public video scope is the acceptance criterion and unrelated URLs should fail early.

### What are the limits and troubleshooting steps?

The main limits are public access, source extraction, audio quality, media duration, and the one-item-per-run input shape.

- **No row is produced:** confirm `https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ` still opens publicly and contains playable media, then retry without `translate`.
- **A private or removed page fails:** make the media publicly accessible through the source's normal controls or use an authorized local file with the universal Actor; do not provide credentials.
- **Some metadata is null:** the source did not expose that value. Preserve null rather than treating it as zero.
- **Names or jargon are wrong:** compare the affected segment timestamp with the audio and correct the downstream text before publication.
- **Translation is absent:** first confirm that the original transcript succeeded, then retry one target. A partial translation is not attached.
- **A long item runs slowly:** start with the short candidate to isolate URL handling, then test representative duration and cost before automation.

For a reproducible report, open an [Actor Issue](https://apify.com/truefetch/video-to-text/issues) and include the run ID, exact public input, translation target, expected behavior, and the first relevant log line. Do not attach private media or secrets.

### Frequently asked questions

#### universal video to text api?

Yes for a supported public item: the Actor needs an Apify token, not a developer key for supported public video, and returns timestamped Dataset JSON.

#### bulk universal transcript export?

Run one Actor execution per URL, then export or combine Dataset items through your orchestrator. Each successful URL is its own transcript billing unit.

#### Does Video To Text return timestamps?

Yes. `transcript.segments` contains ordered `start`, `end`, and `text` values, and a completed translation follows the same order.

#### Can Video To Text process private content?

No. The Actor is for public or otherwise directly authorized media and does not accept account credentials to bypass source visibility.

#### Can I upload a file instead of a URL?

Yes. `video_file` accepts an authorized media upload or direct file URL up to 8 GB and takes priority over `video_url`.

#### Why are some values null?

Null means a source value was unavailable. It does not mean zero views, zero likes, or an empty creator identity.

#### Can I schedule the same media URL?

Yes. Apify schedules can repeat the input, but every execution is separately billed and source availability or metadata may change.

#### Does a translation replace the original transcript?

No. The original remains in `transcript`, while the requested language is stored separately in `translation` after all segments complete.

### Related TrueFetch Actors

The closest TrueFetch choices separate universal media input from platform-specific transcript boundaries.

- **[Instagram Video Transcript](https://apify.com/truefetch/instagram-video-transcript)** — a platform-specific transcript workflow
- **[Snapchat Video Transcript](https://apify.com/truefetch/snapchat-video-transcript)** — a platform-specific transcript workflow
- **[Linkedin Video Transcript](https://apify.com/truefetch/linkedin-video-transcript)** — a platform-specific transcript workflow

### Support

Ask about Video To Text, its input boundary, or Dataset fields in the [TrueFetch community on Telegram](https://t.me/TrueFetch). For a reproducible defect, use the Actor Issues page and include the run ID plus the exact non-sensitive input.

**Last Updated:** August 12, 2026

# Actor input Schema

## `video_url` (type: `string`):

Paste a public video URL to download and transcribe. Leave this empty when you only want to upload a file

## `video_file` (type: `string`):

Upload a video/audio file or provide a direct file URL. If both Video File and Video URL are provided, this file is used

## `translate` (type: `string`):

Optional target language for translating the transcript. Leave empty to return only the original transcript

## Actor input object example

```json
{
  "video_url": "https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ"
}
```

# Actor output Schema

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

Browse transcripts with timestamped subtitles, translations, and video metadata.

# 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 = {
    "video_url": "https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ"
};

// Run the Actor and wait for it to finish
const run = await client.actor("truefetch/video-to-text").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 = { "video_url": "https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ" }

# Run the Actor and wait for it to finish
run = client.actor("truefetch/video-to-text").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 '{
  "video_url": "https://kick.com/kick_clipz/clips/clip_01KZH2QVDSPYWHRPFK52475GZJ"
}' |
apify call truefetch/video-to-text --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,truefetch/video-to-text"
        }
    }
}

```

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/E9f5oS7cOn2Kgw0uy/builds/nIeZqFHhWdVpfhQMW/openapi.json
