# Instagram Reels API (instagram.reels)

- Canonical page: https://everyinfra.com/en/instagram-api/reels
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "instagram", "action": "reels", "params": {...}}
- Price: $0.001194 per call ($1.19 per 1,000 requests); failed calls and empty results are not charged
- Returns: list, default 30, max 100 per call
- Mode: sync; add "mode": "async" for slow tasks

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.

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=instagram&action=reels

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| username | not declared | yes | not declared | 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. |
| limit | integer (1–100) | no | 30 | 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. |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| post_id | platform-native meaning |
| url | Link to the record on the platform. |
| text | Body 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_type | platform-native meaning |
| like_count | Likes. null means the platform or this capability does not disclose it; it is not 0. |
| comment_count | Comments. null means not disclosed, not 0. |
| author_username | Author's username (@handle), usually usable in URLs. |
| author_name | Author's display name. |
| posted_at | Publish 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. |
| location | Location description passed through as is; the format varies by platform. |
| id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
| image_url | Image link. Capabilities with several images may return an image_urls array. |
| video_url | platform-native meaning |
| author_id | Author's unique ID on the platform. |
| width | platform-native meaning |
| height | platform-native meaning |
| hashtags | Hashtags in the text, in order of appearance; absent when there are none. |
| play_count | platform-native meaning |
| duration_sec | platform-native meaning |
| duration_seconds | Duration in seconds. null for content that is not video or audio. |
| music | platform-native meaning |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |

## Example

```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"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "instagram",
        "action": "reels",
        "params": {
            "username": "nasa",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-10-31T08:50:30Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2 of 30. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "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": { … }
}
```

## 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.

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=instagram
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
