Instagram Location Scraper
Pricing
from $1.67 / 1,000 results
Instagram Location Scraper
Get Instagram place data and its recent tagged posts: location name, category, coordinates, total media count, plus each post's caption, likes, comments, author and the exact venue tagged. No login.
Pricing
from $1.67 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Instagram Location Scraper — Place Data and Recent Tagged Posts
Give it Instagram location IDs and get the place itself — name, category, coordinates and total media count — together with its most recent tagged posts: caption, likes, comments, author, media type and the exact venue each post was tagged at. No login, no browser.
The ceiling, stated up front
Up to 15 posts per location. Instagram embeds at most that many in the page — runs returned 15,
15 and 12 for the same location — and the pagination cursor it also embeds cannot be used from an
HTTP client: passing it as ?max_id=, ?cursor= or ?after=
returned the same first five posts every time — ignored, not rejected. Going deeper needs the
GraphQL persisted-query id, which is not in the initial HTML and cannot be harvested without a
browser session. The run log says so whenever Instagram reports more pages.
What you get in exchange is the place's full metadata — including a media_count in the tens of
millions for a city — and those posts with everything attached, from a single request.
Input
| Field | Type | Default | Description |
|---|---|---|---|
locations | array | required | Numeric location IDs, or any /explore/locations/<id>/ URL |
maxPostsPerLocation | integer | 15 | Capped at 15 — see above |
Output
One row per post, with the location block repeated so the dataset stands alone.
{"_input": "212988663","_source": "S1-embedded-payload","_scrapedAt": "2026-09-13T00:53:23Z","postCode": "DdMkUjDESND","postUrl": "https://www.instagram.com/p/DdMkUjDESND/","postId": "3984717922580892255","caption": "Cenas de dentro do desfile…","takenAt": "2026-09-12T17:53:23Z", "takenAtTimestamp": 1789235603,"likeCount": 1, "commentCount": 0, "viewCount": null,"mediaType": "carousel", "productType": "carousel_container","carouselCount": 10,"isPaidPartnership": false, "commentsDisabled": false,"authorUsername": "calvinkleinbrasil", "authorId": "1269432363","authorIsVerified": true,"authorUrl": "https://www.instagram.com/calvinkleinbrasil/","taggedVenueName": "Terminal Warehouse", // ← not the same as the location"taggedVenueId": 241562007,"taggedVenueLatitude": 40.75171, "taggedVenueLongitude": -74.00519,"imageUrl": "…", "imageCount": 4,"locationId": "212988663","locationName": "New York, New York","locationCategory": "City","locationSlug": "new-york-new-york","locationMediaCount": 83545709,"locationLatitude": 40.7306, "locationLongitude": -73.9352,"locationPriceRange": 3,"locationUrl": "https://www.instagram.com/explore/locations/212988663/"}
The tagged venue is usually not the location you searched
Instagram's location pages aggregate narrower places. Searching New York, New York returned
posts tagged at Terminal Warehouse, New York City and Red Hook Waterfront, Brooklyn — in one
run, 29 of 30 posts carried a venue different from the location searched. Both ship:
locationName is what you asked for, taggedVenueName is where the poster actually said they were,
with its own coordinates. Collapsing them into one field would quietly misplace almost every post.
Fields not emitted, and why
full_name on the post author and location_address, location_city, location_zip and phone
on the place exist in Instagram's payload and are never filled — empty across 45 sampled posts,
and empty even for venue-type places like Englischer Garten München (category "Public Garden"),
not merely for cities. Shipping them would add columns that are always null.
viewCount is emitted, but it applies to video and no video appeared in the 45 posts sampled,
so it is passed through unproven rather than advertised as working.
Errors
_error | Meaning |
|---|---|
invalid_input | Not a numeric ID or an /explore/locations/<id>/ URL |
location_not_found | 404, or a page with neither place metadata nor posts |
no_posts | The place resolved — its metadata is on the row — but carried no posts |
login_required | Instagram served a login page |
unexpected_shape | The embedded payloads are gone; the page shape changed |
blocked | Every TLS profile was refused |
network_error | Never reached Instagram |
no_posts rows carry the full location metadata, so a quiet place is still useful output rather
than a lost input.
If no location resolves at all, the run fails rather than reporting success over an empty dataset.