Instagram data API

Instagram Post & Reel Data API

Send a post, reel or carousel URL (or just its shortcode) and receive everything about it as JSON: author, caption, engagement, audio, each slide of a carousel and every available video quality.

Request

GET /v1/media · 1 credit per successful call

cURL
curl "https://api.igramapi.com/v1/media?url=https%3A%2F%2Fwww.instagram.com%2Freel%2FCx1AbCdEfGh%2F" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

200 OK · application/json
{
  "shortcode": "Cx1AbCdEfGh",
  "media_type": "video",
  "video_url": "https://scontent.cdninstagram.com/v/example/clip.mp4",
  "thumbnail": "https://scontent.cdninstagram.com/v/example/thumb.jpg",
  "slides": [
    {
      "type": "video",
      "url": "https://scontent.cdninstagram.com/v/example/clip.mp4",
      "thumbnail": "https://scontent.cdninstagram.com/v/example/thumb.jpg"
    }
  ],
  "formats": [
    {
      "id": "dash-1080p",
      "quality": "1080p",
      "width": 1080,
      "height": 1920,
      "bitrate": 2400000,
      "codec": "h264",
      "size_bytes": 4100000,
      "url": "https://scontent.cdninstagram.com/v/example/v1080.mp4",
      "audio_url": "https://scontent.cdninstagram.com/v/example/a.mp4"
    },
    {
      "id": "mp4-720p",
      "quality": "720p",
      "width": 720,
      "height": 1280,
      "bitrate": 1400000,
      "codec": "h264",
      "size_bytes": null,
      "url": "https://scontent.cdninstagram.com/v/example/v720.mp4",
      "audio_url": null
    }
  ],
  "caption": "Behind the scenes from today's shoot",
  "author": {
    "username": "example_creator",
    "full_name": "Example Creator",
    "profile_picture_url": "https://scontent.cdninstagram.com/v/example/avatar.jpg"
  },
  "duration": 14.2,
  "taken_at": 1761900000,
  "play_count": 90400,
  "like_count": 5230,
  "comment_count": 112,
  "reshare_count": 64,
  "audio": {
    "url": "https://scontent.cdninstagram.com/v/example/song.m4a",
    "title": "Original audio",
    "artist": "example_creator"
  },
  "is_paid_partnership": false,
  "cached": false
}

All values above are made-up examples. Media links are temporary Instagram CDN addresses.

Parameters

NameInDescription
url query Post or reel URL. Use this or `shortcode`.
shortcode query The code from instagram.com/p/{shortcode}.

Response fields

FieldTypeDescription
shortcodestringPost identifier.
media_typestringvideo, image or carousel.
video_url / thumbnailstring | nullBest video file and cover image (temporary CDN links).
slides[]object[]type, url and thumbnail for each item.
formats[]object[]quality, size, codec, url and optional audio_url per option.
authorobjectusername, full_name, profile_picture_url.
play_count, like_count, comment_count, reshare_countinteger | nullEngagement.
audioobject | nullurl, title and artist.

URL in, JSON out

Paste any post or reel link. The shortcode is extracted for you.

Every video quality

The formats list shows each available quality, best first. Video-only qualities carry an audio_url to merge.

Carousels handled

Each slide of a carousel is listed in slides with its own type and media link.

Audio and partnership data

Audio title and artist, plus a paid-partnership flag, when the post has them.

One endpoint for posts, reels and carousels

The media_type field tells you whether you received a video, an image or a carousel. Photos return a single slide, videos return a video_url and a formats list, and carousels return one slide per item.

Send either the full URL or only the shortcode. Short links with tracking parameters (for example ?igsh=) are handled.

Choosing a video quality

Qualities up to 720p often arrive as a single file with sound. Higher qualities such as 1080p are published as a video stream plus a separate audio stream. When audio_url is present, send both URLs to the Downloader API and it returns one merged MP4.

Frequently asked questions

Does it work for reels, photos and carousels?

Yes. The same endpoint returns all three, and `media_type` tells them apart.

Why does a quality have an audio_url?

High qualities are delivered as separate video and audio streams. Give both to the Downloader API to get a single MP4 with sound.

Can I read posts from private accounts?

No. A private or deleted post returns an error (`media_unavailable` or `login_required`) and costs nothing.

Do the media links last?

No, Instagram's CDN links expire. Use the Downloader API when you need a link that stays valid for a while.

Errors cost nothing. Any response with a status of 400 or above is refunded, and every error has the same shape. See error handling and credits and rate limits.

Try the Post & Reel Data API free

Create a key and make your first request in minutes. 100 free credits every month.