GitHubLog in
Instagram Transcript MCP Server

Instagram Transcript MCP Server

Give Claude, ChatGPT, Cursor or any MCP client Instagram as a tool: the spoken words of any public Reel or video post, keyword search and a profile's recent posts, from one hosted server.

Server URL
https://transcriptfetch.com/mcp
Streamable HTTP · OAuth or API key

Point your client at the server URL and your agent can read Instagram on its own: paste a Reel or post link and it gets what was said, with timestamps, searches Instagram by keyword, or lists a profile's recent posts. Instagram publishes no caption files, so every transcript comes from the audio, usually within the same call.

Not a developer? Add Instagram to ChatGPT or Claude in a minute
Setup

Add the server to your client

Nothing to install. All seven tools. Recommended for most clients.
Settings → Connectors
Add custom connector

Name  TranscriptFetch
URL   https://transcriptfetch.com/mcp
Connect in Claude opens TranscriptFetch in Claude's connector directory; or add it as a custom connector with the details above. Sign in to TranscriptFetch and approve access when Claude asks. No API key needed.Connect in Claude
Tools

Four tools work with Instagram

Each tool's description and parameters below are the server's own, as your client receives them. Your assistant picks the tool; you ask in plain words.

get_transcript1 credit

Fetch the full transcript for a video or media file. Accepts a YouTube video ID or URL, TikTok and Instagram URLs, and direct media file URLs. If no transcript comes back, the result says whether captions definitively do not exist (aiFallback.captionsUnavailable) and whether transcribing the audio would still work (aiFallback.available). When it does, call this tool again with ai_fallback: true.

videostringrequired
Video ID or URL: YouTube (dQw4w9WgXcQ, youtu.be/…), TikTok, Instagram, or a direct media file URL.
ai_fallbackboolean
Skip captions and use AI Fallback Transcription of the audio instead. Use this only after a previous call reported aiFallback.available. Charged 1 credit per started 5 minutes of audio, minimum 1 credit, on delivery; short media may return inline, while longer work returns a processing result to collect with a later call.
timestampsboolean
Include the timestamped segments in the structured result (default true). Set false when only the text is needed: the segments repeat the transcript's words with timings, so leaving them out keeps the response smaller.
markdownboolean
Return the transcript as Markdown (default false): a title line, then paragraphs that each open with their time, linked to that moment on YouTube. Use it when you will quote or cite the video.
chunksboolean
Also return the transcript split into pieces of about 500 tokens for an embedding model or vector store (default false), each with its start and end time and a link to that moment. In the structured result only.
search_videos1 credit

Search for videos matching a query on YouTube (default), TikTok, or Instagram. Returns titles, ids, durations, and URLs that get_transcript accepts directly. On YouTube, upload_date, duration, sort and captions narrow the results; search_channels finds channels or playlists instead.

querystringrequired
Search keywords.
platformyoutube | tiktok | instagramdefault youtube
Where to search. Defaults to youtube.
limitinteger
Max results to return (1–50). Defaults to 5.
list_channel_videos1 credit

List a creator's items, newest first by default. Accepts a YouTube channel (@handle, UC… id, or URL), a TikTok profile URL (tiktok.com/@user), or an Instagram profile URL. On YouTube, tab picks the videos, shorts or live tab, sort orders it, and query searches inside the channel. Every row's url can be passed straight to get_transcript.

channelstringrequired
YouTube handle/ID/URL, or a TikTok or Instagram profile URL.
limitinteger
Max results to return (1–50). Defaults to 5.
get_creditsFree

Check the caller's remaining credit balance. Free; costs no credits.

No parameters.

A caption fetch or a listing call costs one credit, and AI transcription 1 credit per started 5 minutes of audio. Failed and empty calls are free, and get_credits costs nothing.

Example call

What your agent sends and gets back

Tool callget_transcript
{
  "video": "https://www.instagram.com/reel/Dd1gQBsCWE8/"
}
Responsesource: audio1 credit · abridged
{
  "videoId": "Dd1gQBsCWE8",
  "platform": "instagram",
  "title": "What happens when we detect an asteroid that could pose a threat to Earth?\n\nIn early 2025, NASA joined scientists around the world in tracking asteroid 2024 YR4, which had a small chance of impacting ",
  "channel": null,
  "duration": 38.6,
  "language": "en",
  "source": "audio",
  "segments": [
    {
      "start": 0,
      "duration": 3.44,
      "text": "This asteroid 2024 YR4 might get interesting."
    },
    {
      "start": 3.44,
      "duration": 2.56,
      "text": "There was a chance that it could impact Earth."
    },
    {
      "start": 6,
      "duration": 4.1,
      "text": "The Atlas Survey, operated by the University of Hawaii,"
    }
  ],
  "outcome": "ok",
  "creditsSpent": 1,
  "balance": 657
}
Good to know

What to know about Instagram

  • Every transcript comes from the audioInstagram never exposes captions as a file, so the server transcribes the audio of the Reel or video post; the result's source is audio. It holds the call for a short clip, so the transcript usually comes back in the same response, billed at 1 credit per started 5 minutes of audio, which is 1 credit for a typical Reel.
  • The post caption is not the transcriptThe text written under a post comes back as title. The transcript is what was said in the video, which is what an assistant working with a Reel almost always needs.
  • Profiles and searchlist_channel_videos takes an Instagram profile URL and returns up to 50 recent posts per call, and search_videos with platform: instagram finds posts by keyword. The upload_date, duration, sort and captions filters are YouTube only.
  • Media links expirethumbnailUrl on Instagram is a signed link that stops working after a while. Store the post url, not the image link, if you need to come back to it.
  • What does not return textPrivate accounts, Stories that have expired, and Reels whose message was typed into the frames rather than spoken. Empty and failed fetches are never billed.
Hosted or self-hosted

Why a transcript server and not an Instagram API wrapper?

Many Instagram MCP servers wrap Instagram's official APIs, which are built for publishing and insights and do not return what a Reel says. This server transcribes the audio, so the spoken words come back for any public Reel or video post. It runs on credits, with 50 free every month.

FAQ

Frequently asked questions

  • Does it return the caption written under a post?That text comes back as the result's title. The transcript itself is the spoken words from the video.
  • Which Instagram links work?Public Reels and video posts. Private accounts are out of reach by design.
  • What does an Instagram transcript cost?1 credit per started 5 minutes of audio, which is 1 credit for a typical Reel. Every account gets 50 free credits a month, and failed or empty fetches are free.
  • Can it read a profile's recent posts?Yes. list_channel_videos takes an Instagram profile URL and returns up to 50 recent posts per call; your agent passes each url to get_transcript.
  • Does it work in ChatGPT and Claude?Yes. On claude.ai and ChatGPT you add https://transcriptfetch.com/mcp as a connector and sign in with OAuth, no key. Other clients use the configurations in the setup panel.