Instagram Location Posts Scraper
Pricing
from $3.00 / 1,000 location post scrapeds
Instagram Location Posts Scraper
Scrape public Instagram posts tagged to a location or place. Use for local-market research, venue UGC, and geo-influencer discovery. Returns one row per post with URL, caption, likes, owner, and source location. $0.003 per saved post.
Pricing
from $3.00 / 1,000 location post scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
12 days ago
Last modified
Categories
Share
Scrape public Instagram posts tagged to a location or place. Give the actor a location URL, numeric location ID, or a place name, and it returns structured post rows with URLs, captions, engagement, owner, and the source location. Built for local-market research, venue UGC, geo-influencer discovery, and MCP / AI-agent calls.
Designed for operators who already know the venue and want the public place feed as JSON. After you collect venue posts, continue with Instagram Profile Scraper to enrich owner bios, then pair it with Google Maps Leads Scraper when you also need the business listing and emails for that same place.
What data can Instagram Location Posts Scraper extract?
| Field | Type | Description |
|---|---|---|
id / shortcode / url | string | Post identity and canonical Instagram URL |
post_type | string | IMAGE, VIDEO, CAROUSEL_ALBUM, REEL, or UNKNOWN |
caption | string | Caption text when Instagram exposes it |
hashtags / mentions | array | Parsed from the caption |
like_count / comment_count | integer | Engagement counts when present |
thumbnail_url / display_url / media_urls | string | Public media URLs |
owner_username / owner_full_name / owner_is_verified | mixed | Author identity |
location_name / location_id | string | Location tag on the post |
source_location_id / source_location_slug | string | Location you asked the actor to scrape |
source_lookup_type | string | url, id, or query |
timestamp | string | Publish time, ISO 8601 when available |
scraped_at | string | Collection time, ISO 8601 |
You can download the dataset as JSON, CSV, Excel, or HTML from the Output tab. OUTPUT and RUN_SUMMARY record the run outcome (COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED, CONFIG_ERROR) plus itemsPushed.
Best fit
Use this Actor when the job is posts on a public Instagram place page. It works well for venue UGC audits, neighborhood content calendars, and geo-influencer shortlists.
- For profile timelines, start with Instagram Posts Scraper when you already have usernames.
- For hashtag feeds, then use Instagram Hashtag Scraper when the brief is a tag rather than a place.
- For Reels by profile, continue with Instagram Reels Scraper after you have creator handles from this place feed.
How to scrape Instagram posts by location
- Open the actor Input tab.
- Paste one or more Instagram location URLs such as
https://www.instagram.com/explore/locations/212988663/times-square-new-york-city/. You can also pass numeric location IDs or free-text place names. - Set Max Posts Per Target (quality sample uses
3; default is50). - Keep residential proxies on (default).
- Click Start. Results appear in the dataset as soon as posts are saved.
Example input
{"locationUrls": ["https://www.instagram.com/explore/locations/212988663/times-square-new-york-city/"],"maxPostsPerTarget": 3,"includeRecentComments": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample output
{"id": "CxABCde1234","shortcode": "CxABCde1234","url": "https://www.instagram.com/p/CxABCde1234/","post_type": "IMAGE","caption": "Sunset in Times Square","like_count": 1284,"owner_username": "exampleuser","source_location_id": "212988663","source_lookup_type": "url","scraped_at": "2026-08-18T09:37:50.000Z"}
Public location pages sometimes serve post shortcodes and URLs from HTML while withholding GraphQL captions and like counts. Those rows still include url, shortcode, and source_location_id so you can open or enrich the post next.
Workflow: from a venue URL to a UGC shortlist
A local-marketing lead starts with one Times Square location URL, sets maxPostsPerTarget to 20, and runs this Actor. They then export the dataset, compare owner_username values, and pass the strongest creators into Instagram Profile Scraper for bios and follower counts. Schedule the same saved input weekly to watch new venue tags. Next, feed place names that also need emails into Google Maps Leads Scraper.
Pricing — Pay per event + platform usage
| Event | Price | Charged when |
|---|---|---|
Actor start (apify-actor-start) | $0.00005 | Once per run, scaled by RAM (one event per GB) |
Location post scraped (scraped-post) | $0.003 | Each saved dataset row |
Example: 100 saved posts on the default 2048 MB run is about $0.30 in scraped-post events plus two start events, then platform usage (compute and residential proxy). Only saved rows are billed. Empty matches finish VALID_EMPTY with zero scraped-post charges.
After a test run, then check the live Pricing tab for current Pay per event plus platform usage on your plan.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~instagram-location-posts-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"locationUrls": ["https://www.instagram.com/explore/locations/212988663/times-square-new-york-city/"],"maxPostsPerTarget": 20,"includeRecentComments": false}'
Results land in the run's default dataset. Paginate with offset / limit on https://api.apify.com/v2/datasets/{datasetId}/items?clean=true. The same actor is exposed through Apify MCP as apify--instagram-location-posts-scraper.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/instagram-location-posts-scraper').call({locationUrls: ['https://www.instagram.com/explore/locations/212988663/times-square-new-york-city/'],maxPostsPerTarget: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use with AI agents through Apify MCP
Scrape public Instagram posts tagged to Times Square. Use khadinakbar/instagram-location-posts-scraper with locationUrls set to the Times Square explore URL, maxPostsPerTarget 20, and includeRecentComments false. Return post URL, caption, likes, owner username, source location id, dataset rows, OUTPUT outcome, provenance (source URL + scraped_at), and confirm the $0.003 per-post cost. Read back the default dataset when the Actor completes.
Agents should keep maxPostsPerTarget bounded, treat OUTPUT.outcome as the machine contract, and paginate large result sets with offset/limit on the dataset items endpoint. Scope is public location/place feeds.
Best results
- Provide a location URL or numeric ID when you already have it; place-name queries resolve through Instagram search and work best with a distinctive venue plus city.
- Start with
maxPostsPerTarget: 3to confirm the place, then raise the cap. - Keep residential proxies on. Public location pages are the source of truth for this actor.
- Confirm
source_location_idon the first rows before a large run so the resolved venue matches the brief.
Builder's note
I built this after watching Instagram withhold GraphQL location-feed payloads on public place pages while still embedding post "code" shortcodes in the HTML. I found that intercepting /api/v1/locations/, /api/v1/feed/location/, and GraphQL first, then recovering shortcodes of length 8+ from the page, is what turns a hollow VALID_EMPTY into a usable UGC shortlist. In my testing, charging scraped-post before pushData kept billing aligned with saved rows once Pay per event was enabled.
Related actors
- Instagram Posts Scraper — use when the job is profile timelines or direct post URLs rather than a place page
- Instagram Hashtag Scraper — use when the brief is a hashtag feed
- Instagram Reels Scraper — then collect Reels after you have creator handles from this place feed
- Instagram Profile Scraper — enrich owner bios and follower counts after you shortlist venue posters
- Google Maps Leads Scraper — pair it with this actor when you also need B2B place emails for the same venue
Legal disclaimer
This actor collects publicly available Instagram data. You are responsible for complying with Instagram's Terms of Service, applicable privacy laws (including GDPR and CCPA), and any other regulations. Use the data only with a lawful basis and in line with responsible-use rules for outreach.