Instagram Reels API

Pull the Reels an account posted by username, each with play_count, duration_sec, like_count, comment_count and the music used, for $1.19 per 1,000 calls.

Instagram Reels lists the Reels one public account has posted, given its username, and returns each reel's caption, length in seconds in duration_sec, play_count, like and comment counts, publish time, location text, hashtags, cover image, video link and the music used. It answers which short videos an account makes and how they perform, for creator marketers vetting accounts, social teams benchmarking competitors' video output and researchers studying short-form formats.

Pass the bare handle, such as nasa, without an @ and not as a profile URL. Compare reels by play_count against like_count and comment_count to spot the ones that drew both reach and engagement. Subtitle transcripts, top comments and the author's follower count are not part of this capability. Null counts mean Instagram did not disclose the figure, which is not zero.

  • Up to 100 Reels per call
  • Rows return in the same response
  • No Instagram login needed

API health

24h health
100%
24h average time
48.56 s
  • Healthy / normal
  • Available
  • Limited
  • Mostly down
Healthy

Last 24 hours

Last 30 days

  1. 1Request

    POST /api/v1/social
    {
      "platform": "instagram",
      "action": "reels",
      "params": {
        "username": "nasa"
      }
    }
  2. 2JSON response

    {
      "results": [
        {
          "author_username": "",
          "post_id": "DfF3eqGSKKc",
          "text": "More power loading. 🔋\n\nToday, NASA astronaut Anil Menon and CSA (Canadian Space Agency) astronaut Joshua Kutryk conducted a spacewalk to install the 7th of 8 new roll out solar arrays. The final new array is slated to be installed during the Nov. 5 spacewalk, increasing the stati…",
          "media_type": "video"
        },
        …
      ],
      "count": 30
    }
  3. 3Rows

    author_usernamepost_idtextmedia_type
    DfF3eqGSKKcMore power loading. 🔋 Today, NASA astronaut Anil Menon and CSA (Canadian Space Agency) astronaut Joshua Kutryk conducted a spacewalk to install the 7th of 8 new roll out solar arrays. The final new array is slated to be installed during the Nov. 5 spacewalk, increasing the stati…video
    De7XCa_TJ4hThis is how @nasa does game day. Roll Tide! 🚀🏈video
  4. 4CSV

    instagram-reels-sample.csv post_id,url,text,media_type,like_count,comment_count,author_username,author_name,posted_at,location,id,image_url,video_url,author_id,width,height,hashtags,play_count,duration_sec,duration_seconds,music,platform

A request with username and an optional limit goes in. The JSON response holds the account's Reels with play_count, duration_sec and music, and these become table rows and a CSV file.

What data you get

The table shows rows from a real call for nasa, captured October 31, 2026 at 08:50 (UTC), that returned 30 rows. Gray bars mark removed personal information (••• in the CSV). Your own calls return these fields as listed in the field reference.

