Instagram hub

Instagram location media API

Page the posts and Reels tagged at a place as structured JSON, top-ranked or newest first, in the shared Social Fetch envelope.

GET /v2/instagram/locations/{locationId}/media

1 credit Failed requests are free

About this endpoint

GET /v2/instagram/locations/{locationId}/media takes the Instagram location id in the path, or an instagram.com /explore/locations/<id>/ URL. The optional tab query picks the feed: top (default) for the posts Instagram ranks first, or recent for the newest. Read data.lookupStatus (found or not_found), then data.media and data.page (hasMore, nextCursor).

Each item is the media object every v2 list returns, with every field always present and null when Instagram doesn't say: id, shortcode, url, kind (post or reel), mediaType, caption, createdAt (ISO-8601), the owner, metrics, image and video URLs, carousel, audio, coauthors, taggedUsers and the tagged location. metrics.likeCount is null and metrics.likesHidden is true when the author hides likes.

The feeds show what Instagram shows now, which reaches back only a short time rather than all time. Use recent to monitor a venue or neighbourhood. When data.page.hasMore is true, pass data.page.nextCursor as cursor; it belongs to one location and one feed, so you can omit tab on later pages. Repeated posts are dropped and the list ends when a page brings nothing new. Instagram CDN URLs can expire. Bill from meta.creditsCharged, per page.

For the place's own name and coordinates use GET /v2/instagram/locations/{locationId}, and to find a location id by name use GET /v2/instagram/locations/search.

Instagram location media API FAQ

How do I list Instagram posts at a location via API?

Call GET /v2/instagram/locations/{locationId}/media with your Social Fetch API key (x-api-key) and the location id in the path. Choose a feed with tab=top|recent. Read data.lookupStatus, data.media and data.page in the JSON response. See the API docs for parameters and examples.

How much does the Instagram location media API 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.

Where do I get a location id?

Search by name with GET /v2/instagram/locations/search: each result's id works here. A post's location.id is the same id, and it is the number in an instagram.com/explore/locations/{id}/ URL, which you can also pass in the path.

What is the difference between the top and recent tabs?

top is the posts Instagram ranks first for the place. recent is the newest posts first, which is the feed to poll for new content. Each tab pages on its own cursor, and the cursor remembers its location and tab.

What does not_found mean here?

The location id doesn't exist. A real place that nobody has tagged recently comes back as found with an empty media array.

How does pagination work?

When data.page.hasMore is true, pass data.page.nextCursor as cursor on the next request. A cursor from another location, another route or another tab is a 400, as is a tab that differs from the cursor's. The list ends when hasMore is false.