Instagram Location Scraper avatar

Instagram Location Scraper

Pricing

from $1.67 / 1,000 results

Go to Apify Store
Instagram Location Scraper

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

Farhan Febrian Nauval

Maintained by Community

Actor 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

FieldTypeDefaultDescription
locationsarrayrequiredNumeric location IDs, or any /explore/locations/<id>/ URL
maxPostsPerLocationinteger15Capped 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

_errorMeaning
invalid_inputNot a numeric ID or an /explore/locations/<id>/ URL
location_not_found404, or a page with neither place metadata nor posts
no_postsThe place resolved — its metadata is on the row — but carried no posts
login_requiredInstagram served a login page
unexpected_shapeThe embedded payloads are gone; the page shape changed
blockedEvery TLS profile was refused
network_errorNever 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.