post_idurltextmedia_typelike_countcomment_countauthor_usernameauthor_nameposted_atlocationidimage_urlvideo_urlauthor_idwidthheighthashtagsplay_countduration_secduration_secondsmusicplatform
DfF3eqGSKKchttps://www.instagram.com/reel/DfF3eqGSKKc/More power loading. 🔋 Today, NASA astronaut Anil Menon and CSA (Canadian Space Agency) astronaut Joshua Kutryk conducted a spacewalk to install the 7th of 8 new roll out solar arrays. The final new array is slated to be installed during the Nov. 5 spacewalk, increasing the stati…video116091292026-10-29T20:35:35+00:00nullhttps://scontent-sof1-2.cdninstagram.com/v/t51.82787-15/865204930_18640535563026724_3353517023594775034_n.jpg?stp=dst-jpg_e15_s640x640_tt6&_nc_cat=1&ig_cache_key=NDAxODg2MjI0MTg0MzAyODYzNjE4NjQwNTM1NTYwMDI2NzI0.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNMSVBTLnhwa…https://scontent-sof1-2.cdninstagram.com/o1/v/t2/f2/m86/AQMgO65IBSO4D1Fg1v8qWRLjCR7N-LaX4H_sPQeyoyjFQE149o094RWHdy1qn9GBy1VHAND2Io7UoTGpUBgIXE-YSbD4UnaCrO694xk.mp4?_nc_cat=102&_nc_sid=5e9851&_nc_ht=scontent-sof1-2.cdninstagram.com&_nc_ohc=koWnhp-eBvIQ7kNvwFJyYpR&efg=eyJ2ZW5jb2RlX…10801920null204393041.37599945068359441.375999450683594{"artist":"nasajohnson","title":"Original audio"}instagram
De7XCa_TJ4hhttps://www.instagram.com/reel/De7XCa_TJ4h/This is how @nasa does game day. Roll Tide! 🚀🏈video520122352026-10-25T18:35:11+00:00Bryant-Denny Stadiumhttps://scontent-sof1-2.cdninstagram.com/v/t51.82787-15/858088880_1909652077075572_3321833479248057878_n.jpg?stp=dst-jpg_e15_s640x640_tt6&_nc_cat=101&ig_cache_key=NDAxNTkwNDgxNDIxODkxMTI2NTE5MDk2NTIwNzM3NDIyMzk%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNMSVBTLn…https://scontent-sof1-2.cdninstagram.com/o1/v/t2/f2/m86/AQO_XE-Eozfv9EhJgpBw8CpgqEydxrCcLTTmdJ4OmJL4u8TmjEREW4NyjX7EoxhsUiVfVbZseRJAIb1F9nUfjAsGTOK4bYFiS-v5fw4.mp4?_nc_cat=105&_nc_sid=5e9851&_nc_ht=scontent-sof1-2.cdninstagram.com&_nc_ohc=47tcWctX0mAQ7kNvwFwIIq6&efg=eyJ2ZW5jb2RlX…19161078null447427661.50799942016601661.507999420166016{"artist":"nasaadmin","title":"Original audio"}instagram

Use cases

  • Vet creator accounts

    Read play_count and like_count on a prospect's Reels to judge reach and engagement.

  • Benchmark competitor video

    Pull a competitor's Reels and use duration_sec and text to see how long they run and what they write.

  • Find top-engaging Reels

    Compare play_count with comment_count to pick Reels that drew both plays and comments.

  • Count audio choices

    Read the artist and title in music to count which tracks an account uses most.

Instagram Graph API vs EveryInfra

Here is how Instagram's official Graph API and EveryInfra reels compare on play counts, spotting Reels and access.

ComparedInstagram Graph APIEveryInfra
Play countField view_count: "View count for Instagram Reels, which includes both paid and organic metrics."Each row has play_count, which you can read next to like_count and comment_count.
Spotting ReelsField media_product_type: "Surface where the media is published. Can be AD, FEED, STORY or REELS. Available for Instagram API with Facebook Login only."username returns that account's Reels, and each row has duration_sec and music.
Access you need"Note that a permission only allows access to data created by the app user who granted the permission."One EveryInfra API key in the Authorization: Bearer header. No Instagram login or Instagram access token is needed.

Quotes are from Meta's developer documentation, checked 2026-11-09. Official sources: IG Media (updated 2026-10-29) · Instagram Platform overview (updated 2026-10-29)

Limits and gotchas

  • limit is an integer from 1 to 100 and defaults to 30; larger values return 422 before any charge.
  • There is no page parameter. One call returns at most 100 rows and can return fewer than limit.
  • username is an account handle without the @ symbol, or a full profile URL.
  • Subtitle transcripts, top comments and the author's follower count are not returned.
  • play_count, like_count and comment_count are null when not disclosed; that is not 0. duration_sec is in seconds.
  • music is absent when there is none.

Pricing

You pay $0.001194 per call, not per row, and one call reads up to 100 Reels. Failed calls and empty results are not charged.

CallsCost
10,000$11.94
100,000$119.44
1,000,000$1,194.44

Totals use the list price per call.

Code samples

#
bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "instagram",
  "action": "reels",
  "params": {
    "username": "nasa"
  }
}'

OpenAPI definition (JSON)Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.

API reference

See the parameters, response fields, errors and billing for reels, and copy the page or open it as Markdown for an AI assistant.

POST

AI prompt

#
Please help me write a data collection script with the EveryInfra Instagram Reels endpoint (instagram/reels).

How the endpoint works:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to instagram and action to reels, and put the parameters inside params.
- Required parameters:
  - username: Identifies an Instagram account handle without the @ symbol or as a full profile URL. Used by profile, persona, user_posts, and reels to fetch account data.
