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

MatchDirectRecommended for Social Media
Sourceapidojo-io/​social-media-skillsExternal source
Reported installs11,865Popularity signal only

Inspect before use

Read the source instructions and check the requirements before you install this skill.

Saved source preview

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":tr
Read the full source on GitHub (opens external page)
Context

Related work