Integrations
Overview
Captapi plugs straight into your AI tooling. The official @captapi/mcp server exposes all 174 endpoints as typed tools over the Model Context Protocol, so Claude, Cursor, VS Code, and any MCP-compatible agent can pull transcripts, comments, profiles, search results, and more — billed to your account, with cached results free.
Prefer a one-click setup? Open Agent Integrations in your dashboard for install buttons with your key pre-filled. Agents can read the machine-readable manifest at /mcp.json.
Not using MCP? The same 174 endpoints are also available as typed TypeScript & Python SDKs, a CLI, an n8n community node, a Make.com app, and an Apify Actor — or call the REST API directly.
Model Context Protocol server exposing all 174 endpoints as typed tools for Claude, Cursor, VS Code, and any MCP agent.
Call every one of the 174 endpoints from your terminal, scripts, or CI — one command, JSON to stdout.
Community node (n8n-nodes-captapi) that brings all 174 endpoints into your n8n workflows.
Custom app with an action module for every endpoint, grouped by platform — no code required.
Bring-your-own-key Actor that wraps the REST API (no scraping) and returns the same structured JSON.
A human creates the API key
Sign-up and key creation can't be automated by an agent. Create a capt_live_… key once in API Keys (100 free credits) and hand it to your agent.
The agent adds the config
Point your agent at this page or at /mcp.json, paste the snippet below with your key, and restart the client.
MCP Server
There are two ways to connect — both expose the same 174 tools. Pick Hosted for the fastest setup (no install), or Local if you prefer running the package on your machine. Replace the key with your own from API Keys, then restart the client.
Option A — Hosted (no install, just a URL)
Connect over HTTP to https://api.captapi.com/mcp. Nothing to install — your key is passed as an Authorization header (or x-api-key). Ideal for agents that can't run local processes.
// ~/.cursor/mcp.json (or .cursor/mcp.json per project)
{
"mcpServers": {
"captapi": {
"url": "https://api.captapi.com/mcp",
"headers": { "Authorization": "Bearer capt_live_xxxxxxxxxxxxxxxx" }
}
}
}Option B — Local (npx / stdio)
Run the official @captapi/mcp package via npx. It talks to your client over stdio and reads your key from the CAPTAPI_API_KEY environment variable.
// ~/.cursor/mcp.json (or .cursor/mcp.json per project)
{
"mcpServers": {
"captapi": {
"command": "npx",
"args": ["-y", "@captapi/mcp"],
"env": { "CAPTAPI_API_KEY": "capt_live_xxxxxxxxxxxxxxxx" }
}
}
}Configuration (local mode)
| Env var | Required | Description |
|---|---|---|
| CAPTAPI_API_KEY | yes | Your capt_live_… key. |
| CAPTAPI_BASE_URL | no | Override the API base URL (default https://api.captapi.com). |
Tools & Parameters
Each endpoint is a tool named platform_action. Required parameters are marked *. The agent fills these in for you.
YouTube & Shorts (22)
youtube_transcript | url*stringlanguagestringcacheboolean |
youtube_summarize | url*stringlanguagestringcacheboolean |
youtube_video_details | url*stringcacheboolean |
youtube_comments | url*stringlimitintegercursorstringcacheboolean |
youtube_channel_details | url*stringcacheboolean |
youtube_search | q*stringlimitintegercacheboolean |
youtube_channel_videos | url*stringlimitintegerfastbooleancacheboolean |
youtube_playlist_videos | url*stringlimitintegerfastbooleancacheboolean |
youtube_playlist | url*stringlimitintegerfastbooleancacheboolean |
youtube_shorts_transcript | url*stringlanguagestringcacheboolean |
youtube_shorts_summarize | url*stringlanguagestringcacheboolean |
youtube_shorts_details | url*stringcacheboolean |
youtube_shorts_comments | url*stringlimitintegercursorstringcacheboolean |
youtube_channel_shorts | url*stringlimitintegercacheboolean |
youtube_trending_shorts | qstringlimitintegercacheboolean |
youtube_channel_streams | url*stringlimitintegercacheboolean |
youtube_hashtag_search | q*stringlimitintegercacheboolean |
youtube_comment_replies | url*stringcomment_id*stringlimitintegercacheboolean |
youtube_channel_playlists | url*stringlimitintegercacheboolean |
youtube_community_posts | url*stringlimitintegercacheboolean |
youtube_community_post_details | url*stringcacheboolean |
youtube_video_sponsors | url*stringcacheboolean |
TikTok (22)
tiktok_transcript | url*stringlanguagestringcacheboolean |
tiktok_summarize | url*stringlanguagestringcacheboolean |
tiktok_video_details | url*stringcacheboolean |
tiktok_comments | url*stringlimitintegercursorstringcacheboolean |
tiktok_channel_details | url*stringcacheboolean |
tiktok_profile_region | url*stringcacheboolean |
tiktok_audience_demographics | url*stringcacheboolean |
tiktok_search_suggestions | q*stringcountrystringlanguagestringlimitintegercacheboolean |
tiktok_channel_posts | url*stringlimitintegercursorstringcacheboolean |
tiktok_comment_replies | url*stringcomment_id*stringlimitintegercursorstringcacheboolean |
tiktok_user_followers | url*stringlimitintegercacheboolean |
tiktok_user_followings | url*stringlimitintegercacheboolean |
tiktok_music_posts | url*stringlimitintegercacheboolean |
tiktok_top_search | q*stringlimitintegercacheboolean |
tiktok_search_by_hashtag | q*stringlimitintegercursorintegerregionstringcacheboolean |
tiktok_search_users | q*stringlimitintegercursorintegercacheboolean |
tiktok_song_details | url*stringcacheboolean |
tiktok_trending_feed | countrystringlimitintegercacheboolean |
tiktok_popular_hashtags | querystringlimitintegercacheboolean |
tiktok_live | url*stringcacheboolean |
tiktok_live_info | url*stringcacheboolean |
tiktok_popular_creators | countrystringsortstringfollower_countstringlimitintegercacheboolean |
Instagram Reels (15)
instagram_transcript | url*stringlanguagestringcacheboolean |
instagram_summarize | url*stringlanguagestringcacheboolean |
instagram_details | url*stringcacheboolean |
instagram_comments | url*stringlimitintegercacheboolean |
instagram_channel_details | url*stringcacheboolean |
instagram_channel_posts | url*stringlimitintegercursorstringcacheboolean |
instagram_channel_reels | url*stringlimitintegercursorstringcacheboolean |
instagram_reels_search | q*stringlimitintegercacheboolean |
instagram_trending_reels | countrystringlimitintegercacheboolean |
instagram_tagged_posts | url*stringlimitintegercacheboolean |
instagram_reels_by_audio_id | audio_id*stringlimitintegercacheboolean |
instagram_hashtag_search | q*stringlimitintegercacheboolean |
instagram_profile_search | q*stringcacheboolean |
instagram_embed | url*stringcacheboolean |
instagram_basic_profile | userId*stringcacheboolean |
Facebook (16)
facebook_details | url*stringcacheboolean |
facebook_transcript | url*stringcacheboolean |
facebook_summarize | url*stringcacheboolean |
facebook_comments | url*stringlimitintegercacheboolean |
facebook_page_details | url*stringcacheboolean |
facebook_profile_posts | url*stringlimitintegercacheboolean |
facebook_profile_reels | url*stringlimitintegercacheboolean |
facebook_group_posts | url*stringlimitintegercacheboolean |
facebook_comment_replies | url*stringcomment_id*stringlimitintegercacheboolean |
facebook_marketplace_search | q*stringlocation*stringlimitintegerdetailsbooleancacheboolean |
facebook_marketplace_location_search | q*stringlimitintegerdetailsbooleancacheboolean |
facebook_event_search | q*stringlimitintegercacheboolean |
facebook_event_details | url*stringcacheboolean |
facebook_profile_photos | url*stringlimitintegercacheboolean |
facebook_profile_events | url*stringlimitintegercacheboolean |
facebook_marketplace_item | url*stringcacheboolean |
Twitter / X (7)
twitter_tweet_details | url*stringcacheboolean |
twitter_transcript | url*stringcacheboolean |
twitter_profile | url*stringcacheboolean |
twitter_user_tweets | url*stringlimitintegercacheboolean |
twitter_search | q*stringlimitintegercacheboolean |
twitter_community | url*stringcacheboolean |
twitter_community_tweets | url*stringlimitintegercacheboolean |
Reddit (7)
reddit_subreddit_posts | url*stringlimitintegercursorstringcacheboolean |
reddit_post_details | url*stringcacheboolean |
reddit_post_comments | url*stringlimitintegercacheboolean |
reddit_post_transcript | url*stringlimitintegercacheboolean |
reddit_search | q*stringlimitintegercursorstringcacheboolean |
reddit_subreddit_details | url*stringcacheboolean |
reddit_subreddit_search | url*stringq*stringlimitintegercursorstringcacheboolean |
Threads (5)
threads_profile | url*stringcacheboolean |
threads_user_posts | url*stringlimitintegercacheboolean |
threads_post_details | url*stringcacheboolean |
threads_search | q*stringlimitintegercacheboolean |
threads_search_users | q*stringlimitintegercacheboolean |
Bluesky (3)
bluesky_profile | url*stringcacheboolean |
bluesky_user_posts | url*stringlimitintegercursorstringcacheboolean |
bluesky_post_details | url*stringcacheboolean |
Pinterest (5)
pinterest_pin_details | url*stringcacheboolean |
pinterest_user_pins | url*stringlimitintegercacheboolean |
pinterest_search | q*stringlimitintegercacheboolean |
pinterest_board | url*stringlimitintegercacheboolean |
pinterest_user_boards | url*stringlimitintegercacheboolean |
LinkedIn (6)
linkedin_profile | url*stringcacheboolean |
linkedin_company | url*stringcacheboolean |
linkedin_post_details | url*stringcacheboolean |
linkedin_post_transcript | url*stringcacheboolean |
linkedin_company_posts | url*stringlimitintegercacheboolean |
linkedin_search_posts | q*stringsortstringlimitintegercacheboolean |
Rumble (4)
rumble_video_details | url*stringcacheboolean |
rumble_channel_videos | url*stringlimitintegercacheboolean |
rumble_search | q*stringlimitintegercacheboolean |
rumble_comments | url*stringlimitintegercacheboolean |
TikTok Shop (5)
tiktok_shop_search | q*stringregionstringlimitintegercacheboolean |
tiktok_shop_products | url*stringlimitintegercacheboolean |
tiktok_shop_product_details | url*stringcacheboolean |
tiktok_shop_product_reviews | url*stringlimitintegercacheboolean |
tiktok_shop_user_showcase | username*stringlimitintegercacheboolean |
GitHub (10)
github_user | username*stringcacheboolean |
github_repositories | username*stringlimitintegercursorstringcacheboolean |
github_pull_requests | repo*stringstatestringlimitintegercursorstringcacheboolean |
github_activity | username*stringlimitintegercursorstringcacheboolean |
github_followers | username*stringlimitintegercursorstringcacheboolean |
github_following | username*stringlimitintegercursorstringcacheboolean |
github_contributions | username*stringcacheboolean |
github_repository | repo*stringcacheboolean |
github_trending_repositories | qstringlimitintegercacheboolean |
github_trending_developers | qstringlimitintegercacheboolean |
Twitch (4)
twitch_profile | url*stringcacheboolean |
twitch_user_videos | url*stringlimitintegercacheboolean |
twitch_user_schedule | url*stringcacheboolean |
twitch_clip | url*stringcacheboolean |
Spotify (6)
spotify_artist | url*stringcacheboolean |
spotify_track | url*stringcacheboolean |
spotify_album | url*stringcacheboolean |
spotify_search | q*stringtypestringlimitintegercacheboolean |
spotify_podcast | url*stringlimitintegercacheboolean |
spotify_podcast_episodes | url*stringlimitintegercacheboolean |
SoundCloud (3)
soundcloud_artist | url*stringcacheboolean |
soundcloud_artist_tracks | url*stringlimitintegercursorstringcacheboolean |
soundcloud_track | url*stringcacheboolean |
Linktree (1)
linktree_page | url*stringcacheboolean |
Snapchat (1)
snapchat_user_profile | url*stringcacheboolean |
Truth Social (3)
truth_social_profile | url*stringcacheboolean |
truth_social_user_posts | url*stringlimitintegercursorstringcacheboolean |
truth_social_post | url*stringcacheboolean |
Kick (1)
kick_clip | url*stringlimitintegercacheboolean |
Amazon Shop (1)
amazon_shop_page | url*stringmarketplacestringlimitintegercacheboolean |
Account (4)
account_balance | |
account_request_history | limitinteger |
account_daily_usage | daysinteger |
account_most_used_routes | daysintegerlimitinteger |
Analytics & Video Files (4)
analytics_post | url*stringcacheboolean |
analytics_compare | urls*string |
video_transcript | file*file |
video_summarize | file*file |
Kwai (3)
kwai_profile | url*stringcacheboolean |
kwai_user_posts | url*stringlimitintegercacheboolean |
kwai_post | url*stringcacheboolean |
Komi (1)
komi_page | url*stringcacheboolean |
Pillar (1)
pillar_page | url*stringcacheboolean |
Linkbio (1)
linkbio_page | url*stringcacheboolean |
Linkme (1)
linkme_profile | url*stringcacheboolean |
Ad Library (12)
facebook_ad_library_search | q*stringcountrystringlimitintegercacheboolean |
facebook_ad_library_company_ads | url*stringcountrystringlimitintegercacheboolean |
facebook_ad_library_search_companies | q*stringcountrystringlimitintegercacheboolean |
facebook_ad_library_ad_details | url*stringcacheboolean |
facebook_ad_library_ad_transcript | url*stringcacheboolean |
tiktok_ad_library_search | q*stringcountrystringlimitintegercacheboolean |
tiktok_ad_library_ad_details | url*stringcountrystringcacheboolean |
google_ad_library_company_ads | advertiser*stringcountrystringlimitintegercacheboolean |
google_ad_library_ad_details | creative_id*stringcountrystringcacheboolean |
google_ad_library_advertiser_search | q*stringcountrystringlimitintegercacheboolean |
linkedin_ad_library_search_ads | q*stringcountrystringlimitintegercacheboolean |
linkedin_ad_library_ad_details | url*stringcacheboolean |
Typed SDKs (TypeScript & Python)
Writing code? The official SDKs cover every endpoint with typed, namespaced methods — great autocomplete for humans and AI coding agents — and errors always throw, never silently return empty data. TypeScript: @captapi/sdk (zero dependencies, Node 18+/Deno/Bun/edge). Python: pip install captapi (sync + async clients on httpx).
// TypeScript — npm install @captapi/sdk
import { Captapi } from "@captapi/sdk";
const client = new Captapi({ apiKey: "capt_live_..." });
const res = await client.youtube.transcript({ url: "https://youtube.com/watch?v=..." });
# Python — pip install captapi
from captapi import Captapi
client = Captapi(api_key="capt_live_...")
res = client.youtube.transcript(url="https://youtube.com/watch?v=...")Platform features (batch, monitors, history, status)
Beyond single calls, the API ships building blocks competitors make you assemble yourself:
- Batch —
POST /v1/batchruns up to 20 endpoint calls concurrently in one request, with per-item status and billing (cached items stay free). - Monitors + webhooks —
POST /v1/monitorswatches any list endpoint (subreddit posts, channel videos, ad-library searches…) on your schedule and POSTs only new items to your webhook, HMAC-signed. Test deliveries withPOST /v1/monitors/{id}/test. - Metric history —
GET /v1/historyreturns follower/view/like time series that accumulate automatically whenever tracked profile or post endpoints are fetched fresh. - Live status —
GET /v1/status(no auth) exposes per-platform success rates from real traffic; the human view lives at /status.
Command-line (CLI)
Prefer the terminal, a shell script, or CI? The official @captapi/cli package exposes all 174 endpoints as commands. Authenticate once with captapi login (or set CAPTAPI_API_KEY), then call any endpoint — each one is a subcommand, parameters are flags, and responses print as JSON to stdout so they pipe cleanly into jq and scripts. It can even wire the MCP server into your agent with captapi agent add.
npm install -g @captapi/cli # or just use: npx @captapi/cli <command>
captapi login # paste your capt_live_… key (saved to ~/.captapi/config.json)
captapi whoami # confirm the active key
captapi balance # remaining credits + recent requestsWorkflow automation (n8n)
Building no-code/low-code automations? The official n8n-nodes-captapi community node brings all 174 endpoints into n8n. Install it from Settings → Community Nodes, add a Captapi API credential with your capt_live_… key, then drop the Captapi node into any workflow — pick a platform and operation, and pipe the structured JSON into your other nodes.
# In n8n: Settings → Community Nodes → Install
n8n-nodes-captapi
# Self-hosted (npm), then restart n8n:
npm install n8n-nodes-captapiNo-code scenarios (Make.com)
Prefer Make.com (Integromat)? The Captapi custom app exposes all 174 endpoints as action modules grouped by platform. Add a Captapi API Key connection with your capt_live_… key, then drop the module you need into a scenario — it returns the same structured JSON as the REST API for downstream modules.
// Create a "Captapi API Key" connection once:
// API Key = capt_live_xxxxxxxxxxxxxxxx (from /dashboard/api-keys)
// Make verifies the key against /v1/account/limits.Apify Actor (bring your own key)
Running on Apify? The Captapi Actor is a thin bring-your-own-key wrapper around the REST API — it does not scrape. Set your capt_live_… key, pick an operation, and the Actor returns one dataset item with the same structured JSON. Credits are billed to your own Captapi account, so it stays free to run. Its input and output fields are fully documented, so AI agents on Apify's MCP server can discover and run it too.
{
"apiKey": "capt_live_xxxxxxxxxxxxxxxx",
"operation": "youtube_transcript",
"url": "https://youtube.com/watch?v=dQw4w9WgXcQ"
}Connect your agent in 60 seconds
Grab a key, paste the config, and start pulling social data from your AI tool.
Open Agent Integrations