# Instagram Scraper - Posts, Reels, Profiles, Hashtags & Comments (`zaver.api/instagram-scraper`) Actor

Scrape Instagram at scale - posts, carousels, reels, comments, mentions, and profile, hashtag & place details, plus keyword search - from any profile, post, hashtag or location URL. No login. Cheaper than the alternatives at $1.49/1,000 results. Export CSV, JSON, Excel.

- **URL**: https://apify.com/zaver.api/instagram-scraper.md
- **Developed by:** [Zaver](https://apify.com/zaver.api) (community)
- **Categories:** Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Instagram Scraper — Posts, Reels, Profiles, Hashtags & Comments

**Instagram Scraper** is an all-in-one tool to **scrape Instagram** data at scale — **without logging in**. Extract **Instagram posts, reels, carousels, comments, mentions, profiles, hashtags and places**, or **search** Instagram by keyword, and download everything as **CSV, JSON or Excel**. Point it at any profile, post, reel, hashtag or location and get clean, structured data in seconds.

One actor replaces a stack of single-purpose scrapers — an **Instagram profile scraper**, **post scraper**, **reel scraper**, **comment scraper**, **hashtag scraper** and **Instagram search scraper** — at a flat **$1.49 per 1,000 results**, below the usual $1.50–$2.70. No cookies, no API tokens, no Instagram Business account.

> ⭐ No login required · deep pagination · pay only for results · export to CSV/JSON/Excel · works over the Apify API, MCP, or scheduler.

### What can this Instagram Scraper do?

- 📸 **Scrape Instagram posts & carousels** — from a profile, a hashtag, a location, or a single post URL, with caption, hashtags, mentions, likes, comments, views, timestamp, author and media links.
- 🎬 **Scrape Instagram reels** — from any profile or hashtag, with plays, likes, comments and video links.
- 💬 **Scrape Instagram comments** — from any post or reel, with comment text, author, likes, timestamp and reply counts.
- 🏷️ **Scrape mentions & tagged posts** — every post a profile is tagged in, for brand-mention monitoring.
- 👤 **Scrape Instagram profiles** — bio, follower and following counts, posts count, category, external link, public email/phone and verification status.
- \#️⃣ **Scrape hashtag details** — post volume and metadata for any hashtag.
- 📍 **Scrape places / locations** — name, address, coordinates and category.
- 🔎 **Search Instagram** — discover profiles, hashtags or places by keyword.

### Modes at a glance

| `resultsType` | Works on | You get |
|---|---|---|
| `posts` | profile · hashtag · location · post URL | posts & carousels + engagement + media |
| `reels` | profile · hashtag | reels/clips + plays + engagement |
| `comments` | post/reel URL | comments + author + likes + replies |
| `mentions` | profile | posts the profile is tagged in |
| `details` | profile · hashtag · place · post | full details for that entity |
| **search** (`search` + `searchType`) | keyword | discovered profiles / hashtags / places |

### Why choose this Instagram Scraper

- 💸 **Lower price** — flat **$1.49 / 1,000 results**, cheaper than every tier of the popular alternatives. A 100,000-result export costs **$149**.
- 🧩 **All-in-one** — profiles, posts, reels, comments, mentions, hashtags, places and search in a single actor and a single output schema.
- 🔓 **No login, no API key, no Business account** — just paste URLs, usernames or `#hashtags`.
- 📦 **Deep export** — paginates as far as Instagram serves each feed; set the limit high and let it run.
- ⚡ **Pay per result** — you're billed only for items delivered; private or failed targets cost nothing.
- 🔌 **Automate it** — run from the Apify Console, the **API**, the **MCP server**, scheduled tasks, or integrations like Make and Zapier.

### How to use it (step by step)

1. Add what you want to scrape to **`directUrls`** — profile URLs or usernames, post/reel URLs, hashtag URLs or `#tags`, or location URLs.
2. Pick **`resultsType`** — `posts`, `reels`, `comments`, `mentions`, or `details`.
3. Set **`resultsLimit`** (results per source) and, optionally, **`onlyPostsNewerThan`**.
4. Or switch to discovery: fill **`search`** with keywords and pick **`searchType`** (`hashtag`, `profile`, `place`).
5. Run, then download the dataset as **CSV, JSON, or Excel** — or pull it from the API.

### Input examples

**Scrape a profile's posts (newest month only):**

```json
{
  "directUrls": ["https://www.instagram.com/nasa/"],
  "resultsType": "posts",
  "resultsLimit": 200,
  "onlyPostsNewerThan": "1 month"
}
```

**Scrape reels from a hashtag:**

```json
{ "directUrls": ["#travel"], "resultsType": "reels", "resultsLimit": 100 }
```

**Scrape comments from a post or reel:**

```json
{ "directUrls": ["https://www.instagram.com/p/CODE/"], "resultsType": "comments", "resultsLimit": 500 }
```

**Scrape full profile details (bulk):**

```json
{ "directUrls": ["nasa", "natgeo", "nike"], "resultsType": "details" }
```

**Search Instagram for hashtags:**

```json
{ "search": ["coffee", "specialtycoffee"], "searchType": "hashtag", "searchLimit": 25 }
```

### Output examples

**Post**

```json
{
  "type": "post",
  "url": "https://www.instagram.com/p/CxYz.../",
  "media_type": "reel",
  "caption": "Sunrise over the Dolomites …",
  "hashtags": ["dolomites", "sunrise"],
  "mentions": ["ig_europe"],
  "likes": 8421,
  "comments_count": 133,
  "views": 210544,
  "taken_at": "2026-09-01T06:12:00+00:00",
  "username": "wanderlust",
  "is_verified": true
}
```

**Comment**

```json
{ "type": "comment", "text": "Incredible shot!", "username": "traveler", "likes": 12, "reply_count": 1, "created_at": "2026-09-01T09:20:00+00:00" }
```

**Profile**

```json
{
  "type": "profile",
  "username": "nasa",
  "full_name": "NASA",
  "followers": 98000000,
  "following": 78,
  "posts_count": 4200,
  "category": "Government organization",
  "public_email": null,
  "is_verified": true
}
```

**Hashtag** → `{ "type": "hashtag", "name": "travel", "media_count": 712000000 }`
**Place** → `{ "type": "place", "name": "Central Park", "lat": 40.78, "lng": -73.96, "address": "New York, NY" }`

Every row carries a **`type`** field, so a mixed run is trivial to split by post / comment / profile / hashtag / place.

### Pricing

Pay-per-result, the same simple model as the popular alternatives — just cheaper:

| Event | Price |
|---|---|
| `result-scraped` | **$1.49 / 1,000 results** ($0.00149 each) |

- 10,000 results → **$14.90**
- 100,000 results → **$149.00**

Only successful results are billed; private, deleted or not-found targets return an error row and cost nothing. No platform usage fees.

### Use cases

- **Marketing & competitor research** — track competitors' posts, reels and engagement over time.
- **Influencer discovery & vetting** — pull profile stats and recent content before you reach out.
- **Lead generation** — collect public business emails, phones and links from profiles.
- **Social listening & brand monitoring** — watch mentions, tagged posts and hashtag activity.
- **Content & trend analysis** — analyze hashtags, captions and top-performing formats.
- **Data science & archiving** — export structured Instagram datasets for analysis or backup.

### FAQ

**Do I need an Instagram login or password?** No. It scrapes only public data — no login, cookies, or Business account.

**How many results can I get per run?** As many as Instagram serves for that target; set `resultsLimit` high for a deep export.

**Which formats can I export?** CSV, JSON, Excel, and via the Apify API/dataset.

**Can I automate or schedule it?** Yes — run it from the API, the MCP server, or scheduled tasks, and connect it to Make, Zapier and more.

**Is scraping Instagram legal?** This actor collects only publicly available data. You are responsible for using the data in line with applicable laws and Instagram's terms.

### Related actors

- [Instagram Post Scraper](https://apify.com/zaver.api/instagram-post-scraper) — posts and carousels from profiles, hashtags or locations
- [Instagram Reel Scraper](https://apify.com/zaver.api/instagram-reel-scraper) — reels with play counts and direct video URLs
- [Instagram Comments Scraper](https://apify.com/zaver.api/instagram-comment-scraper) — every comment on a post or reel, with author and likes
- [Instagram Profile Scraper](https://apify.com/zaver.api/instagram-profile-scraper) — bio, followers, email and category in bulk
- [Instagram Hashtag Scraper](https://apify.com/zaver.api/instagram-hashtag-posts-scraper) — every post under a hashtag, with likes and views
- [Instagram Stories & Highlights Scraper](https://apify.com/zaver.api/instagram-stories-highlights-scraper) — stories and highlight media with download URLs

# Actor input Schema

## `directUrls` (type: `array`):

What to scrape - one per line. Accepts profile URLs or usernames (<code>nasa</code>), post/reel URLs (<code>/p/CODE/</code>, <code>/reel/CODE/</code>), hashtag URLs or <code>#tags</code>, and location URLs. The result type below decides what is pulled from each.

## `resultsType` (type: `string`):

<b>posts</b> = posts/carousels from a profile, hashtag or location (or one post URL). <b>reels</b> = reels/clips. <b>comments</b> = comments from a post/reel URL. <b>mentions</b> = posts a profile is tagged in. <b>details</b> = profile / hashtag / place / post details.

## `resultsLimit` (type: `integer`):

Max results to return per URL/source. You are billed only per result delivered.

## `onlyPostsNewerThan` (type: `string`):

Keep only posts on/after this date. ISO date (<code>2026-01-01</code>) or relative (<code>3 days</code>, <code>2 weeks</code>, <code>1 month</code>). Applies to posts/reels.

## `skipPinnedPosts` (type: `boolean`):

Exclude pinned posts when scraping a profile's posts.

## `search` (type: `array`):

Optional. Keywords to discover profiles, hashtags or places (instead of, or alongside, direct URLs). One query per line.

## `searchType` (type: `string`):

What the search query returns.

## `searchLimit` (type: `integer`):

Max results per search query.

## Actor input object example

```json
{
  "directUrls": [
    "https://www.instagram.com/nasa/"
  ],
  "resultsType": "posts",
  "resultsLimit": 50,
  "onlyPostsNewerThan": "",
  "skipPinnedPosts": false,
  "searchType": "hashtag",
  "searchLimit": 20
}
```

# Actor output Schema

## `results` (type: `string`):

One dataset item per scraped result.

## `resultsCsv` (type: `string`):

The same records as a CSV download, ready for Excel or Sheets.

## `runSummary` (type: `string`):

Counts for the run: results by type, requests and errors.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "directUrls": [
        "https://www.instagram.com/nasa/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaver.api/instagram-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "directUrls": ["https://www.instagram.com/nasa/"] }

# Run the Actor and wait for it to finish
run = client.actor("zaver.api/instagram-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "directUrls": [
    "https://www.instagram.com/nasa/"
  ]
}' |
apify call zaver.api/instagram-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaver.api/instagram-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/irHN39WIkTMSj1762/builds/rcZ4i3QxtK4jyLRKf/openapi.json
