honesthook

instagram-api/highlights

Instagram highlights API — the covers, the titles and the ids

The story highlight tray of a public profile: id, title and cover image for each one. Read from the same logged-out page as the profile, which already carried it.

Parameters

NameWhat it is
handleThe Instagram handle, without the @.

Handle format and anchor

Fields returned

What this endpoint does not return.

A field we cannot read comes back null, never 0. A zero would be a claim about the account; null is a fact about our collection.

Where this goes wrong.

A handle that does not exist returns HTTP 200 on Instagram, with a generic page and no follower_count. That is why this route keeps the profile anchor instead of parsing highlights alone: without it, a typo would come back as an empty tray with success true.

Measured

Measured on 2026-10-01 against the committed 829 KB page for nasa: the tray carries 5 highlights — Roman, Wallpapers, Artemis III, Artemis II, MoonTunes — and has_next_page comes back false, so that is the whole tray and has_more says so.

Cost

1 credit per call. A call that finds nothing costs nothing.

Why does this cost a credit if the profile call already downloaded the page?

Because it downloads it again. The cache is per endpoint and params, so profile and highlights for the same handle are two fetches of about 830 KB each, through the paid residential path. What is free is the parsing, not the bandwidth — and threads/posts has carried the same note since 2026-09-15.

Can I get the photos and videos inside a highlight?

No, and nobody reading a logged-out page can. That needs a session.

Other routes for this platform

← instagram-api