# Speech to Text API - Audio, Video & Podcast Transcription (`sndzcc/speech-to-text`) Actor

Transcribe audio, video and podcast episodes to text with Whisper AI, in 99 languages. Get clean text, timestamps and SRT/VTT subtitles, or translate to English. Pay per audio minute.

- **URL**: https://apify.com/sndzcc/speech-to-text.md
- **Developed by:** [Sndz Data](https://apify.com/sndzcc) (community)
- **Categories:** AI, Videos
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 audio minutes

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

## Speech to Text API: Audio, Video & Podcast Transcription

Turn **audio, video and podcast episodes into text** with **Whisper AI**, in **99 languages**. Paste links to files, podcast feeds or Apple Podcasts pages and get back a clean transcript, **timestamps**, **SRT and VTT subtitles**, the detected language, and optionally an **English translation**.

No API key, no OpenAI account, no subscription: **pay per audio minute**.

### Why this one?

- **Podcasts built in.** Paste a podcast RSS feed or an Apple Podcasts link and it finds the newest episodes for you, with title, show and date.
- **Subtitles ready to use.** SRT, VTT and TXT files for every transcript, with download links.
- **99 languages, detected automatically,** or translated to English in the same run.
- **Video too.** The audio track is taken from MP4, MOV, WebM, MKV and more.
- **You stay in control of the cost.** A per-file minute cap and the run's spending limit are respected, and files that fail are free.
- **Private.** Files are deleted after transcription and never used for training.

### Use cases

- **Podcasters and media:** show notes, blog posts, quotes and searchable archives of every episode.
- **Video creators:** subtitles for YouTube, Reels and TikTok uploads from your own files.
- **AI pipelines:** feed transcripts to ChatGPT, Claude or your RAG system to summarize, tag or answer questions.
- **Sales and support:** transcribe call recordings to review objections and quality.
- **Research and journalism:** interviews, lectures, hearings and focus groups as text.
- **Market monitoring:** track what is said about your brand or sector in podcasts every week.

### Input

| Field | What it does |
|---|---|
| **Audio, video or podcast links** | Direct file links, podcast RSS feeds, Apple Podcasts links, Dropbox or Google Drive share links, or pages with an audio player. |
| **Quality** | Fast (Whisper base) or Accurate (Whisper small). |
| **Spoken language** | Auto-detect, or pick it to make short clips more reliable. |
| **Translate to English** | Output English whatever language is spoken. |
| **Episodes per podcast** | How many of the newest episodes of each feed to transcribe. |
| **Only episodes published since** | Optional date filter for feeds. |
| **Max minutes per file** | Cap per file, so a 5-hour recording doesn't surprise you. |
| **Names and terms** | Brands, names and jargon so Whisper spells them right. |

```json
{
  "urls": [
    "https://feeds.npr.org/510289/podcast.xml",
    "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
    "https://example.com/interview.mp3"
  ],
  "maxEpisodesPerFeed": 3,
  "quality": "fast",
  "language": "auto"
}
```

### Output

One row per file:

```json
{
  "title": "Politicians are afraid to fix taxes. So 100 citizens tried.",
  "podcast": "Planet Money",
  "publishedAt": "2026-10-28T12:57:50Z",
  "language": "en",
  "durationSec": 2059.9,
  "minutesCharged": 35,
  "words": 5480,
  "text": "This is Planet Money from NPR...",
  "segments": [{"start": 0.0, "end": 4.96, "text": "This is Planet Money from NPR."}],
  "srtUrl": "https://api.apify.com/v2/key-value-stores/.../records/001-Politicians-are-afraid.srt",
  "vttUrl": "https://api.apify.com/v2/key-value-stores/.../records/001-Politicians-are-afraid.vtt",
  "txtUrl": "https://api.apify.com/v2/key-value-stores/.../records/001-Politicians-are-afraid.txt",
  "model": "whisper-base",
  "mediaUrl": "https://.../episode.mp3"
}
```

Links that can't be transcribed are skipped (not charged) and listed in the `FAILED_URLS` record.

### Good to know

- Charged per started minute of audio actually transcribed. Silence at the start and end still counts as audio.
- Speakers are not labeled (no diarization).
- Very noisy audio, music and overlapping speakers lower accuracy; Accurate quality helps.
- Speech recognition: OpenAI Whisper (MIT license) running on faster-whisper.

### Integrations

Schedule it daily on a podcast feed with **Only episodes published since** and send new transcripts to Google Sheets, Notion, Slack, Make, Zapier or n8n.

### How to use it

1. Click **Try for free** (or **Start**) at the top of this page.
2. Fill in the input, or keep the example to see it working in seconds.
3. Click **Start** and wait for the run to finish.
4. Download the results as **Excel, CSV, JSON or HTML**, or get them through the Apify API.

### How much does it cost?

**$0.005 per audio minute** ($5.00 per 1,000). No start fee, no monthly fee, and only the minutes actually transcribed are charged. That is Fast quality, cheaper than the OpenAI Whisper API; Accurate quality is $0.01 per minute.

| Example | Cost |
|---|---|
| A 1-hour podcast episode | about $0.30 |
| A 10-minute video with subtitles | about $0.05 |
| 100 sales calls of 5 minutes | about $2.50 |

Apify's free plan includes monthly credit, so you can try it for free.

### FAQ

**Which files and links work?**

MP3, M4A, WAV, FLAC, OGG, Opus, MP4, MOV, WebM, MKV and more, by direct link, plus podcast RSS feeds, Apple Podcasts links, Dropbox and Google Drive share links and web pages with an audio player.

**Does it work with YouTube, TikTok or Spotify?**

No. Those sites block automated downloads. Use a direct link to the file, the podcast RSS feed or its Apple Podcasts page instead.

**Which languages are supported?**

The 99 languages of Whisper, detected automatically, including English, Spanish, French, German, Portuguese, Italian, Chinese, Japanese, Arabic and Hindi. It can also translate any of them to English.

**Fast or Accurate?**

Fast (Whisper base) is great for clear speech and English. Accurate (Whisper small) is better for other languages, accents, noise and jargon.

**Can I get subtitles?**

Yes. Every transcript comes with timestamped segments and download links for SRT, VTT and TXT files.

**Is my audio stored or used for training?**

No. Files are downloaded to the run, transcribed and deleted. Only the transcript is saved, in your own Apify storage.

### More tools from Sndz Data

- [BORME Scraper API - Spain New Company Leads Daily](https://apify.com/sndzcc/borme-spain-companies): every new company registered in Spain, daily
- [App Store & Google Play Reviews Scraper API](https://apify.com/sndzcc/app-reviews-scraper): App Store and Google Play reviews in one run
- [Job Scraper API - Greenhouse, Lever, Ashby & Workable](https://apify.com/sndzcc/ats-jobs-scraper): all open jobs from Greenhouse, Lever, Ashby and more
- [Google News Scraper API - Articles with Real URLs](https://apify.com/sndzcc/google-news-scraper): news by keyword or topic, with real article URLs
- [Email & Contact Scraper API - Emails, Phones & Socials](https://apify.com/sndzcc/contact-details-scraper): emails, phones and social profiles from any website
- [Telegram Scraper API - Channel Posts, Views & Media](https://apify.com/sndzcc/telegram-channel-scraper): posts, views and media from public Telegram channels
- [Brand Monitoring API - Mentions Radar for News & Reddit](https://apify.com/sndzcc/brand-mentions-radar): brand mentions across 9 sources, with sentiment
- [AI Image Upscaler API - Upscale & Enhance Photos 4x](https://apify.com/sndzcc/ai-image-upscaler): upscale and enhance photos 4x with AI
- [Keyword Research API - Google, YouTube & Amazon Ideas](https://apify.com/sndzcc/keyword-ideas-machine): hundreds of keyword ideas from 5 search engines
- [Tech Stack Detector API - Wappalyzer & BuiltWith Alternative](https://apify.com/sndzcc/tech-stack-detector): the technologies behind any website, in bulk
- [Polymarket & Kalshi API - Prediction Market Odds](https://apify.com/sndzcc/prediction-markets-scraper): live odds from Polymarket and Kalshi in one dataset
- [WHOIS & Domain Lookup API - DNS, SSL & Availability](https://apify.com/sndzcc/domain-intel): WHOIS, availability, DNS and SSL for any list of domains
- [Bluesky Scraper API - Posts, Profiles & Followers](https://apify.com/sndzcc/bluesky-scraper): posts, profiles and followers from Bluesky, no login
- [SEO Audit API - Broken Links, Meta Tags & Site Crawler](https://apify.com/sndzcc/seo-audit): SEO audit and broken link checker for any website
- [OCR API - Image & PDF to Text Extractor, 100+ Languages](https://apify.com/sndzcc/image-pdf-to-text): text from images and scanned PDFs, 100+ languages

### Support

Need speaker labels, another format or a site that doesn't work? Open an issue on the **Issues** tab.

If this Actor saves you time, a quick ⭐ review helps a lot and keeps it maintained. Thank you!

# Actor input Schema

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

One per line: direct links to audio or video files (MP3, M4A, WAV, FLAC, OGG, MP4, MOV, WebM...), podcast RSS feeds, Apple Podcasts show or episode links, Dropbox or Google Drive share links, or web pages with an audio player. YouTube, TikTok, Instagram and Spotify links are not supported.

## `quality` (type: `string`):

Fast (Whisper base) is great for clear speech, podcasts and English. Accurate (Whisper small) is better for other languages, accents, noise and jargon, and costs more per minute.

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

Leave on auto-detect, or pick the language to make it faster and more reliable on short clips.

## `translateToEnglish` (type: `boolean`):

Output the transcript in English, whatever language is spoken.

## `maxEpisodesPerFeed` (type: `integer`):

For podcast feeds and Apple Podcasts show links: how many of the newest episodes to transcribe.

## `episodesSince` (type: `string`):

Optional date (YYYY-MM-DD) for podcast feeds.

## `maxMinutesPerFile` (type: `integer`):

Transcribe at most this many minutes of each file (from the start). Protects you from paying for very long files by mistake.

## `vocabulary` (type: `string`):

Names, brands or jargon that appear in the audio, comma separated, so Whisper spells them right. Example: Apify, Kubernetes, María Pérez.

## `saveSubtitleFiles` (type: `boolean`):

Also save each transcript as SRT and VTT subtitles and a TXT file, with download links in the results.

## Actor input object example

```json
{
  "urls": [
    "https://github.com/openai/whisper/raw/main/tests/jfk.flac"
  ],
  "quality": "fast",
  "language": "auto",
  "translateToEnglish": false,
  "maxEpisodesPerFeed": 1,
  "maxMinutesPerFile": 120,
  "saveSubtitleFiles": true
}
```

# Actor output Schema

## `overview` (type: `string`):

One row per audio or video file: transcript, language, duration and subtitle links.

## `allData` (type: `string`):

Every field, including timestamped segments.

# 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://github.com/openai/whisper/raw/main/tests/jfk.flac"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sndzcc/speech-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 = { "urls": ["https://github.com/openai/whisper/raw/main/tests/jfk.flac"] }

# Run the Actor and wait for it to finish
run = client.actor("sndzcc/speech-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 '{
  "urls": [
    "https://github.com/openai/whisper/raw/main/tests/jfk.flac"
  ]
}' |
apify call sndzcc/speech-to-text --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sndzcc/speech-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/ZoACZwqhF510vpUMd/builds/J2XtnnCaaEpOpJWyv/openapi.json
