Reference

Instagram Search API

One POST with platform instagram resolves a keyword search into a page of Instagram Reels: shortcode, url, caption as the title, duration, account name, publish time and play count. Every row's url is accepted by the transcript and batch endpoints as-is. No Graph API app review, access token or business account is involved.

1 credit per page of resultsView pricing

Each page of results is one credit, however many Reels it lists; pass next_cursor back as cursor for the next page. Failed requests are free.

On this platform

  • Set platform to instagram; the YouTube-only filters (type, upload_date, duration, sort, captions) are not applied on Instagram.
  • A row's videoId is the Reel's shortcode, title is its caption and channel is the account name.
  • One page costs 1 credit; pass next_cursor back as cursor for the next page.
POST/api/v2/transcripts/searchidempotent

Search for videos, channels or playlists

Resolve a keyword search into a paginated list of videos (metadata only). Searches YouTube by default; set platform to search TikTok or Instagram instead. Every video row carries a url the transcript endpoint accepts unchanged, plus duration and publish time where the source provides them. On YouTube, upload_date, duration and captions filter the videos and sort orders them, and type finds channels (data.kind channel_list) or playlists (data.kind playlist_list) instead, whose rows' urls the channel and playlist endpoints accept as-is.

Body parameters

querystringrequired
Keyword search query.
Example
platformstring (enum)optional
Where to search: youtube (default), tiktok, or instagram. Every video result's url is accepted by the transcript and batch endpoints as-is. The type, upload_date, duration, sort and captions options search YouTube only.
Example
type"video" | "channel" | "playlist"optional
YouTube only. What to search for: video (the default), channel or playlist. Channels come back as data.kind channel_list, each row's url accepted by the channel endpoint; playlists as data.kind playlist_list, each row's url accepted by the playlist endpoint. A channel row carries the @handle, subscriber count and description; its videoCount is null, because YouTube's channel results no longer show one.
Example
upload_date"hour" | "today" | "week" | "month" | "year"optional
YouTube video search only. Keep videos uploaded within the last hour, today, this week, this month or this year.
duration"short" | "medium" | "long"optional
YouTube video search only. Keep short (under 4 minutes), medium (4 to 20 minutes) or long (over 20 minutes) videos.
sort"relevance" | "views"optional
YouTube only. Result order: relevance (the default) or views (most viewed first). YouTube search no longer sorts by upload date or rating, so neither is offered; for recent videos, filter with upload_date.
Example
captionsbooleanoptional
YouTube video search only. true keeps only videos with subtitles or closed captions, whose transcripts come from captions rather than audio transcription. Defaults to false: no filter.
Example
limitinteger (1–50)optional
Max items to return per page: videos, or the playlists or channels some listing options return. Defaults to 5.
Example
cursorstringoptional
Opaque pagination cursor from a previous response's next_cursor (max 256 characters). Omit for the first page. Cursors are scoped to the listing that issued them, so send the same platform and listing options with each page. Offset-based sources cannot page past the first 2000 items.

Request example

curl https://transcriptfetch.com/api/v2/transcripts/search \
  -H "Authorization: Bearer $TRANSCRIPTFETCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"how transformers work","platform":"instagram","limit":10}'

Responses

SuccessExample response envelope
{
  "ok": true,
  "request_id": "req_…",
  "data": {
    "kind": "video_list",
    "source": "search",
    "platform": "instagram",
    "videos": [
      {
        "videoId": "DWI8rZ9iTeD",
        "url": "https://www.instagram.com/reel/DWI8rZ9iTeD/",
        "title": "Why Transformer Works Only in AC? ⚡\nA transformer is one of the most important devices in electrical systems—but have you ever wondered why it works only with AC (Alternating Current) and not DC (Dire",
        "duration": 5,
        "channel": "scie.ncebysumati",
        "publishedAt": "2026-03-21T08:29:30Z",
        "stats": {
          "plays": 11559
        }
      },
      {
        "videoId": "DVHOMxGiRBb",
        "url": "https://www.instagram.com/reel/DVHOMxGiRBb/",
        "title": "There is more than one type of transformer! Let’s go over them. #electrician #transformer #electrical.",
        "duration": 35,
        "channel": "greatdane_homeservices",
        "publishedAt": "2026-02-23T19:52:44Z",
        "stats": {
          "plays": 1370
        }
      }
    ],
    "next_cursor": "eyJvIjoxMH0"
  },
  "usage": {
    "credits_spent": 1,
    "balance": 656,
    "bytes": 0
  }
}

Every Instagram endpoint

Frequently asked questions

How do I search Instagram instead of YouTube?
Send platform instagram in the body. Without it the search runs on YouTube. query, limit and cursor work the same on every platform.
Does Instagram search need a Graph API token?
No. It is TranscriptFetch's own endpoint: your TranscriptFetch API key, one page per credit, no Meta app, review or business account.
Can I filter Instagram results by date or duration?
No. Those filters are YouTube-only. Each row carries duration, publishedAt and stats.plays, so filter on your side after the fetch.
How do I get the transcripts of the Reels a search returns?
Send the rows' urls to the batch endpoint. Instagram has no caption track, so each Reel is transcribed from audio and billed on delivery at the audio rate; a short Reel is one credit.