Captapi
officialPublic social media data for AI agents: profiles, posts, comments, transcripts and search from TikTok, Instagram, YouTube, X, Facebook, Threads, Reddit and LinkedIn company pages, plus Meta, Google, LinkedIn and TikTok ad libraries.
What can you do with Captapi MCP?
- Transcripts and summaries — Ask for a transcript or AI summary of a public YouTube, TikTok, Instagram, Facebook, or Twitter video by URL.
- Profile and post lookups — Fetch details for a public profile, channel, page, post, or reel across supported platforms.
- Comments and replies — Retrieve comments on a post or video, plus replies to individual comments.
- Search across platforms — Search posts, users, hashtags, or subreddits on a given platform and get clean JSON results.
- Ad library data — Search Facebook, TikTok, Google, or LinkedIn ad libraries and pull ad details or ad copy.
- Cross-platform metrics — Get normalized views, likes, comments, shares, and engagement rate for one post or compare up to 10 URLs.
Hosted MCP Server
npx add-mcp 'https://api.captapi.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Introduction
Captapi gives you structured data from public social media through one consistent REST API. Send a public URL from YouTube, TikTok, Instagram, Facebook, and more and get back clean JSON — profiles, posts, transcripts, AI summaries, comments, search results, and ad-library data. No OAuth, no per-platform SDKs, no data-collection infrastructure to maintain.
- • One API key works across all 33 platforms.
- • Pass
cache=trueto serve from the 24h shared cache (0 credits on hit). Default is always fresh. - • You are only charged for successful requests.
Quickstart
After signing up and copying your API key from the dashboard, make your first request:
curl "https://api.captapi.com/v1/youtube/transcript?url=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ" \
-H "Authorization: Bearer capt_live_..."
Machine-readable: OpenAPI 3.1 spec (parameters, response schemas, errors, credit cost per endpoint), one-line endpoint list, and llms.txt.
Authentication
All requests are authenticated with a Bearer token. Generate keys in your dashboard and send them in the Authorization header. Keep keys secret — never expose capt_live_ keys in client-side code.
As an alternative to Authorization: Bearer, send the same key as x-api-key: <key>.
Authorization: Bearer capt_live_xxxxxxxxxxxxxxxxxxxx
Making Requests
Most endpoints take a url or q query parameter. Some need a different identifier instead — for example userId, username, repo, advertiser, or comment_id. Check each endpoint's docs for the exact params. When building a query string, you must URL-encode URL values so they aren't misinterpreted as multiple parameters.
# URL-encode the target URL before passing it
urlencode "https://youtube.com/watch?v=dQw4w9WgXcQ"
Response Format
Every response is JSON with a top-level success boolean and a data object.
Success
{
"success": true,
"data": {
"language": "en",
"segments": [
{ "start": 0.0, "end": 4.12, "text": "Hey everyone, welcome back." }
],
"text": "Hey everyone, welcome back."
}
}
Error
HTTP/1.1 502 Bad Gateway
Retry-After: 60
{
"success": false,
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The upstream data source failed for this request. Retry shortly.",
"retryable": true
}
}
Response headers. X-Captapi-Credits is the credits charged, X-Captapi-Cache is 1 on a cache hit and 0 otherwise, and X-Captapi-Request-Id identifies the call; include it when contacting support. Server-Timing gives the total time the request took in milliseconds, for example total;dur=4387.
The source field. Endpoints that can serve data more than one way include source in data: native (the platform's own page or API), extended (a slower fallback path; some endpoints price it differently and say so on their page), cache (served from the 24h cache), captions (a transcript from the platform's published captions) or asr (transcript produced by speech recognition).
Deprecated: the timings field. The timings object in data will be removed from response bodies on 2026-12-17. Read the Server-Timing response header instead.
Credits & Caching
Credits are the unit of billing. Cost is per endpoint (see each docs page) — typically 1–4 for simple lookups; many list/search/comment endpoints are a flat 2 credits per call, while some list endpoints still scale with results (often higher). Failed requests are never charged.
Empty results are free. A list or search call that ran but found nothing costs 0 credits, for example a search with no matches, a post with no comments, or a page past the last result. The X-Captapi-Credits response header always shows what a call actually cost.
A few endpoints cost more when a slower fallback path serves the call, for example when the platform's own page does not load. Their pages state the rule and the range we have observed: TikTok Song Details, LinkedIn Company Posts, and TikTok Shop Products.
By default every data request fetches fresh data (cache=false). Pass cache=true to serve from the shared 24h response cache at 0 credits.
Errors
Errors return a non-2xx status and an error object with a stable code, a human-readable message, and retryable. Retry only when retryable is true, after the Retry-After header. Failed requests are never charged. Match on code exactly: casing differs between codes. The table lists the common ones; endpoint pages list their specific codes.
| Status | Code | Retryable | Meaning |
|---|---|---|---|
| 400 | BAD_REQUEST | false | A parameter is missing or invalid, e.g. a URL from the wrong platform. Some endpoints use a more specific code, such as HASHTAG_HAS_SPACES. |
| 400 | plaintext_not_allowed | false | API key sent over http://. Rotate the key and retry with https:// — a redirect does not protect the first hop. |
| 401 | UNAUTHORIZED | false | Missing, invalid, or revoked API key. |
| 402 | insufficient_credits | false | Your balance is too low for this request. Nothing is charged. |
| 404 | NOT_FOUND | false | The target resource does not exist or is not public. Some endpoints name the case, e.g. no_captions or PROFILE_NOT_FOUND. |
| 422 | VALIDATION_ERROR | false | A parameter failed validation. error.issues lists each field. |
| 429 | rate_limit_exceeded | true | Over your plan's per-minute limit. Wait for Retry-After. |
| 502 | UPSTREAM_UNAVAILABLE | true | The platform failed for this request. Retry shortly. |
| 503 | SERVICE_UNAVAILABLE | true | Temporarily unavailable. Some endpoints use a more specific code, e.g. COMMUNITY_UNAVAILABLE. |
| 504 | UPSTREAM_TIMEOUT | true | The platform did not answer in time. Retry shortly. |
Rate Limits
Rate limits scale with your plan and are returned on every response via X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. When you exceed the limit you'll get a 429 — back off and retry after the reset window.
API Reference
179 endpoints across 36 groups. Click any endpoint for full parameters, examples, and FAQs.
YouTube & Shorts
TikTok
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/tiktok/transcript | 2 | Transcript |
| GET | /v1/tiktok/summarize | 4 | Summarizer |
| GET | /v1/tiktok/video-details | 1 | Video Details |
| GET | /v1/tiktok/comments | 2 | Comments |
| GET | /v1/tiktok/channel-details | 1 | Channel Details |
| GET | /v1/tiktok/profile-region | 2 | Profile Region |
| GET | /v1/tiktok/audience-demographics | 3 | Audience Demographics |
| GET | /v1/tiktok/search-suggestions | 2 | Search Suggestions |
| GET | /v1/tiktok/channel-posts | 2 | Channel Posts |
| GET | /v1/tiktok/comment-replies | 2 | Comment Replies |
| GET | /v1/tiktok/user-followers | 1 | User Followers |
| GET | /v1/tiktok/user-followings | 1 | User Followings |
| GET | /v1/tiktok/music-posts | 2 | Music Posts |
| GET | /v1/tiktok/top-search | 2 | Top Search |
| GET | /v1/tiktok/search/hashtag | ~14 | Search by Hashtag |
| GET | /v1/tiktok/search/users | 1 | Search Users |
| GET | /v1/tiktok/song-details | 1 | Song Details |
| GET | /v1/tiktok/trending-feed | 2 | Trending Feed |
| GET | /v1/tiktok/popular-hashtags | 2 | Popular Hashtags |
| GET | /v1/tiktok/popular-songs | 2 | Popular Songs |
| GET | /v1/tiktok/live | 1 | Live |
| GET | /v1/tiktok/live-info | 1 | Live Info |
| GET | /v1/tiktok/popular-creators | 2 | Popular Creators |
Instagram Reels
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/instagram/transcript | 2 | Transcript |
| GET | /v1/instagram/summarize | 4 | Summarizer |
| GET | /v1/instagram/details | 1 | Post & Reel Details |
| GET | /v1/instagram/comments | ~45 | Post Comments |
| GET | /v1/instagram/channel-details | 1 | Channel Details |
| GET | /v1/instagram/channel-posts | ~6 | Channel Posts |
| GET | /v1/instagram/channel-reels | ~6 | Channel Reels |
| GET | /v1/instagram/reels-search | 2 | Reels Search |
| GET | /v1/instagram/trending-reels | 2 | Trending Reels |
| GET | /v1/instagram/tagged-posts | 1 | Tagged Posts |
| GET | /v1/instagram/reels-by-audio-id | ~28 | Reels By Audio ID |
| GET | /v1/instagram/hashtag-search | 2 | Hashtag Search |
| GET | /v1/instagram/profile-search | 1 | Profile Search |
| GET | /v1/instagram/embed | 1 | Embed HTML |
| GET | /v1/instagram/highlights | 1 | Highlights |
| GET | /v1/instagram/highlights-details | 1 | Highlight Details |
| GET | /v1/instagram/basic-profile | 1 | Basic Profile |
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/facebook/details | 2 | Post & Reel Details |
| GET | /v1/facebook/summarize | 4 | Summarizer |
| GET | /v1/facebook/comments | 2 | Comments |
| GET | /v1/facebook/page-details | 2 | Page Details |
| GET | /v1/facebook/profile-posts | 2 | Profile Posts |
| GET | /v1/facebook/profile-reels | 2 | Profile Reels |
| GET | /v1/facebook/group-posts | ~20 | Group Posts |
| GET | /v1/facebook/comment-replies | 2 | Comment Replies |
| GET | /v1/facebook/profile-photos | 2 | Profile Photos |
Twitter / X
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/twitter/tweet-details | 1 | Tweet Details |
| GET | /v1/twitter/transcript | 1 | Transcript |
| GET | /v1/twitter/profile | 1 | Profile |
| GET | /v1/twitter/user-tweets | 2 | User Tweets |
| GET | /v1/twitter/community | 1 | Community |
| GET | /v1/twitter/community-tweets | 2 | Community Tweets |
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/reddit/subreddit-posts | 2 | Subreddit Posts |
| GET | /v1/reddit/post-details | 1 | Post Details |
| GET | /v1/reddit/post-comments | 2 | Post Comments |
| GET | /v1/reddit/post-transcript | 2 | Post Transcript |
| GET | /v1/reddit/search | 2 | Search |
| GET | /v1/reddit/subreddit-details | 1 | Subreddit Details |
| GET | /v1/reddit/subreddit-search | 2 | Search Posts in a Subreddit |
Threads
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/threads/profile | 1 | Profile |
| GET | /v1/threads/user-posts | 2 | User Posts |
| GET | /v1/threads/post-details | 1 | Post Details |
| GET | /v1/threads/search | 2 | Post Search |
| GET | /v1/threads/search-users | 1 | Search Users |
Bluesky
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/bluesky/profile | 1 | Profile |
| GET | /v1/bluesky/user-posts | ~3 | User Posts |
| GET | /v1/bluesky/post-details | 1 | Post Details |
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/pinterest/pin-details | 1 | Pin Details |
| GET | /v1/pinterest/user-pins | ~13 | User Pins |
| GET | /v1/pinterest/search | ~13 | Search |
| GET | /v1/pinterest/board | ~13 | Board |
| GET | /v1/pinterest/user-boards | ~13 | User Boards |
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/linkedin/profile | 1 | Profile |
| GET | /v1/linkedin/company | 2 | Company |
| GET | /v1/linkedin/post-details | 1 | Post Details |
| GET | /v1/linkedin/post-transcript | 1 | Post Transcript |
| GET | /v1/linkedin/company-posts | 1 | Company Posts |
| GET | /v1/linkedin/search-posts | ~16 | Search Posts |
Rumble
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/rumble/video-details | 1 | Video Details |
| GET | /v1/rumble/video/transcript | 1 | Video Transcript |
| GET | /v1/rumble/channel-videos | ~12 | Channel Videos |
| GET | /v1/rumble/search | ~12 | Search |
| GET | /v1/rumble/comments | 2 | Comments |
TikTok Shop
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/tiktok-shop/shop-search | 2 | Shop Search |
| GET | /v1/tiktok-shop/shop-products | 2 | Shop Products |
| GET | /v1/tiktok-shop/product-details | 2 | Product Details |
| GET | /v1/tiktok-shop/product-reviews | ~45 | Product Reviews |
| GET | /v1/tiktok-shop/user-showcase | ~45 | User Showcase |
Facebook Marketplace
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/facebook/marketplace-search | 2 | Marketplace Search |
| GET | /v1/facebook/marketplace-location-search | 2 | Location Search |
| GET | /v1/facebook/marketplace-item | 2 | Marketplace Item |
Facebook Events
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/facebook/event-search | 2 | Event Search |
| GET | /v1/facebook/event-details | 2 | Event Details |
| GET | /v1/facebook/profile-events | 2 | Profile Events |
Facebook Ad Library
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/ad-library/facebook/search | 2 | Search |
| GET | /v1/ad-library/facebook/company-ads | 2 | Company Ads |
| GET | /v1/ad-library/facebook/search-companies | 2 | Search Companies |
| GET | /v1/ad-library/facebook/ad-details | 2 | Ad Details |
| GET | /v1/ad-library/facebook/ad-transcript | 2 | Ad Copy |
TikTok Ad Library
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/ad-library/tiktok/search | 2 | Search |
| GET | /v1/ad-library/tiktok/top-ads | 2 | Top Ads |
| GET | /v1/ad-library/tiktok/ad-details | 2 | Ad Details |
Google Ad Library
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/ad-library/google/company-ads | 2 | Company Ads |
| GET | /v1/ad-library/google/ad-details | 2 | Ad Details |
| GET | /v1/ad-library/google/advertiser-search | 1 | Advertiser Search |
LinkedIn Ad Library
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/ad-library/linkedin/search-ads | 2 | Search Ads |
| GET | /v1/ad-library/linkedin/ad-details | 2 | Ad Details |
Amazon Seller Storefront
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/amazon-shop/page | 1 | Seller Storefront |
GitHub
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/github/user | 1 | User |
| GET | /v1/github/repositories | ~12 | Repositories |
| GET | /v1/github/pull-requests | ~12 | Pull Requests |
| GET | /v1/github/activity | ~12 | Activity |
| GET | /v1/github/followers | ~3 | Followers |
| GET | /v1/github/following | ~3 | Following |
| GET | /v1/github/contributions | 2 | Contributions |
| GET | /v1/github/repository | 1 | Repository |
| GET | /v1/github/trending-repositories | 2 | Trending |
| GET | /v1/github/trending-developers | 2 | Trending Devs |
Twitch
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/twitch/profile | 1 | Profile |
| GET | /v1/twitch/user-videos | 2 | User Videos |
| GET | /v1/twitch/user-schedule | 1 | User Schedule |
| GET | /v1/twitch/clip | 1 | Clip |
Spotify
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/spotify/artist | 1 | Artist |
| GET | /v1/spotify/track | 1 | Track |
| GET | /v1/spotify/album | 1 | Album |
| GET | /v1/spotify/search | 2 | Search |
| GET | /v1/spotify/podcast | 1 | Podcast |
| GET | /v1/spotify/podcast-episodes | 2 | Podcast Episodes |
SoundCloud
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/soundcloud/artist | 1 | Artist |
| GET | /v1/soundcloud/artist-tracks | 2 | Artist Tracks |
| GET | /v1/soundcloud/track | 1 | Track |
Linktree
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/linktree/page | 1 | Page |
Snapchat
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/snapchat/user-profile | 1 | User Profile |
Truth Social
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/truth-social/profile | 1 | Profile |
| GET | /v1/truth-social/user-posts | 2 | User Posts |
| GET | /v1/truth-social/post | 1 | Post |
Kick
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/kick/clip | 1 | Clip |
CaptAPI Account
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/account/balance | 0 | Credit Balance |
| GET | /v1/account/request-history | 0 | Request History |
| GET | /v1/account/daily-usage | 0 | Daily Usage |
| GET | /v1/account/most-used-routes | 0 | Most Used Routes |
Kwai
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/kwai/profile | 1 | Profile |
| GET | /v1/kwai/user-posts | ~20 | User Posts |
| GET | /v1/kwai/post | 2 | Post |
Komi
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/komi/page | 1 | Page |
Pillar
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/pillar/page | 1 | Page |
Linkbio
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/linkbio/page | 1 | Page |
Linkme
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/linkme/profile | 1 | Profile |
Google Maps
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/google/business-search | 2 | Business Search |
Cross-platform Analytics
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| GET | /v1/analytics/post | 1 | Unified metrics for one post/video/reel (platform auto-detected) |
| GET | /v1/analytics/compare | 1/url | Compare unified metrics across up to 10 URLs in one call |
The read-side companion to publishing and scheduling tools: pass any supported post, video, or reel URL (YouTube, TikTok, Instagram, Facebook, X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, or Rumble) and get one normalized metrics object — views, likes, comments, shares, saves, interactions, and engagementRate — with the platform auto-detected. Fields a network does not expose stay null (YouTube has no public share/save counts).
# Platform is auto-detected from the URL
curl "https://api.captapi.com/v1/analytics/post?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ" \
-H "Authorization: Bearer capt_live_..."
# Compare several posts in one call (same metrics shape per URL)
curl "https://api.captapi.com/v1/analytics/compare?urls=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ,https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DjNQXAC9IVRw" \
-H "Authorization: Bearer capt_live_..."
Video Files (direct upload)
| Method | Endpoint | Credits | Description |
|---|---|---|---|
| POST | /v1/video/transcript | 1/min | Speech-to-text transcription of an uploaded file |
| POST | /v1/video/summarize | 1/min +1 | Transcribe an uploaded file + AI summary |
Integrations
Use Captapi from AI agents, workflow tools, cloud actors, or your terminal — the same 179 endpoints, no REST plumbing.
[
MCP Server
Model Context Protocol server exposing all 179 endpoints as typed tools for Claude, Cursor, VS Code, and any MCP agent.
](https://captapi.com/docs/integrations#mcp)[
CLI
Call every one of the 179 endpoints from your terminal, scripts, or CI — one command, JSON to stdout.
](https://captapi.com/docs/integrations#cli)[
n8n
Community node (n8n-nodes-captapi) that brings all 179 endpoints into your n8n workflows.
](https://captapi.com/docs/integrations#n8n)
Ready to build?
Grab your free API key and make your first call in 60 seconds.