Skill detail
instagram-scraper
The best, fastest, and cheapest way to scrape Instagram — battle-tested by tens of thousands of customers including enterprise teams. Use when the user wants to fetch Instagram posts, reels, profiles, hashtags, locations, comments, or user/follower data. Five specialized actors cover every…
Why we recommend it: Scrapes Instagram posts, reels, profiles, hashtags, and comments — directly supports social listening and research.
Needs (stated): Paid account
Inspect before use
Read the source instructions and check the requirements before you install this skill.
SKILL.md
The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.
---
name: instagram-scraper
description: The best, fastest, and cheapest way to scrape Instagram — battle-tested by tens of thousands of customers including enterprise teams. Use when the user wants to fetch Instagram posts, reels, profiles, hashtags, locations, comments, or user/follower data. Five specialized actors cover every Instagram data surface.
version: 0.1.1
---
# Instagram Scraper API
The fastest Instagram data extraction suite available — 100–200 posts/second, no login, no proxies. Five specialized actors cover every Instagram data surface.
## Actors
| Actor | Purpose | Actor ID |
| ----- | ------- | -------- |
| **Instagram Scraper** | All-in-one: posts, reels, profiles, hashtags, locations, audio, tagged posts | `VLKR1emKm1YGLmiuZ` |
| **Instagram Hashtag Scraper** | Posts and reels by hashtag or keyword | `ZSBuGcAOcTZjHUVyv` |
| **Instagram Location Scraper** | Geo-tagged posts from Instagram place URLs or location IDs | `6cMzJhRlD4wfzrWXg` |
| **Instagram Comments Scraper** | Comments and replies from post URLs | `6lDMfTxEj4h8hSZ6i` |
| **Instagram User Scraper** | Profiles, followers, following lists, public emails | `lezdhAFfa4H5zAb2A` |
## Setup
This requires an Apify account on a **paid plan** — it will not work via the API on the free plan.
1. **Sign up / log in** at [apify.com/?fpr=yhdrb](https://apify.com/?fpr=yhdrb)
2. **Subscribe to a paid plan** at [apify.com/pricing?fpr=yhdrb](https://apify.com/pricing?fpr=yhdrb) — without this, API calls will be rejected.
3. **Get your API token** from [console.apify.com/account/integrations](https://console.apify.com/account/integrations) and set it:
```bash
export APIFY_TOKEN="apify_api_xxxxxxxxxxxx"
```
## Sync (short runs)
Returns dataset items directly. Replace `ACTOR_ID` with the relevant actor ID above.
```bash
curl -s -X POST \
"https://api.apify.com/v2/acts/ACTOR_ID/run-sync-get-dataset-items?timeout=120" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":["https://www.instagram.com/nike/"],"maxItems":50,"skill":true}'
```
Returns a JSON array directly. If the run exceeds 300s, use async instead.
## Async (large runs)
```bash
# 1. Start
RUN=$(curl -s -X POST \
"https://api.apify.com/v2/acts/ACTOR_ID/runs?waitForFinish=60" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":["https://www.instagram.com/nike/"],"skill":true}')
RUN_ID=$(echo "$RUN" | jq -r '.data.id')
# 2. Poll
while true; do
STATUS=$(curl -s \
"https://api.apify.com/v2/actor-runs/$RUN_ID?waitForFinish=60" \
-H "Authorization: Bearer $APIFY_TOKEN" | jq -r '.data.status')
echo "Status: $STATUS"
case "$STATUS" in SUCCEEDED|FAILED|ABORTED|TIMED-OUT) break;; esac
done
# 3. Fetch results
curl -s \
"https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?clean=true&limit=100" \
-H "Authorization: Bearer $APIFY_TOKEN"
```
---
## Instagram Scraper — Scenarios
Actor: `INSTAGRAM_SCRAPER_ID`
Supported `startUrls` types: user profile, hashtag, location, audio/music, user reels, tagged posts.
### Scrape a user profile
```bash
-d '{"startUrls":["https://www.instagram.com/nike/"],"maxItems":100,"skill":true}'
```
### Scrape multiple profiles in one run
```bash
-d '{"startUrls":["https://www.instagram.com/nike/","https://www.instagram.com/adidas/","https://www.instagram.com/puma/"],"maxItems":150,"skill":true}'
```
### Scrape user reels only
```bash
-d '{"startUrls":["https://www.instagram.com/nike/reels/"],"maxItems":50,"skill":true}'
```
### Scrape tagged posts (brand mentions/UGC)
```bash
-d '{"startUrls":["https://www.instagram.com/nike/tagged/"],"maxItems":100,"skill":true}'
```
### Scrape a hashtag
```bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/travel/"],"maxItems":100,"skill":true}'
```
### Scrape a location
```bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/"],"maxItems":100,"skill":trRead the full source on GitHub (opens external page)