Instagram Location API
Find a place by name, get its Instagram location id and coordinates, then pull the posts people have tagged there — newest first, with a cursor to keep going. Useful for store and venue monitoring, local marketing, event coverage, and UGC collection.
50 free credits on signup · no card required
curl "https://api.instagramapi.dev/v1/location/posts?id=212988663" \
-H "Authorization: Bearer $INSTAGRAMAPI_KEY"What you get
Structured JSON, not raw HTML
- ▹Recent posts tagged at a location, with caption, media URLs, engagement counts, and author
- ▹Cursor pagination to keep walking back through a location's feed
- ▹Accepts an Instagram location id or a location URL
- ▹Place details: name, address, city, and latitude / longitude
- ▹Place search by keyword to resolve a venue name to its id
- ▹One credit per call across all three endpoints
Example response
What comes back
{
"data": {
"items": [
{
"id": "3912183471120209303",
"shortcode": "DZK3iOsRlWX",
"type": "photo",
"product_type": "feed",
"url": "https://www.instagram.com/p/DZK3iOsRlWX/",
"caption": "NYC nights 🗽",
"taken_at": "2026-06-04T15:59:27Z",
"like_count": 2499414,
"comment_count": 55165,
"view_count": null,
"image_url": "https://instagram.com/.../media.jpg",
"video_url": null,
"video_duration": null,
"location": {
"id": "212988663",
"name": "New York, New York",
"category": "City",
"address": "",
"city": "",
"zip": "",
"lat": 40.7128,
"lng": -74.006,
"phone": "",
"website": "http://www.nyc.gov/",
"external_id": "108424279189115"
},
"author": {
"id": "7781",
"username": "cityframes",
"full_name": "City Frames",
"is_verified": true,
"is_private": false,
"profile_pic_url": "https://instagram.com/.../nike.jpg"
}
}
],
"next_cursor": "WyJlNmFmZmIz..."
}
}Response fields
Fields returned by GET /v1/location/posts
| Field | Description |
|---|---|
| items | The page of posts tagged at this location. |
| items[].id | Numeric post/media id. |
| items[].shortcode | The post's shortcode, the part after /p/ in its instagram.com URL. |
| items[].type | Media type: photo, video, or carousel. |
| items[].product_type | More specific format (e.g. feed, clips, igtv). |
| items[].url | Canonical instagram.com URL for the post. |
| items[].caption | The post's caption text. |
| items[].taken_at | When the post was published (ISO 8601, UTC). |
| items[].like_count | Number of likes. |
| items[].comment_count | Number of comments. |
| items[].view_count | View count for video/reel content; null for photos. |
| items[].image_url | URL of the post's image (cover frame for video). |
| items[].video_url | URL of the video file; null for photos. |
| items[].video_duration | Video length in seconds; null for photos. |
| items[].location | Place tagged on the post, if any; null otherwise. |
| items[].author | The account that published the post. |
| items[].location.id | Numeric location id. |
| items[].location.name | The place's name. |
| items[].location.category | The place's category (e.g. City, Restaurant). |
| items[].location.address | Street address, when known. |
| items[].location.city | City, when known. |
| items[].location.zip | Postal code, when known. |
| items[].location.lat | Latitude. |
| items[].location.lng | Longitude. |
| items[].location.phone | Public phone number, when listed. |
| items[].location.website | Website URL, when listed. |
| items[].location.external_id | Facebook Places id for the location. |
| items[].author.id | Numeric account id (stable even if the username changes). |
| items[].author.username | The account's @handle. |
| items[].author.full_name | Display name shown on the profile (may be empty). |
| items[].author.is_verified | Whether the account has a verified badge. |
| items[].author.is_private | Whether the account is private. |
| items[].author.profile_pic_url | URL of the account's profile picture. |
| next_cursor | Pass back as `cursor` to fetch the next page; null when there are no more results. |
No login required
Nothing to authenticate but your API key
No OAuth flow
One static API key in an Authorization: Bearer header. No redirect, no refresh tokens, no expiring session.
No Meta app review
Never touch Meta's developer platform, Business Verification, or a connected Facebook Page. Sign up directly with Instagram API.
Public data only
Every endpoint returns only what's already visible on Instagram without logging in. Private accounts are never accessible.
Pricing
1 credit per request. Credits start at $8.00 per 1,000 and drop to $6.00 per 1,000 at volume — no subscription, no minimums. New accounts get 50 free credits.
See full pricingFAQ
Instagram Location API, explained
How do I get Instagram posts for a location?
First resolve the place with GET /v1/search/locations?q=<place name> to get its id, then call GET /v1/location/posts?id=<location id>. You can also pass a full Instagram location URL as the id.
Can I get posts near a latitude / longitude?
Not directly — Instagram organises posts by tagged place, not by radius. Search for the venues in your area with /search/locations, then pull posts for each location id.
How do I monitor a store or venue for new posts?
Poll /v1/location/posts?id=<id> on a schedule, store the post ids you've seen, and stop paging when you reach one you already have. Each page is one credit.
Does this require an Instagram login or Meta app review?
No. Location data and posts tagged at public places are public. There's no OAuth, no app review, and no business verification.
What does location data cost?
1 credit per call for location details, location posts, and place search. Credits start at $8.00 per 1,000, and new accounts get 50 free.
Related
More ways to pull Instagram data
Start pulling location api data
Create a free key and make your first request in under a minute — 50 credits on us.