# Instagram Hashtag Stats & Analytics (`instagram-data-api/instagram-hashtag-stats`) Actor

Analyze Instagram hashtags in bulk: how many posts use each one, related hashtags, the tags used together with it, and the stats of its top posts — median views, likes, comments, saves and shares. Add the top or latest posts as rows. From $1.35 per 1,000 hashtags. No login.

- **URL**: https://apify.com/instagram-data-api/instagram-hashtag-stats.md
- **Developed by:** [Instagram Data API](https://apify.com/instagram-data-api) (community)
- **Categories:** Social media, Marketing, Automation
- **Features:** Limited permissions
- **Stats:** 5 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.35 / 1,000 hashtags

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Instagram hashtag stats: post count, related hashtags and top-post analytics

**Paste hashtags and get one row each — how many posts use it, similar hashtags with their post counts, the tags used together with it, and how its top posts perform.** $1.95 per 1,000 hashtags on Starter.

**Real row, 5 Nov 2026:** #skincare — 153,578,389 posts; its 28 top reels have a median of 42,176 views and on average 1,200 saves and 562 shares; related: #skincareroutine (39M posts), #skincareproducts (13.6M).

- 🔢 **Post count** — exact, plus the short form Instagram shows (153M).
- 📊 **Top-post stats** — average and median views, likes, comments, **saves and shares**, the best post and how fresh the top is.
- 🔗 **Related hashtags** with post counts, and **hashtags used together** in the top posts.
- 📝 **The posts too** — add the top or latest posts as rows, $0.39 per 1,000.
- 🔓 **No login**; hashtags with no posts are free.

### Why scrape Instagram hashtag stats?

- **Pick hashtags:** how many posts use each one and how well its top posts do — views, likes, saves and shares.
- **Find related hashtags:** similar hashtags with their post counts, and the tags people use together with yours.
- **Measure a niche:** median views of the top reels show what it takes to rank in it.
- **Track a campaign hashtag:** schedule it and watch the post count and top posts grow.
- **Get the posts too:** add the top or latest posts as rows when you need them.

### What data can I scrape from Instagram hashtag stats?

| Data | What it is |
|---|---|
| Hashtag | The hashtag analyzed (stats row), or the one that had no posts (free row) |
| Posts at place | How many posts Instagram counts under the hashtag |
| Top posts analyzed | How many top posts of the hashtag the stats are based on (its top page, about 30) |
| Median views | Median views of the reels among its top posts — not skewed by one hit |
| Avg likes | Average likes of its top posts |
| Avg saves | Average saves of its top posts — Instagram gives them for reels |
| Avg shares | Average shares (sends) of its top posts — Instagram gives them for reels |
| Related hashtags | Similar hashtags Instagram suggests for it, each with its post count |
| Used together | Hashtags used together with it in its top posts, with how many top posts use each |

Up to 82 fields per row in total — the **Output** tab lists every one of them.

### How to scrape Instagram hashtag stats

1. Paste hashtags into the input — `skincare`, `#skincare` or a hashtag link — one per line.
2. Press **Start** — rows stream into the Output tab while the run goes.
3. Download them as JSON, CSV, Excel or HTML, or get them through the API.

Works with any public profile on [Instagram](https://www.instagram.com/) — no login, no cookies, no Instagram account
of yours.

**No input at hand?** Press **Start** with an empty input — you get a 3-row sample.

### Input example

```json
{
  "hashtags": [
    "skincare",
    "kbeauty"
  ],
  "includeTopPosts": false,
  "includeLatestPosts": false,
  "maxPostsPerHashtag": 30
}
```

### Output example: Instagram hashtag stats data

```json
{
  "type": "hashtag",
  "hashtag": "skincare",
  "id": "17843916871019199",
  "url": "https://www.instagram.com/explore/tags/skincare/",
  "postsCount": 153578389,
  "topPostsAnalyzed": 28,
  "topReelsShare": 100,
  "avgViews": 80635.6,
  "medianViews": 42175.5,
  "avgLikes": 1928.6,
  "medianLikes": 871.5,
  "avgComments": 101.5,
  "avgSaves": 1199.6,
  "avgShares": 561.8,
  "bestPostUrl": "https://www.instagram.com/reel/DfUXPJ5zrff/",
  "bestPostViews": 654783,
  "newestTopPostAt": "2026-11-05T11:08:53Z",
  "oldestTopPostAt": "2026-11-03T12:12:46Z",
  "relatedHashtags": [
    {
      "hashtag": "skincareroutine",
      "posts": 39062653
    },
    {
      "hashtag": "skincareproducts",
      "posts": 13627887
    },
    {
      "hashtag": "skincarecommunity",
      "posts": 5085139
    }
  ],
  "usedTogether": [
    {
      "hashtag": "beauty",
      "topPosts": 4
    },
    {
      "hashtag": "skin",
      "topPosts": 2
    },
    {
      "hashtag": "selfcare",
      "topPosts": 2
    }
  ]
}
```

Each row has up to 82 fields — the **Output** tab describes every one of them. Fields Instagram
doesn't show come as `null`, never as a fake `0`.

**Coming from Apify's official Instagram scrapers?** Turn on *Also add Apify-style field names*: every row also gets
`likesCount`, `commentsCount`, `videoPlayCount`, `timestamp`, `displayUrl`, `followersCount`, `followsCount`, `verified`
and more with the same values, and the post type as `Video`, `Image` or `Sidecar` — your sheets, code and n8n flows keep
working. Long list of usernames? Upload it as a CSV or TXT file in *Or upload a list*.

### Limits

- Stats are based on the hashtag's top page — about 30 posts; Instagram refreshes it every few hours.
- Saves and shares exist for reels; photos have none.
- Related hashtags come from Instagram's hashtag search.
- **Free Apify plan:** the first 20 results of each run (looking through up to 15 pages of Instagram), up to 300 results a month across our Actors, from a daily free pool shared by all free users. Any paid Apify plan gets every result — no cap.

### How much does it cost to scrape Instagram hashtag stats?

Pay per event: you pay for the rows you get, plus $0.0005 per run. No subscription to this Actor.

| Apify plan | Per 1,000 hashtags | What $5 of free credit gets you |
|---|---|---|
| Free | $2.25 | ≈ 2,200 hashtags |
| Starter | $1.95 | — |
| Business and higher | $1.35 | — |

Every event of this Actor on the Starter plan:

| Event | What it is | Price |
|---|---|---|
| Hashtag | Each hashtag analyzed: post count, related hashtags and stats of its top posts | $1.95 per 1,000 |
| Hashtag post | Each post or reel returned for the hashtag | $0.39 per 1,000 |

**Typical jobs on Starter:**

- Stats of 100 hashtags ≈ $0.20
- 100 hashtags with their top 30 posts as rows ≈ $1.37

**Always free:** hashtags with no posts and duplicates. Set **Maximum cost per run** in the run options to cap any run.

### Chain it with other Actors

Use the rows of an earlier run as the input: paste its **dataset ID** into *Or: dataset from another run*. For example,
run [Instagram Followers Scraper](https://apify.com/instagram-data-api/instagram-followers-scraper) on a brand, then give its dataset to
[Instagram Email & Phone Scraper](https://apify.com/instagram-data-api/instagram-email-phone-scraper) — you get the emails of the brand's
followers. Works with the datasets of Apify's own Instagram Actors too.

### Instagram hashtag stats API: Python, n8n, Make, Zapier and AI agents

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("instagram-data-api/instagram-hashtag-stats").call(run_input={'hashtags': ['skincare', 'kbeauty'], 'includeTopPosts': False, 'includeLatestPosts': False, 'maxPostsPerHashtag': 30})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)
```

**n8n, Make, Zapier or any HTTP client:** one request runs the Actor and returns the rows —
`POST https://api.apify.com/v2/acts/instagram-data-api~instagram-hashtag-stats/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN`
with the input JSON as the body.

**AI agents (MCP)** — your agent gets this Actor as a tool:

- **Claude Code:** `claude mcp add --transport http apify "https://mcp.apify.com?tools=instagram-data-api/instagram-hashtag-stats"`
- **Claude, Cursor, VS Code, n8n:** add `https://mcp.apify.com?tools=instagram-data-api/instagram-hashtag-stats` as a remote MCP server and sign in to Apify.
- **Ask it:** *“Compare #skincare and #kbeauty: post counts and median views of the top reels.”* · *“Find related hashtags for #coffee with their post counts.”*

### FAQ: scraping Instagram hashtag stats

**Where do the stats come from?**
From the hashtag's top page — about 30 posts, the same ones Instagram shows on top. Averages and medians of views, likes, comments, saves and shares are calculated from them.

**What are related hashtags and hashtags used together?**
Related: similar hashtags Instagram suggests in its hashtag search, each with its post count. Used together: hashtags that appear next to yours in the captions of its top posts.

**Can I get the posts themselves?**
Yes — tick Add the top posts or Add the latest posts. Each post row costs $0.39 per 1,000, the same as our Instagram Hashtag Scraper.

**Do I need an Instagram account or cookies?**
No. You only paste usernames, links or keywords. Nothing to log in, nothing to install, and your own Instagram account is never involved.

**What am I charged for — and what's free?**
Only the events in the pricing table, plus $0.0005 per run. Rows with an `error` field are free, and duplicates are never returned or charged. Each run's `SUMMARY` record shows results and free rows.

**Can I try it for free?**
Yes. On Apify's free plan you get the first 20 results of every run (up to 300 a month across our Actors), paid from the monthly free credit Apify gives every account. Paid plans get every result, with no cap.

**Can I cap what a run costs?**
Yes. Set **Maximum cost per run** in the run options — the run stops at your limit and `SUMMARY` shows `stoppedAtChargeLimit: true`.

**Can I use it from n8n, Make, Zapier or an AI agent?**
Yes, like any Apify Actor: REST API, webhooks, the n8n, Make and Zapier integrations, and the Apify MCP server for Claude, Cursor, VS Code and other MCP clients. Short timeout in your workflow or agent? Set *Return what's ready after (seconds)*: the run stops on time with what it has collected, and you pay only for that.

### For AI agents

```text
Actor:   instagram-data-api/instagram-hashtag-stats
Does:    Instagram hashtag stats: post count, related hashtags and top-post analytics with saves and shares, in bulk. No login.
Input:   {"hashtags": ["skincare", "kbeauty"], "includeTopPosts": false, "includeLatestPosts": false, "maxPostsPerHashtag": 30}
Output:  one JSON row per result, up to 82 fields; main: hashtag, postsCount, topPostsAnalyzed, medianViews, avgLikes, avgSaves, avgShares, relatedHashtags, usedTogether
Free:    hashtags with no posts and duplicates
Price:   event "hashtag-stats" $1.95 per 1,000 on Starter + $0.0005 per run
Run:     POST https://api.apify.com/v2/acts/instagram-data-api~instagram-hashtag-stats/run-sync-get-dataset-items?token=APIFY_TOKEN
```

### More Instagram Actors from us

| Content | People | Stories |
|---|---|---|
| [All-in-one Instagram Scraper](https://apify.com/instagram-data-api/instagram-scraper) · [Reels](https://apify.com/instagram-data-api/instagram-reels-scraper) · [Posts](https://apify.com/instagram-data-api/instagram-posts-scraper) · [Post details](https://apify.com/instagram-data-api/instagram-post-details) · [Reel views checker](https://apify.com/instagram-data-api/instagram-reel-views-checker) · [Hashtags](https://apify.com/instagram-data-api/instagram-hashtag-scraper) · [Search](https://apify.com/instagram-data-api/instagram-search-scraper) · [Transcripts](https://apify.com/instagram-data-api/instagram-reels-transcript) · [Tagged posts](https://apify.com/instagram-data-api/instagram-tagged-scraper) · [Audio](https://apify.com/instagram-data-api/instagram-audio-scraper) · [Locations](https://apify.com/instagram-data-api/instagram-location-scraper) · [Hashtag stats](https://apify.com/instagram-data-api/instagram-hashtag-stats) |[Profiles](https://apify.com/instagram-data-api/instagram-profile-scraper) · [Followers count](https://apify.com/instagram-data-api/instagram-followers-count-checker) · [Account age](https://apify.com/instagram-data-api/instagram-account-age-checker) · [Emails & phones](https://apify.com/instagram-data-api/instagram-email-phone-scraper) · [Similar accounts](https://apify.com/instagram-data-api/instagram-similar-accounts) · [Similar accounts with profiles](https://apify.com/instagram-data-api/instagram-lookalike-accounts) · [Followers](https://apify.com/instagram-data-api/instagram-followers-scraper) · [Comments](https://apify.com/instagram-data-api/instagram-comments-scraper) · [Likers](https://apify.com/instagram-data-api/instagram-likers-scraper) · [Engagement rate](https://apify.com/instagram-data-api/instagram-engagement-rate-calculator) · [Username checker](https://apify.com/instagram-data-api/instagram-username-checker) · [User ID](https://apify.com/instagram-data-api/instagram-user-id-finder) · [Follower checker](https://apify.com/instagram-data-api/instagram-follower-checker) | [Stories](https://apify.com/instagram-data-api/instagram-stories-scraper) · [Highlights](https://apify.com/instagram-data-api/instagram-highlights-scraper) |

What changed and when — see the **Changelog** tab.

# Changelog

This Actor's version history is a separate document: https://apify.com/instagram-data-api/instagram-hashtag-stats/changelog.md

# Actor input Schema

## `hashtags` (type: `array`):

One per line, with or without <code>#</code>, in any language, or a hashtag link.

## `inputFile` (type: `string`):

A CSV or TXT file: one username or link per line, or a table — we take the column named <code>username</code>, <code>url</code> or <code>link</code> (otherwise every cell). Added to the list above; duplicates are skipped.

## `includeTopPosts` (type: `boolean`):

Every top post the stats are based on, with views, likes, comments, saves and shares. Charged per post — the same price as our Instagram Hashtag Scraper.

## `includeLatestPosts` (type: `boolean`):

The newest posts under the hashtag, like the app's Recent tab. Charged per post, the same price.

## `maxPostsPerHashtag` (type: `integer`):

How many top or latest posts to return as rows for each hashtag. The stats always use the hashtag's top page (about 30 posts).

## `datasetId` (type: `string`):

Pick the dataset of an earlier run (or paste its ID). We take usernames from <code>username</code> / <code>ownerUsername</code>.

## `officialFieldNames` (type: `boolean`):

Every row also gets <code>likesCount</code>, <code>commentsCount</code>, <code>videoPlayCount</code>, <code>timestamp</code>, <code>displayUrl</code>, <code>followersCount</code>, <code>followsCount</code>, <code>verified</code>… with the same values, and the post type as Video, Image or Sidecar. Sheets, code and n8n flows made for the official scrapers keep working. Our own fields stay. No extra charge.

## `addSummaryRow` (type: `boolean`):

One free row at the end of the results: rows returned, what was charged (events and USD) and why the run stopped — for n8n, Make, Zapier and AI agents that read only the dataset. The same summary is always saved as SUMMARY in the run's key-value store.

## `includeRaw` (type: `boolean`):

Every row also gets <code>raw</code>: the whole object Instagram returned for it — every field it sends, untouched, for your own parsing or an AI agent. Heavy (about 30 KB a post), so it is added to the first 1,000 rows of a run. No extra charge.

## `returnWithinSecs` (type: `integer`):

Stop after this many seconds and return the results collected so far — you pay only for them. Handy for AI agents with a short tool timeout. Empty — run until everything is collected.

## Actor input object example

```json
{
  "hashtags": [
    "skincare",
    "kbeauty"
  ],
  "includeTopPosts": false,
  "includeLatestPosts": false,
  "maxPostsPerHashtag": 30,
  "officialFieldNames": false,
  "addSummaryRow": false,
  "includeRaw": false
}
```

# Actor output Schema

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

All rows of this run (JSON, CSV, Excel).

## `summary` (type: `string`):

What was returned, what was free and why (SUMMARY record).

# 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 = {
    "hashtags": [
        "skincare",
        "kbeauty"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("instagram-data-api/instagram-hashtag-stats").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 = { "hashtags": [
        "skincare",
        "kbeauty",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("instagram-data-api/instagram-hashtag-stats").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 '{
  "hashtags": [
    "skincare",
    "kbeauty"
  ]
}' |
apify call instagram-data-api/instagram-hashtag-stats --silent --output-dataset

```

## MCP server setup

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

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/eijPfHt1DwHNFrNrY/builds/XLfv2mIUt8k4m97Zg/openapi.json
