Platforms

Instagram

Instagram profiles, posts, reels, social graph, discovery, and engagement without Graph API approval.

Openhandle reads public Instagram profiles, posts, reels, pinned and tagged posts, followers, hashtags, places, audio, and engagement data with an API key and no Graph API approval, business verification, or app review.

Endpoints

OperationEndpoint
Get a profileGET /v1/instagram/profiles/{identifier}
List profile postsGET /v1/instagram/profiles/{identifier}/posts
List profile reelsGET /v1/instagram/profiles/{identifier}/reels
List profile videosGET /v1/instagram/profiles/{identifier}/videos
List tagged postsGET /v1/instagram/profiles/{identifier}/tagged-posts
List profile repostsGET /v1/instagram/profiles/{identifier}/reposts
List pinned postsGET /v1/instagram/profiles/{identifier}/pinned-posts
List followersGET /v1/instagram/profiles/{identifier}/followers
List followingGET /v1/instagram/profiles/{identifier}/following
Search followersGET /v1/instagram/profiles/{identifier}/followers/search?q={query}
Search followingGET /v1/instagram/profiles/{identifier}/following/search?q={query}
List suggested profilesGET /v1/instagram/profiles/{identifier}/suggested
List related profilesGET /v1/instagram/profiles/{identifier}/related
Get a postGET /v1/instagram/posts/{identifier}
List commentsGET /v1/instagram/posts/{identifier}/comments
List replies to a commentGET /v1/instagram/posts/{identifier}/comments/{commentId}/replies
List tagged usersGET /v1/instagram/posts/{identifier}/tagged-users
Search profilesGET /v1/instagram/search/profiles?q={query}
Search reelsGET /v1/instagram/search/reels?q={query}
Search music/audioGET /v1/instagram/search/music?q={query}
Search hashtagsGET /v1/instagram/search/hashtags?q={query}
Search placesGET /v1/instagram/search/places?q={query}
Get a hashtagGET /v1/instagram/hashtags/{name}
List hashtag postsGET /v1/instagram/hashtags/{name}/posts
List hashtag reelsGET /v1/instagram/hashtags/{name}/reels
Get a locationGET /v1/instagram/locations/{id}
List location postsGET /v1/instagram/locations/{id}/posts
List post likersGET /v1/instagram/posts/{identifier}/likers
Get music/audioGET /v1/instagram/music/{identifier}

The complete 45-operation surface also includes public Stories, Highlights, profile-about data, business recommendations, combined search, comment likers, post insights and metadata, audio streams, and location guides. Every operation has its own generated page in the API reference.

All endpoints accept the freshness parameter. Paginated list endpoints use cursors.

Each operation and locator has a generated API reference with a working Test request before its Live request.

Identifiers

Use @instagram for a username or 25025320 for a stable platform ID. Both work on every profile path, so /profiles/@instagram/posts and /profiles/25025320/posts return the same feed. Post identifiers accept a stable platform post ID or Instagram shortcode such as DAbCdEfGhIj. Convert URLs locally or with the URL resolver.

Handles change; platform IDs do not. Openhandle resolves both through its durable identity index. If you store references long-term, store the id from the response and use it for later lookups.

Test example

curl "https://api.openhandle.dev/v1/instagram/posts/OHAtlas01" \
  -H "Authorization: Bearer $OPENHANDLE_TEST_KEY"

Expected: HTTP 200, Openhandle-Environment: test, and Openhandle-Cost: 0.000. Find other documented inputs in the Test Data catalog.

Live example

curl "https://api.openhandle.dev/v1/instagram/posts/$REAL_INSTAGRAM_POST_ID" \
  -H "Authorization: Bearer $OPENHANDLE_LIVE_KEY"

Cross-posted reel plays

For a reel that was also posted to Facebook, metrics.views remains Instagram's combined play count for compatibility. When attribution is available, metrics.play_count_breakdown.instagram and metrics.play_count_breakdown.facebook expose the two component counts. The breakdown is omitted when the upstream response does not provide it, and when there is no Facebook count and Instagram's count equals the combined count.

Rich response data

InstagramProfile composes the shared profile fields with an optional extended node for public bio links, business contact details, address, coordinates, and Instagram's account-type code. InstagramPost keeps the full author, media rendition, location, music, collaborator, sponsor, product-type, accessibility, and platform-metric data supplied upstream.

Stories and Highlights have dedicated schemas rather than a generic key-value shape. Stories preserve author and mention nodes, all usable image or video renditions, links, hashtags, locations, stickers, timestamps, and reply or reshare capabilities. Highlights can include their cover, owner, item count, and nested typed Story nodes.

The remaining metadata surface is typed as well: profile transparency/about, business recommendations and comment likers, heterogeneous top-search results, post insights, comment moderation and metadata, oEmbed, reel templates and clip metadata, music streams, and location guides each expose a dedicated schema.

Honest limits

  • Private profiles return PROFILE_PRIVATE (HTTP 403). We do not access private content. The definitive answer is billable.
  • Some metrics are not exposed by Instagram: they come back null. See metric semantics.
  • Media URLs are proxied through media.openhandle.dev so they stay stable while you process them.

On this page