Instagram · Guide

How to get Instagram channel reels

TL;DR
To get Instagram channel reels, sign up for a free Captapi key, then send one GET request to /v1/instagram/channel-reels with your input. You get clean JSON back in seconds for ~6 credits (0.3/result) per call — no OAuth, scraping or platform SDKs. Latest Reels from a public Instagram profile — pass userId to skip resolve; ceil(n×0.3) credits; nextCursor + hasMore.

How to get Instagram channel reels (step by step)

  1. 1

    Get a free API key

    Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.

  2. 2

    Call the Instagram Channel Reels API

    Send an authenticated GET request to /v1/instagram/channel-reels with your input. No OAuth, no scraping setup.

  3. 3

    Read the JSON response

    Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.

Code example

curl "https://api.captapi.com/v1/instagram/channel-reels?url=https%3A%2F%2Fwww.instagram.com%2Fcristiano%2F" \
  -H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."

What the response looks like

{
  "success": true,
  "data": {
    "url": "https://www.instagram.com/cristiano/",
    "userId": "173560420",
    "totalReturned": 2,
    "reels": [
      {
        "platform": "instagram",
        "url": "https://www.instagram.com/reel/DabKed0MBRm/",
        "id": "3934784773501752422",
        "postType": "Video",
        "productType": "clips",
        "caption": "Por todos. Por 𝗣𝗢𝗥𝗧𝗨𝗚𝗔𝗟. 🎗️🇵🇹 #VaiDarPortugal \n\nFor everyone. For 𝗣𝗢𝗥𝗧𝗨𝗚𝗔𝗟. 🎗️🇵🇹 #ItsPortugalTime",
        "description": "Por todos. Por 𝗣𝗢𝗥𝗧𝗨𝗚𝗔𝗟. 🎗️🇵🇹 #VaiDarPortugal \n\nFor everyone. For 𝗣𝗢𝗥𝗧𝗨𝗚𝗔𝗟. 🎗️🇵🇹 #ItsPortugalTime",
        "publishedAt": "2026-07-05T20:23:34Z",
        "durationSeconds": 43.4,
        "thumbnailUrl": "https://scontent-ham3-1.cdninstagram.com/v/t51.82787-15/735415699_18606606883054533_8185581534148167588_n.jpg?...",
        "videoUrl": "https://scontent-ham3-1.cdninstagram.com/o1/v/t2/f2/m86/AQOZ-XzJOT5OaiKkSWI8_rvZDNemAlRbnj6HkrsVPoqI0ansFYZltF-y2953cxfuv-jSg-XuNO3kEar8H03wckE8XaOx3OK8T3-4KMM.mp4?...",
        "author": {
          "username": "portugal",
          "displayName": "Portugal",
          "url": "https://instagram.com/portugal",
          "verified": true,
          "profileImage": "https://scontent-ham3-1.cdninstagram.com/v/t51.82787-19/655235091_18574607485054533_3430348023607180141_n.jpg?..."
        },
        "engagement": {
          "views": 130177231,
          "likes": 6373324,
          "comments": 257545,
          "viewsInstagram": 104141785,
          "viewsFacebook": 26035446
        },
        "hashtags": [
          "VaiDarPortugal",
          "ItsPortugalTime"
        ],
        "mentions": []
      },
      {
        "platform": "instagram",
        "url": "https://www.instagram.com/reel/DaU63nnAkoo/",
        "id": "3933027283400542760",
        "postType": "Video",
        "productType": "clips",
        "caption": "Toronto ❤️",
        "description": "Toronto ❤️",
        "publishedAt": "2026-07-03T10:18:59Z",
        "durationSeconds": 46.333,
        "thumbnailUrl": "https://scontent-ham3-1.cdninstagram.com/v/t51.82787-15/731058572_18747860116056421_8724303327878739257_n.jpg?...",
        "videoUrl": "https://scontent-ham3-1.cdninstagram.com/o1/v/t2/f2/m86/AQNreyyq7N-5e2XVjCTkh7BFZ0wKTqOpSD3ZllobCy3C3rRiPuA_64qi66ngwZ-jwgG-66Q57v2G1V3Rvr21y-HGUbMJLY21NY_M8vk.mp4?...",
        "author": {
          "username": "cristiano",
          "displayName": "Cristiano Ronaldo",
          "url": "https://instagram.com/cristiano",
          "verified": true,
          "profileImage": "https://scontent-ham3-1.cdninstagram.com/v/t51.2885-19/472007201_1142000150877579_994350541752907763_n.jpg?...",
          "followers": 676417576
        },
        "engagement": {
          "views": 191553390,
          "likes": 17537560,
          "comments": 341631,
          "viewsInstagram": 153242712,
          "viewsFacebook": 38310678
        },
        "hashtags": [],
        "mentions": []
      }
    ],
    "nextCursor": "3885465807534181465_173560420",
    "hasMore": true
  }
}

Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.

Request parameters

NameTypeRequiredDescription
urlstringNoInstagram profile URL, @handle, or username. Omit when userId is set. The URL platform must match this endpoint's platform.
userIdstringNoInstagram numeric user ID (e.g. 173560420). Skips handle→ID resolve (legacy sequential WPI alone could cost ~80s). Prefer when you already have the ID from basic-profile or profile-search.
limitintegerNoMax items to return (default 20, max 200). Billed per result.
cursorstringNoPagination cursor. Leave empty for the first page; then pass nextCursor from the previous response (clips:{userId}:{opaque} on the native Reels path, or legacy {mediaId}_{userId}). Stop when hasMore is false.
cachebooleanNoSet true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.

Frequently asked questions

What does the Instagram Channel Reels API do?

The Instagram Channel Reels API lets you list items in bulk with metadata from a public Instagram channel reels using one GET request to /v1/instagram/channel-reels. It returns clean JSON — no OAuth or infrastructure setup required.

How many credits does the Instagram Channel Reels API cost?

At the default limit this endpoint costs 6 credits (0.3 per result). Billing scales with how many results you request. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.

Do I need a Instagram API key or OAuth?

No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.

Why is this 502 UPSTREAM_UNAVAILABLE on @vogue / @theverge / @menshealth?

Those were live misses that burned the 100s deadline: native clips walked ~45s, then Decodo's GraphQL profile scrape used a 75s HTTP timeout and never left time for Apify. Decodo now runs beside native and is killed at 16s so the actor still gets ~40s. A 6h last-good page is labelled stale 200 at 0 credits when we have a prior snapshot. A miss with no snapshot is still 502 (retryable, 0 credits). Prefer userId from basic-profile to skip resolve.

Is the Instagram Channel Reels API suitable for production use?

Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.

Ready to get Instagram channel reels?

Start free with 100 credits — no credit card required.

Get your free API key