Instagram API

Instagram Location posts API

List public Instagram posts tagged at a location, ranked or most recent, with cursor pagination.

$1.20/1k req, pay per request, no subscription.

What the API returnedposts[0]
{
"id": "3495710238412098765",
"shortcode": "C9zQ1kRoXaB",
"url": "https://www.instagram.com/p/C9zQ1kRoXaB/",
"author": "marcus.eats.nyc",
"authorVerified": false,
"avatarUrl": "https://cdninstagram.com/marcus-profile.jpg",
"caption": "Sunday brunch with a view of the water, best table in the city",
"likes": 812,
... 27 more fields
}
Uptime
94.10%
30d · 305 calls
Requests
305
30d · weekly, last 12 wks
Response
3.7s
median · 30d

Pricing

Instagram Location posts API pricing

You pay
$12.00
$1.20/1k req, only for what you use. No monthly plan.
Your first 83 requests are free with the $0.10 starting balance.

Try it

Get Instagram location posts in one request

Open in
Get a free key
Sample response
Free runs return only the first 3 results. Fund a key to get the full response.

This sample shows 34 of 46 fields. See every field

{
  "found": true,
  "data": {
    "nextCursor": "QVFDcXlkbG9jYXRpb25GZWVkQ3Vyc29y",
    "posts": [
      {
        "id": "3495710238412098765",
        "shortcode": "C9zQ1kRoXaB",
        "url": "https://www.instagram.com/p/C9zQ1kRoXaB/",
        "author": "marcus.eats.nyc",
        "authorVerified": false,
        "avatarUrl": "https://cdninstagram.com/marcus-profile.jpg",
        "caption": "Sunday brunch with a view of the water, best table in the city",
        "likes": 812,
        "comments": 24,
        "createdUtc": 1727654400,
        "image": "https://cdninstagram.com/bk-bridge-park.jpg",
        "mediaType": "photo",
        "locationName": "Brooklyn Bridge Park"
      },
      {
        "id": "3495710238412098912",
        "shortcode": "C9zQ2mVoYcD",
        "url": "https://www.instagram.com/p/C9zQ2mVoYcD/",
        "author": "the.wandering.lens",
        "authorId": "60293841284",
        "authorVerified": true,
        "authorPrivate": false,
        "avatarUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/wandering-lens-profile.jpg",
        "caption": "Golden hour never disappoints at this spot",
        "captionEdited": false,
        "likes": 5340,
        "comments": 112,
        "createdUtc": 1727568000,
        "image": "https://scontent.cdninstagram.com/v/t51.29350-15/brooklyn-bridge-park-golden-hour.jpg",
        "videoUrl": "https://scontent.cdninstagram.com/v/t50.16885-16/brooklyn-bridge-park-golden-hour.mp4",
        "mediaType": "video",
        "productType": "clips",
        "width": 1080,
        "height": 1920,
        "hasAudio": true,
        "paidPartnership": false,
        "countsHidden": false,
        "locationId": "103912118089363",
        "locationName": "Brooklyn Bridge Park",
        "locationLat": 40.7024,
        "locationLng": -73.9967,
        "coauthors": [
          {
            "username": "nyc.skylines",
            "userId": "60293841390",
            "avatarUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/nyc-skylines-profile.jpg"
          }
        ]
      }
    ]
  }
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

One request, one response shape.

Every field you send and every field you get back, each with a real example.

Last verified 2026-10-24 · uptime and latency measured over 30d

Request body

JSON, posted to this endpoint.

  • locationIdstring

    103912118089363

    Instagram location id, as returned by instagram.search_locations.

  • cursorstring

    Pagination cursor from a previous response's nextCursor.

  • sortenum

    recent

    Order the posts by Instagram's top ranking or by newest first. Defaults to ranked.

You send. A small JSON body. The values shown are examples to replace with your own.

Response

JSON, one example value per field.

datadata
  • nextCursorstring

    QVFDcXlkbG9jYXRpb25GZWVkQ3Vyc29y

    Opaque cursor for the next page of posts, or null when there are no more. Pass it back as cursor to continue.

each postdata.posts[]

Public posts tagged at the location. Populated whenever the provider has data for the entity.

  • altTextstring

    Instagram's generated accessibility description of the media.

  • audioIdstring

    Instagram audio id of the sound; pass it to instagram.audio_reels as audioId to list reels that use it. Absent when the post has no sound.

  • authorstring

    marcus.eats.nyc

    Username of the account that posted it, without the leading @. Populated whenever the provider has data for the entity.

  • authorIdstring

    The author's numeric Instagram account id, as a string.

  • authorPrivateboolean

    Whether the author's account is private.

  • authorVerifiedboolean

    false

    Whether the author carries Instagram's verified badge.

  • avatarUrlstring

    https://cdninstagram.com/marcus-profile.jpg

    Author's profile picture URL, as Instagram's CDN serves it.

  • captionstring

    Sunday brunch with a view of the water, best table in the city

    Post caption text.

  • captionEditedboolean

    Whether the caption has been edited since posting.

  • carouselCountinteger

    Number of slides, present on carousel posts only.

  • commentsinteger

    24

    Number of comments on the post.

  • countsHiddenboolean

    Whether the author has hidden the like and view counts.

  • createdUtcnumber

    1727654400

    UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.

  • hasAudioboolean

    Whether the video carries an audio track.

  • hashtagsstring[]

    Hashtags carried in the caption, each including its leading #. Populated whenever the provider has data for the entity.

  • heightinteger

    Media height in pixels.

  • idstring

    3495710238412098765

    The post's numeric Instagram media ID, as a string. Populated whenever the provider has data for the entity.

  • imagestring

    https://cdninstagram.com/bk-bridge-park.jpg

    Post image or video thumbnail URL, as Instagram's CDN serves it. Populated whenever the provider has data for the entity.

  • likesinteger

    812

    Number of likes on the post.

  • locationIdstring

    Instagram location id the post is tagged at.

  • locationLatnumber

    Latitude of the tagged location, in decimal degrees.

  • locationLngnumber

    Longitude of the tagged location, in decimal degrees.

  • locationNamestring

    Brooklyn Bridge Park

    Name of the location the post is tagged at.

  • mediaTypestring

    photo

    What the post is: photo, video or carousel.

  • mentionsstring[]

    Accounts @mentioned in the caption, each including its leading @.

  • paidPartnershipboolean

    Whether the post is tagged as a paid partnership.

  • productTypestring

    Instagram's own surface label for the post, such as feed, clips or carousel_container.

  • shortcodestring

    C9zQ1kRoXaB

    The post's short code, the segment Instagram puts in its URL.

  • soundAuthorstring

    Credited artist of a licensed track, or the username of the account whose original audio it is. Absent when the post has no sound.

  • soundTitlestring

    Name of the sound. "Original audio" means the creator's own audio rather than a licensed track. Absent when the post has no sound.

  • urlstring

    https://www.instagram.com/p/C9zQ1kRoXaB/

    Canonical URL of the post. Populated whenever the provider has data for the entity.

  • videoUrlstring

    Direct video file URL, present on video posts and reels only.

  • widthinteger

    Media width in pixels.

each coauthordata.posts[].coauthors[]

Accounts listed as coauthors of the post.

  • avatarUrlstring

    Coauthor's profile picture URL, as Instagram's CDN serves it.

  • userIdstring

    Instagram's numeric account id, as a string.

  • usernamestring

    Instagram username without the leading @.

each taggedUserdata.posts[].taggedUsers[]

Accounts tagged in the media.

  • displayNamestring

    Account display name.

  • userIdstring

    Instagram's numeric account id, as a string.

  • usernamestring

    Instagram username without the leading @.

top level
  • foundboolean

    true

  • reason"not_found"

    Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.

You get back. Named, typed fields in the same shape whichever source answers.

FAQ

About the Instagram Location posts API

The AnyAPI Instagram Location posts API returns Instagram location posts data as normalized JSON from one POST call to /v1/run/instagram.location_posts. List public Instagram posts tagged at a location, ranked or most recent, with cursor pagination. AnyAPI returns one normalized schema whichever source serves it. It costs from $1.20 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 94.1% of Instagram location posts calls through AnyAPI succeeded, with a median response time of 3.7 seconds across 305 measured calls.

It costs from $1.20 per 1,000 requests, in US dollars with no subscription and no monthly minimum. You fund one USD wallet and each call draws it down. Some failed wallet-funded requests incur processing charges that we pass through at cost, with no markup; the error response shows the amount charged.

List public Instagram posts tagged at a location, ranked or most recent, with cursor pagination. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Over the last 30 days, 94.1% of Instagram location posts calls through AnyAPI succeeded, with a median response time of 3.7 seconds across 305 measured calls. These are AnyAPI's own measurements of traffic through the gateway, recomputed continuously, not a published service-level target.

Yes. A new AnyAPI account starts with $0.10 of free balance and no card required, which covers 83 Instagram Location posts calls at $0.0012 each.

Send a POST request to https://api.getanyapi.com/v1/run/instagram.location_posts with your AnyAPI key in an "Authorization: Bearer" header and the input as a JSON body. The same key and the same wallet work on every AnyAPI endpoint.

No. You add US dollars to one prepaid AnyAPI balance and each request draws it down. There is no monthly plan and no minimum, and the same balance pays for every AnyAPI endpoint.

Yes. Install @getanyapi/sdk from npm for TypeScript or getanyapi from pip for Python. Both call every AnyAPI endpoint with the same key, and any HTTP client works too.

Yes. An agent can connect to the AnyAPI MCP server at https://api.getanyapi.com/mcp, or create its own free-trial key with one unauthenticated POST to https://api.getanyapi.com/agent/signup and call this endpoint over HTTP.