Media URL Transcriber
Pricing
from $4.25 / 1,000 media minute transcribeds
Media URL Transcriber
Transcribe direct audio and video file links on your own Deepgram, AssemblyAI, Groq, or OpenAI key. One row per file with text, timestamps, and speakers. You pay your provider directly and this actor per minute.
Pricing
from $4.25 / 1,000 media minute transcribeds
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Security
Limited permissionsShare
Give direct links to audio or video files and your own speech to text API key. You get one row per file with the transcript, timestamped segments, language, and duration. You pay your provider directly at its own price, and you pay this actor per minute of media. Mamba Labs pays the platform costs of the run.
Features
- Four providers on your own key: Deepgram, AssemblyAI, Groq, and OpenAI.
- Timestamped segments on every provider, and speaker labels on Deepgram and AssemblyAI.
- Language detection, or set the language yourself.
- A run with no key checks up to 3 links and transcribes nothing, for free.
- Refused, failed, and silent files are free.
How the data is read
The actor makes one small request to each link to confirm that it serves a media file, with no proxy and no browser. It then sends the link to your provider. Deepgram, AssemblyAI, and Groq read the file from the link themselves. OpenAI takes no links, so for OpenAI the actor downloads the file and uploads it, up to 25 MB. It calls no other developer's actor.
Your key is stored encrypted by Apify, sent only to the provider you chose, and never written to a row or a log. Links are logged by host only, because a signed link carries its own credentials.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
media_urls | array | Direct links to audio or video files (mp3, wav, m4a, mp4, and others) that answer without a login. Platform pages such as YouTube, TikTok, Instagram, Vimeo, or Spotify are refused with a free row. In Clay, put the column inside a one item list. | |
provider | string | deepgram | Whose API transcribes the file, on your key: deepgram (default), assemblyai, groq, or openai. openai takes files up to 25 MB; the others read the URL. |
api_key | string | Your own key for the provider above. It is stored encrypted by Apify, sent only to that provider, and never written to a row or a log. With no key the run checks up to 3 files and transcribes nothing, for free. | |
model | string | Optional. The provider's model name. Defaults: deepgram nova-3, assemblyai its own default, groq whisper-large-v3-turbo, openai whisper-1 (the only one accepted there). | |
language | string | Optional. A language code such as en or de. Empty lets deepgram and assemblyai detect it; whisper models detect it on their own. | |
diarize | string | no | yes or no (default no). Labels who spoke each segment. deepgram and assemblyai only; your provider may bill it as an add on. |
include_segments | string | yes | yes (default) or no. Adds a list of segments with start and end seconds to each row. |
max_charge_usd | string | Optional. No new file starts once this is used up. A transcript your provider already billed is still delivered, charged up to this amount, and the run then stops. It limits this actor's charge, not your provider's bill. |
Output
| Field | Type | What it holds |
|---|---|---|
row_type | string | One of: transcript, run_summary. run_summary is the one free row written when the input is refused. |
media_url | string | The file address you gave. |
provider | string | The speech to text provider used, on your key. |
model | string | The model the provider used. |
language | string | Language given or detected by the provider. |
duration_seconds | number | Media length as the provider reports it. |
billed_minutes | integer | Minutes charged for this row, rounded up per file, 0 when free. |
text | string | The full transcript. |
segments | array | Timestamped segments: start and end in seconds, text, and speaker when labels are on. |
word_count | integer | Words in the transcript. |
speaker_count | integer | Distinct speakers, when speaker labels are on. |
provider_job_id | string | The provider's ID for this job, for finding it in your provider account. |
content_type | string | What the file address says it serves. |
file_bytes | integer | File size the address reports. |
row_status | string | ok, or why this row carries no data: no_results, no_change, partial, blocked, or error. |
error_reason | string | Why the row is not ok. A refused input reads input_invalid: followed by what to fix. |
billable_events_json | string | What this row was billed as, for example {"media-minute":1}. {} means free. |
scraped_at | string | When the row was written, UTC. |
Pricing
Pay per event. Refused, failed, and silent files, media checks with no key, and a refused input are free. Minutes are rounded up per file, from the duration your provider reports. Your provider bills you separately, so a full cost is this price plus your provider's price. apify-actor-start is the start event.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
media-minute, one minute of media transcribed, rounded up per file | $0.005 | $0.00475 | $0.0045 | $0.00425 |
apify-actor-start, once per run (one per GB of memory; the default 256 MB is one) | $0.003 | $0.003 | $0.003 | $0.003 |
Per 1,000 rows of media-minute: $5.00 on the free plan, $4.25 on Gold.
Free plan cap: 1.50 USD of evaluation a month, about 300 rows. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your max_charge_usd input.
Mamba Labs pays the platform costs of your run, Apify proxy traffic included.
Usage examples
Clay. Number and on or off inputs are text fields, which is what Clay sends. A list input takes a JSON list, so put the column inside a one item list.
MCP. The Mamba Labs MCP server @mambalabsdev/mcp-media-url-transcriber exposes this actor to Claude and other MCP clients.
Error handling
| Case | What you get |
|---|---|
| Missing or unreadable input | One free row, row_type run_summary, error_reason starting input_invalid: with what to fix. The run ends successfully and charges nothing but the run start |
| A platform page or private address | One free row, error_reason starting url_refused: |
| A link that is missing, needs a login, or serves a web page | One free row, error_reason starting media_refused:, with no provider call |
| No key given | One free row for each of the first 3 files, error_reason starting no_key:, with what the link serves |
| The provider refuses your key, or the account has no credit | One free row, error_reason starting key_refused: or quota:, and the run stops so the rest of the list is not attempted |
| The provider rate limits you or fails | The call is tried 3 times, then one free row, and the run moves to the next file |
| No words in the file | One free row, error_reason starting no_speech:. Your provider may still bill you for it |
max_charge_usd is used up | No new file starts: one free row, error_reason starting not_sent:, says so. A transcript your provider has already billed is delivered, charged up to the cap, and the run stops |
| The run is close to its timeout | The actor stops starting new work 90 seconds before the timeout and delivers what it has. An AssemblyAI job still running comes back as a free row with its job ID, so you can fetch it from your account |
Limitations
- This has not been run with a live key. Mamba Labs holds no key for this actor to use. Fixtures shaped from each provider's documentation and the refused key path, tested live against all 4 providers, are the test. The first buyer's key is the live test, so start with one short file.
- Direct file links only. YouTube, TikTok, Instagram, Facebook, X, Vimeo, Loom, Spotify, SoundCloud, Twitch, LinkedIn, Reddit, Rumble, Dailymotion, and Apple Podcasts pages are refused, along with their media hosts. Podcast feeds are not expanded: give the episode file links.
- Transcribe only media you have the right to transcribe. The provider's terms apply to your use of your key.
- Files must answer without a login. A signed link works if it is still valid when the provider reads it.
- OpenAI accepts files up to 25 MB and only the whisper-1 model here. Groq's own file limit is 25 MB on its free tier and 100 MB on its dev tier.
- Speaker labels work on Deepgram and AssemblyAI only, and providers can bill them as an add on.
- Files run one at a time. A long list can reach the run's timeout, so raise it for long files.
- A restart of the run during a Deepgram, Groq, or OpenAI request sends that file again, which your provider can bill twice. AssemblyAI jobs resume by job ID.
max_charge_usdlimits this actor's charge, not your provider's bill. Set a budget in your provider account too.- If a provider reports no duration, the file bills 1 minute and the row says so.
Mamba Labs actor suite
Built by Mamba Labs.