Instagram hub

Instagram Profile Media API

One list for a profile's posts, Reels and the posts it is tagged in, by handle, profile URL or numeric user id, in the same media object every v2 list returns.

GET /v2/instagram/profiles/{profile}/media

1 credit Failed requests are free

About this endpoint

GET /v2/instagram/profiles/{profile}/media takes a handle (with or without @), a profile URL or a numeric user id, and a tab: posts (the profile grid, the default), reels or tagged (posts other accounts tagged this profile in). Read data.lookupStatus (found, private or not_found), then data.media and data.page. When data.page.hasMore is true, pass data.page.nextCursor as cursor with the same tab and profile. A cursor from another tab is a 400. Each page is 1 credit; bill from meta.creditsCharged. meta.version is v2.

Every item is the shared v2 media object: id, shortcode, URL, kind (post or reel), media type, caption, time, owner, like, comment, play, share and save counts, image and video URLs, carousel items, audio, co-authors, tagged users and location. Every field is always present and is null when Instagram doesn't say. In the Reels list taggedUsers is null, because that list doesn't say who is tagged; fetch the Reel with GET /v2/instagram/media/{media} for the full list. A private or missing profile returns an empty data.media.

Instagram Profile Media API FAQ

How do I list an Instagram profile's posts with the v2 API?

Call GET /v2/instagram/profiles/{profile}/media with your Social Fetch API key (x-api-key) and a handle, profile URL or numeric user id in the path. Read data.media. When data.page.hasMore is true, send data.page.nextCursor as cursor to get the next page.

How do I get a profile's Reels or the posts it is tagged in?

Pass tab=reels or tab=tagged. Keep the same tab on every page: a cursor from another tab is a 400. Give a handle or a user id for any tab; the credit price is the same.

How much does it cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth. Each paginated page is a separate billed request.

What does a private or missing profile return?

lookupStatus: private or not_found with an empty data.media, still a completed lookup. A public profile with nothing in the chosen list is found with an empty data.media.

Do I need Instagram Graph API access?

No. Social Fetch returns publicly visible posts and Reels with an API key. Meta's Instagram Graph API is for accounts you manage or that grant your app access.