- Optional parameters:
  - limit: The most rows to return in this call, an integer from 1 to 100. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. (default: 30)
- Returns a list of records. Main fields of each record: post_id, url, text, media_type, like_count, comment_count, author_username, author_name, posted_at, location, id, image_url; 21 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=instagram.
- Example request body:
{
  "platform": "instagram",
  "action": "reels",
  "params": {
    "username": "nasa"
  }
}
- Price: $1.19 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.

Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.

Request parameters

#
NameInTypeRequiredDefaultDescription
AuthorizationheaderstringYes-Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository.
platformbodystringYesinstagramPlatform identifier, fixed value.
actionbodystringYesreelsCapability identifier, fixed value.
usernamebody.paramsstringYes-Identifies an Instagram account handle without the @ symbol or as a full profile URL. Used by profile, persona, user_posts, and reels to fetch account data. The followers action returns only total follower counts, whereas followers_list and following_list return account lists.
limitbody.paramsinteger (1–100)No30The most rows to return in this call, an integer from 1 to 100. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge.

Response example

#
Captured October 31, 2026 at 08:50 (UTC) by calling this API with the parameters in the code sample above. results and count are that call's real response with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2. id, billing and quota differ on every call, so only their shape is shown.
json
{  "id": "req_…",  "platform": "instagram",  "action": "reels",  "results": [    {      "post_id": "DfF3eqGSKKc",      "url": "https://www.instagram.com/reel/DfF3eqGSKKc/",      "text": "More power loading. 🔋\n\nToday, NASA astronaut Anil Menon and CSA (Canadian Space Agency) astronaut Joshua Kutryk conducted a spacewalk to install the 7th of 8 new roll out solar arrays. The final new array is slated to be installed during the Nov. 5 spacewalk, increasing the stati…",      "media_type": "video",      "like_count": 11609,      "comment_count": 129,      "author_username": "•••",      "author_name": "•••",      "posted_at": "2026-10-29T20:35:35+00:00",      "id": "•••",      "image_url": "https://scontent-sof1-2.cdninstagram.com/v/t51.82787-15/865204930_18640535563026724_3353517023594775034_n.jpg?stp=dst-jpg_e15_s640x640_tt6&_nc_cat=1&ig_cache_key=NDAxODg2MjI0MTg0MzAyODYzNjE4NjQwNTM1NTYwMDI2NzI0.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNMSVBTLnhwa…",      "video_url": "https://scontent-sof1-2.cdninstagram.com/o1/v/t2/f2/m86/AQMgO65IBSO4D1Fg1v8qWRLjCR7N-LaX4H_sPQeyoyjFQE149o094RWHdy1qn9GBy1VHAND2Io7UoTGpUBgIXE-YSbD4UnaCrO694xk.mp4?_nc_cat=102&_nc_sid=5e9851&_nc_ht=scontent-sof1-2.cdninstagram.com&_nc_ohc=koWnhp-eBvIQ7kNvwFJyYpR&efg=eyJ2ZW5jb2RlX…",      "author_id": "•••",      "width": 1080,      "height": 1920,      "play_count": 2043930,      "duration_sec": 41.375999450683594,      "music": {        "artist": "nasajohnson",        "title": "Original audio"      },      "platform": "instagram",      "duration_seconds": 41.375999450683594    },    {      "post_id": "De7XCa_TJ4h",      "url": "https://www.instagram.com/reel/De7XCa_TJ4h/",      "text": "This is how @nasa does game day. Roll Tide! 🚀🏈",      "media_type": "video",      "like_count": 52012,      "comment_count": 235,      "author_username": "•••",      "author_name": "•••",      "posted_at": "2026-10-25T18:35:11+00:00",      "location": "Bryant-Denny Stadium",      "id": "•••",      "image_url": "https://scontent-sof1-2.cdninstagram.com/v/t51.82787-15/858088880_1909652077075572_3321833479248057878_n.jpg?stp=dst-jpg_e15_s640x640_tt6&_nc_cat=101&ig_cache_key=NDAxNTkwNDgxNDIxODkxMTI2NTE5MDk2NTIwNzM3NDIyMzk%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNMSVBTLn…",      "video_url": "https://scontent-sof1-2.cdninstagram.com/o1/v/t2/f2/m86/AQO_XE-Eozfv9EhJgpBw8CpgqEydxrCcLTTmdJ4OmJL4u8TmjEREW4NyjX7EoxhsUiVfVbZseRJAIb1F9nUfjAsGTOK4bYFiS-v5fw4.mp4?_nc_cat=105&_nc_sid=5e9851&_nc_ht=scontent-sof1-2.cdninstagram.com&_nc_ohc=47tcWctX0mAQ7kNvwFwIIq6&efg=eyJ2ZW5jb2RlX…",      "author_id": "•••",      "width": 1916,      "height": 1078,      "play_count": 4474276,      "duration_sec": 61.507999420166016,      "music": {        "artist": "nasaadmin",        "title": "Original audio"      },      "platform": "instagram",      "duration_seconds": 61.507999420166016    }  ],  "count": 30,  "billing": {    "charged": …,    "charged_usd": …,    "balance_after_usd": …,    …  },  "quota": { … }}

