Part of 60+ Instagram endpoints

Instagram Highlights API

Fetch a user’s public Instagram story highlights — titles, cover images and every saved story item — with a single REST call. Highlights are saved stories that never expire, unlike regular 24-hour stories. No Instagram login or access token required.

No login or token < 1s responses Public data only Free plan available

What the Instagram Highlights API does

Highlights are stories a user has chosen to save to their profile, grouped into named trays like "Summer", "Products" or "FAQ". Unlike regular stories, highlights do not expire after 24 hours — they stay pinned to the profile until the owner removes them. The InstaGapi Highlights API returns a user’s public highlight trays: pass a username or numeric user_id and get back an array of trays, each with its title, cover image, media_count, created_at / modified_at timestamps and the full list of story items inside.

Every item in a tray is a story object with its media_type, thumbnail_url and — for videos — video_url, plus the taken_at timestamp: the same shape you get from the Stories API, but persistent rather than ephemeral. You can also resolve a single tray straight from its share URL with /api/v1/highlight/by/url. Because the media does not vanish after a day, highlights are ideal for building a durable picture of how a brand or creator presents itself.

Never expires

Saved stories stay available

Full trays

Cover, title, count and every item

Media URLs

Image and video links per item

Quick example

Just send your key in the X-Api-Key header:

curl -H "X-Api-Key: sk_live_your_key_here" \
  "https://api.instagapi.com/api/v1/user/highlights/by/username?username=nike"

Example response

Simplified for readability — see the docs for the full schema.

[
  {
    "id": "highlight:17912345678901234",
    "latest_reel_media": 1772184662,
    "cover_media": {
      "cropped_image_version": {
        "width": 640,
        "height": 640,
        "url": "https://scontent.cdninstagram.com/.../cover.jpg"
      }
    },
    "user": {
      "pk": "13460080",
      "username": "nike",
      "full_name": "Nike",
      "is_verified": true
    },
    "title": "Summer",
    "created_at": "2025-06-18T14:03:11Z",
    "modified_at": "2026-02-27T08:51:02Z",
    "is_pinned_highlight": false,
    "media_count": 12,
    "items": [
      {
        "pk": "3401225678901234567",
        "id": "3401225678901234567_13460080",
        "media_type": 1,               // 1 = image, 2 = video
        "thumbnail_url": "https://scontent.cdninstagram.com/.../01.jpg",
        "taken_at": "2025-06-18T14:03:11Z"
      }
    ]
  }
]

Endpoints

GET
/api/v1/user/highlights/by/username

Get a user’s highlights by username

username
GET
/api/v1/user/highlights

Get highlights by numeric user ID

user_id
GET
/api/v1/highlight/by/url

Get a highlight tray by its URL

url

What you can build with it

Brand catalog & storytelling

Highlights act as an evergreen shopfront — product lines, lookbooks, FAQs. Pull them to see how a brand organizes its curated content.

Archiving & backup

Capture a creator’s highlight trays and their underlying media before they are edited or deleted, for records or research.

Competitor research

See which campaigns and themes competitors keep pinned as highlights, and how often they refresh them via modified_at.

Embed & aggregate in apps

Display a creator’s highlight reels inside your own app, media kit or dashboard using the per-item thumbnail and video URLs.

Related endpoints

One of 60+ endpoints. Explore more in the full documentation:

Frequently asked questions

What is the difference between stories and highlights?

Regular stories expire after about 24 hours; highlights are stories the user has saved to their profile, so they stay available until the owner removes them. This API returns those persistent highlights.

Can I fetch highlights by username or user ID?

Both. Use /api/v1/user/highlights/by/username with a username, or /api/v1/user/highlights with a numeric user_id. You can also resolve a single tray from its share link with /api/v1/highlight/by/url.

What does each highlight tray include?

A tray returns its id, title, cover_media (a cropped_image_version with width, height and url), user, created_at, modified_at, is_pinned_highlight, media_count, latest_reel_media, and an items array of the saved stories.

Can I get the individual media inside a highlight?

Yes. Each object in items is a story with its pk, id, media_type, thumbnail_url, taken_at and — for videos — a video_url, so you can read or download every clip in the tray.

Do highlights still work after the original story expired?

Yes. Once a story is saved to a highlight it persists regardless of the 24-hour window, so the API returns it long after the original story would have disappeared.

Is downloading public Instagram highlights allowed?

InstaGapi returns publicly available data only and is an independent tool, not affiliated with Instagram or Meta. You are responsible for using the data in line with Instagram’s terms and any applicable laws in your jurisdiction.

Start pulling Instagram highlights in minutes

Create a free account, grab your API key, and make your first request today. No credit card required.