SocialTap API

Public social media data through one API key and one JSON schema.

SocialTap returns public social media data (transcripts today; profiles, posts and comments next) from every major platform through one API key, one credit balance and one response schema per resource.

Get started Open the playground Pricing

What you can fetch

Every cell is a live endpoint. Each column returns the same JSON schema on every platform.

Coming soon

Schema previews for resources without an endpoint yet. They may change before the first endpoint ships.

How it works

  1. One API key

    Send it in the x-api-key header on every request, for every platform.

    Authentication
  2. One schema per resource

    Transcripts look the same whichever platform they come from. Learn a schema once.

    Transcript schema
  3. Pay per success

    Prepaid credits, one balance. Failed requests are free. Cache hits are free.

    Credits

A request in seconds

Returns the timed transcript of a public YouTube video, short or live replay: the creator's manual captions when they exist, otherwise YouTube's auto-generated track, in the language you ask for. Videos without any caption track are transcribed from their audio with speech-to-text. Accepts every YouTube URL form (watch, youtu.be, shorts, live, embed, music.) or a bare 11-character video ID.

YouTube Transcript API reference · Try it

cURL
curl -G 'https://staging.socialtap.dev/v1/youtube/transcript' \
  --data-urlencode 'url=https://www.youtube.com/watch?v=dQw4w9WgXcQ' \
  -H "x-api-key: $SOCIALTAP_API_KEY"
JavaScript
const params = new URLSearchParams({
  url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
});
const res = await fetch(`https://staging.socialtap.dev/v1/youtube/transcript?${params}`, {
  headers: { "x-api-key": process.env.SOCIALTAP_API_KEY },
});
const { data, meta } = await res.json();
Python
import os
import requests

res = requests.get(
    "https://staging.socialtap.dev/v1/youtube/transcript",
    params={"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"},
    headers={"x-api-key": os.environ["SOCIALTAP_API_KEY"]},
)
body = res.json()
data, meta = body["data"], body["meta"]
Response
{
  "data": {
    "available_languages": [
      "en",
      "de-DE",
      "ja"
    ],
    "duration_ms": 213000,
    "id": "dQw4w9WgXcQ",
    "is_auto_generated": false,
    "language": "en",
    "platform": "youtube",
    "segments": [
      {
        "end_ms": 3040,
        "start_ms": 1360,
        "text": "[♪♪♪]"
      },
      {
        "end_ms": 21880,
        "start_ms": 18640,
        "text": "♪ We're no strangers to love ♪"
      },
      {
        "end_ms": 26960,
        "start_ms": 22640,
        "text": "♪ You know the rules and so do I ♪"
      }
    ],
    "source": "captions",
    "text": "[♪♪♪] ♪ We're no strangers to love ♪ ♪ You know the rules and so do I ♪ ♪ A full commitment's what I'm thinking of ♪ ♪ You wouldn't get this from any other guy ♪ ♪ I just wanna tell you how I'm feeling ♪ ♪ Gotta make you understand ♪ ♪ Never gonna give you up ♪ ♪ Never gonna let …",
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  },
  "meta": {
    "request_id": "req_3f9c2a7d1e8b4c6a9f0e2d4b6a8c0e1f",
    "platform": "youtube",
    "source": "captions",
    "is_cached": false,
    "credits_charged": 1,
    "latency_ms": 511,
    "fetched_at": "2026-10-25T12:00:00Z"
  }
}

Long arrays and strings are shortened for display.

Measured, not promised

Median latency (p50)
1,580 ms
p95 latency
4,013 ms
Success rate
94.5%
Requests measured
220

Request-weighted averages across endpoints.

Staging measurements, not production. Measured on our staging environment, over the 7 days before 2026-10-25. How it is measured.

Simple, prepaid pricing

Requests start at 1 credit. Buy credits in packs; bigger packs cost less per credit.

  • Failed requests are free: errors cost 0 credits.
  • Cache hits are free: responses served from the cache cost 0 credits.
  • Credits never expire.
  • One credit balance for every endpoint and platform.

See all prices

CreditsPricePer 1,000 credits
25,000$20$0.80
100,000$70$0.70
500,000$300$0.60
2,000,000$1,000$0.50