Response fields

#

Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.

FieldMeaning
post_idKeeps the platform's own meaning
urlLink to the record on the platform.
textBody text with HTML removed, returned in full and never cut short (on a few platforms the list results themselves carry only an excerpt; the platform's field notes say so).
media_typeKeeps the platform's own meaning
like_countLikes. null means the platform or this capability does not disclose it; it is not 0.
comment_countComments. null means not disclosed, not 0.
author_usernameAuthor's username (@handle), usually usable in URLs.
author_nameAuthor's display name.
posted_atPublish time in ISO 8601, UTC (for example 2026-08-07T12:34:56+00:00). Non-standard strings from the platform are passed through as is, so parse defensively. null means the platform does not disclose it.
locationLocation description passed through as is; the format varies by platform.
idThe record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms.
image_urlImage link. Capabilities with several images may return an image_urls array.
video_urlKeeps the platform's own meaning
author_idAuthor's unique ID on the platform.
widthKeeps the platform's own meaning
heightKeeps the platform's own meaning
hashtagsHashtags in the text, in order of appearance; absent when there are none.
play_countKeeps the platform's own meaning
duration_secKeeps the platform's own meaning
duration_secondsDuration in seconds. null for content that is not video or audio.
musicKeeps the platform's own meaning
platformSource platform identifier, the same as platform in the request (for example xiaohongshu, tiktok).

Errors and billing

#
401
Missing or invalid key.
402
Insufficient balance. Top up first.
422
Invalid parameter name or value. Fix it using the suggestions in the error. No charge.
429
Per-minute request limit reached. Wait for Retry-After, then try again.
503
Could not complete. The held charge is returned to your balance. If the outcome is unknown, verify it before you retry.
200 empty
No data. No charge.

Errors

FAQ

How do I read an account's Reels through the API?

Send one call to Instagram Reels with the account's handle as username, such as nasa, and its Reels come back as rows, each with post_id, url, the caption in text and the counts. To read the comments under one reel, pass its url to the Instagram Comments capability, which takes a single post or Reel link.

Can I get what is said in a reel?

Not from this capability: it returns no subtitle transcript. The caption the author wrote is in text and the tags are in hashtags, so you can search, count or classify reels by those. Store them with post_id and duration_sec to compare captions across reels of different lengths.

Which count shows how often a reel was played?

play_count holds the reel's play count, and this capability returns no separate view count. Use play_count consistently when you compare reels, and leave out rows where it is null: null means the figure was not disclosed, not that nobody watched.

What data does the Instagram Reels API return?

For the account in username it returns its Reels: text, play_count, duration_sec, like_count, music and the video link video_url.

How many Reels can one call return, and how do I page?

limit is 1 to 100 and defaults to 30. One call returns at most 100 rows, possibly fewer. There is no page parameter.

How much does it cost?

It costs $0.001194 per call, or $1.19 per 1,000 calls, billed per call and not per row. Failed calls and empty results are not charged.

Do I need an Instagram login?

No. You send one EveryInfra API key in the Authorization: Bearer header. No Instagram login or Instagram access token is needed.

What is the difference between reels and reels_search?

reels takes an account's username and returns that account's Reels, with music. reels_search takes a keyword and returns Reels under the word, with is_verified but no music.

You can call the other Instagram endpoints with the same key, such as the comments under a Reel or a keyword search for Reels.

Our own visit stats are always on. Google Analytics loads only if you choose “Allow analytics”. Privacy policy