# Instagram Hashtag Scraper (`data_wiki/instagram-hashtag-scraper`) Actor

Scrape public Instagram reels by hashtag or keyword, no login or cookies. Get plays, likes, comments, caption, creator, location and music. Filter by date, engagement and followers; find top creators and new reels each run. JSON for trend tracking and influencer discovery.

- **URL**: https://apify.com/data_wiki/instagram-hashtag-scraper.md
- **Developed by:** [Data WiKi](https://apify.com/data_wiki) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

### 🚀 What is Instagram Hashtag Scraper?

**Instagram Hashtag Scraper** is an Instagram hashtag scraper that collects the public reels behind any hashtag or keyword, with no Instagram login and no cookies. Just **add a hashtag, a keyword or an instagram.com/explore/tags/... link**, click **Start**, and get plays, likes, comments, caption, creator, location and music for every reel as JSON, CSV or Excel, without copying anything by hand.

- 🎯 **Reels by hashtag or keyword:** mix `#hashtags`, multi-word phrases and hashtag links in one list and scrape Instagram reels in bulk.
- 📈 **Ready-made analysis:** engagement, engagement rate, top hashtags and top creators come with the data.
- 🔔 **Track a topic over time:** schedule the Actor and keep only reels that earlier runs have not returned yet.

> 💡 Need the same idea for short videos on another platform? Try the [Douyin keyword and hashtag video scraper](https://apify.com/data_wiki/douyin-search-scraper).

### ✨ What can this Instagram Hashtag Scraper do?

- 🔎 **Search by hashtag, keyword or link** (a simple Instagram keyword search scraper too): terms are lowercased, the `#` is removed and duplicates are dropped, so `Travel` and `#travel` are one term.
- 🌱 **Add related keywords:** set "Related keywords to add" and the Actor also searches what Instagram suggests for each term.
- 📊 **Four result orders:** Instagram feed order, most engagement, most plays or most recent.
- 🎛️ **Filter the reels:** posting date, plays, likes, comments, creator followers, engagement rate, hashtags, caption words, caption language, verified creators, sponsored reels and reels with a location.
- 👤 **Creator stats on request:** followers, following, posts count, bio and bio link of every creator.
- 📧 **Emails and links from captions:** lists the addresses and web links written in each caption.
- 🔔 **Only new reels since last run:** runs that share one monitoring name skip reels already returned before, a simple Instagram hashtag tracker.
- 📥 **Export** the data in **JSON, CSV and Excel**, and pick the fields before exporting.
- 🔌 **Use the API** as an Instagram reels scraper API, with schedules, webhooks and **integrations with other apps** through the Apify platform.

Public hashtag pages list reels only, so this is an Instagram hashtag reels scraper. It does not return normal posts or stories.

### 📊 What data can this Instagram Hashtag Scraper extract?

| | | |
|---|---|---|
| 🎬 Reel link, short code and ID | 📝 Caption, hashtags and mentions | 📅 Posting date |
| 📊 Plays, likes and comments | 📈 Engagement, engagement rate and virality | 👤 Creator name, username and verified flag |
| 👥 Followers, following and posts (with creator stats) | 📍 Tagged place with coordinates | 🎵 Track, artist and original-audio flag |
| 🤝 Sponsored and paid-partnership flags | 📧 Emails and links from the caption | 🔗 Video file link, size and duration |
| 🖼️ Cover image link and size | 🌍 Caption language | 🔎 Search term, rank and how the reel was found |

Besides the reel rows you get three side tables on the Output tab: **Search terms** (status, reels checked and kept, total posts Instagram reports, Instagram's short summary, related keywords), **Top hashtags** (most used hashtags and hashtag pairs, a base for an Instagram hashtag analytics tool of your own) and **Top creators** (ranked by plays, handy for Instagram creator discovery), plus a run summary with the totals of the run.

> ⚠️ **Note:** likes, comments, date, place and music need the option "Likes, comments, date, place & music" (on by default), and creators can hide like counts. Followers, engagement rate and virality need "Creator stats". Contacts need "Emails & links in captions". These fields stay empty when the matching option is off.

#### Data Instagram Hashtag Scraper can't extract

- 🚫 Normal posts, carousels and stories: public hashtag pages list reels only.
- 🚫 Private accounts and anything behind a login.
- 🚫 `isPinned` is always empty, `isCarousel` is always `false`, `isVideo` is always `true`, and the place fields `slug`, `address` and `city` are always empty.
- 🚫 Video and cover links expire after a while, so download files soon after the run if you need them.

### 💰 How much does it cost to scrape Instagram hashtags?

Instagram Hashtag Scraper uses **pay-per-event pricing**: you pay for each reel saved to the dataset, with no subscription to the Actor. The price per reel depends on your Apify plan tier. There is also one small start event per run.

#### Base pricing

- **Results** (`main_result`): charged once for every reel saved to the dataset.
- **Actor Start** (`apify-actor-start`): $0.00005 per event, charged when the Actor starts. One event is charged per GB of memory, with a minimum of one. The Actor is configured with 1,024 MB (1 GB), so this is $0.00005 per run.

The search-terms, top-hashtags and top-creators tables and the run summary are not charged.

#### Pricing by plan tier

| Plan tier | Price per reel | Calculation | Results (per 1,000 reels) |
|---|---|---|---|
| 🆓 Free | $0.0015 | 1,000 x $0.0015 | **$1.50** |
| 🥉 Bronze | $0.00135 | 1,000 x $0.00135 | **$1.35** |
| 🥈 Silver | $0.0012 | 1,000 x $0.0012 | **$1.20** |
| 🥇 Gold and above | $0.001 | 1,000 x $0.001 | **$1.00** |

Platinum and Diamond use the same price as Gold. Check the exact numbers for your plan on the Actor's Pricing tab. You also pay Apify platform usage for the run, as with any pay-per-event Actor.

#### Cost examples

| Scenario | Calculation | Total |
|---|---|---|
| 💰 100 reels, Free tier | 100 x $0.0015 = $0.15, plus start $0.00005 | **$0.15005** |
| 💰 1,000 reels, Bronze tier | 1,000 x $0.00135 = $1.35, plus start $0.00005 | **$1.35005** |
| 💰 10,000 reels, Gold tier | 10,000 x $0.001 = $10.00, plus start $0.00005 | **$10.00005** |

> ⚠️ **Spend limit:** if you set a maximum cost for a run, the Actor stops cleanly when the limit is reached and keeps the reels saved so far.

#### Why pay-per-event?

- 💡 **Transparent:** you pay for the reels you get.
- 📐 **Predictable:** reels per term times the number of terms gives the maximum before you start.
- ⏳ **No idle charges:** waiting time is not billed.

Because the price depends only on reels saved, small tests are cheap. That makes it practical for Instagram hashtag research free of subscriptions: run one term with the default of 10 reels first, then scale up.

### 🛠️ How do I use Instagram Hashtag Scraper to scrape Instagram hashtags?

1. [Create a free Apify account](https://console.apify.com/sign-up) and open **Instagram Hashtag Scraper** in the Apify Store.
2. Add hashtags, keywords or hashtag links to **Hashtags, keywords or links**, one per line.
3. Set **Reels per search term** (default 10) and, if you want, **Maximum reels in total**.
4. Add filters or choose an **Order of results** if you need them.
5. Click **Start** and follow the progress in the log and the status message.
6. Open the **Output** tab and download the data as **JSON, CSV or Excel**, or fetch it by API.

> 💡 **Tip:** start with one term and the default of 10 reels to see the data, then raise the limits. That also suits quick use as an Instagram hashtag research tool.

### ⬇️ Input

Only **Hashtags, keywords or links** (`urls`) is required, and you can enter many terms at once. Everything else is optional. You can also add extra terms through `hashtags` and `keywords`; each entry is one search term.

Here is a simple example input (reels from three terms, posted in the last 30 days, ordered by plays, with at least 100,000 plays):

```json
{
  "urls": ["https://www.instagram.com/explore/tags/travel/", "#gym", "new york"],
  "resultsLimit": 10,
  "sortBy": "plays",
  "postedAfter": "30 days",
  "minPlays": 100000
}
```

Open the **Input** tab for a full explanation of every field.

#### Reels per search term and total cap

`resultsLimit` (default 10, minimum 1) is how many reels to keep for each term. The input form states that Instagram offers about 60 reels per term to visitors who are not logged in, so asking for more per term does not help. Use `maxItems` to stop the whole run after a total number of reels, and "Related keywords to add" (`expandRelated`) or more terms to go deeper.

#### Order of results

`sortBy` can be `feed`, `engagement`, `plays` or `recent`. Feed keeps Instagram's own order and saves reels live as they are found. The other orders look at up to three times the reels per term, rank them, and then save the best ones, so "Most plays" means most plays among the reels that were checked, not among every reel on Instagram.

#### Dates

`postedAfter` and `postedBefore` take `YYYY-MM-DD` or a relative value such as `7 days`, `2 weeks`, `3 months` or `1 year`. Good: `"postedAfter": "7 days"`. Bad: `"postedAfter": "last week"` (not accepted). If `postedAfter` is not earlier than `postedBefore`, no reel can match.

#### Filters that can leave you with no results

Filters are combined, so strict settings can reject every reel. A minimum above a maximum (for example likes or followers) or "Sponsored reels only" together with "Hide sponsored reels" cannot be combined. If many reels are rejected, the run stops once "Maximum reels to check" (default 5,000) is reached, or after 2,000 reels were checked and none was kept, and the log says so. Loosen a filter and run again. Date, likes, comments and engagement filters switch on "Likes, comments, date, place & music" automatically; follower and engagement-rate filters switch on "Creator stats".

#### Caption language and hashtags

`languages` takes codes such as `en`, `es`, `pt`, `fr`, `de`, `ar` or `ru`. `mustIncludeHashtags` needs all listed hashtags in the caption, `anyOfHashtags` at least one, and `excludeHashtags` drops reels with any of them.

#### Proxy

`proxyConfiguration` is optional. If a request is blocked, the Actor retries and switches to another connection automatically.

### ⬆️ Output

Each saved reel is one dataset row. The **Output** tab shows the same rows as nine tables: reels, engagement, creators, video and cover, captions and tags, location, music, sponsorship and contacts, and search context. The three side tables and the run summary sit next to them. You can download the rows or read them through the API as an Instagram reels dataset from an Instagram reels data extractor run, as **JSON, CSV or Excel**, and pick or leave out fields before exporting. It is easy to export Instagram reels to CSV for a spreadsheet.

#### Example output (illustrative)

The values below are made up to show the structure. They are not from a real run.

```json
{
  "id": "1000000000000000001",
  "code": "ExampleCode1",
  "url": "https://www.instagram.com/reel/ExampleCode1/",
  "createdAt": "2026-01-01T12:00:00.000Z",
  "likeCount": 1200,
  "commentCount": 45,
  "caption": "Example caption #travel #gym",
  "owner": { "username": "example_creator", "fullName": "Example Creator", "isVerified": false },
  "location": { "name": "Example Place", "lat": 47.5, "lng": 7.6 },
  "video": { "url": "https://example.com/video.mp4", "width": 720, "height": 1280, "duration": 14.8, "playCount": 50000 },
  "image": { "url": "https://example.com/cover.jpg", "width": 640, "height": 1136 },
  "hashtags": ["travel", "gym"],
  "mentions": [],
  "musicInfo": { "title": "Original audio", "artist": "example_creator", "isOriginalAudio": true },
  "language": "en",
  "isSponsored": false,
  "engagementCount": 1245,
  "contacts": { "emails": [], "urls": [] },
  "searchTerm": "travel",
  "rank": 1,
  "foundVia": "direct"
}
```

#### Output fields explained

| Field | Meaning |
|---|---|
| 🔗 `url`, `code`, `id` | Reel link, short code and Instagram media id |
| 📅 `createdAt` | When the reel was posted (UTC, ISO 8601) |
| 📊 `likeCount`, `commentCount` | Likes and comments; empty when likes are hidden or details are off |
| 📈 `engagementCount`, `engagementRate`, `viralityRatio` | Likes plus comments; that sum as a percent of followers (an Instagram engagement rate calculator in bulk); plays divided by followers. The last two need creator stats |
| 👤 `owner` | Creator id, username, full name, picture, private and verified flags; followers, following, posts, bio and links with creator stats |
| 📝 `caption`, `hashtags`, `mentions` | Caption text, plus the hashtags and mentions found in it |
| 🌍 `language` | Detected caption language code |
| 🎬 `video`, `image` | Video file link, size, duration and play count (the Instagram reels views scraper part of the data), and the cover image |
| 📍 `location` | Tagged place with id, name and coordinates |
| 🎵 `musicInfo` | Track, artist and whether it is original audio |
| 🤝 `isSponsored`, `isPaidPartnership`, `coowners` | Paid-partnership or ad hashtag detected, Instagram's paid-partnership flag, and collaborating accounts |
| 📧 `contacts` | Emails and links written in the caption |
| 🔎 `searchTerm`, `rank`, `foundVia` | The term that found the reel, its position, and `direct` or `related:<term>` |
| 🤖 `isAiGenerated`, `topics`, `taggedUsers`, `accessibilityCaption`, `hasAudio`, `captionIsEdited` | Extra details Instagram shows for the reel |

### 🔔 Track a hashtag over time

Turn on "Only new reels since last run", keep one **Monitoring name** and schedule the Actor with [Apify schedules](https://docs.apify.com/platform/schedules). Each run returns only reels that earlier runs with the same name have not returned. The search-terms table records the total posts Instagram reports for each term, so you can compare the Instagram hashtag post count between runs. This lets you track how a hashtag changes over time, which is what people usually look for in Instagram hashtag monitoring tools and Instagram trend tracking.

For deeper coverage of a topic, set "Related keywords to add" to a small number such as 2 or 3. To look for Instagram trending reels, order by plays and add a recent `postedAfter`. For Instagram trending music research, the music table shows the sounds used in those reels.

### 🎯 Use cases

- 🎯 **Influencer marketing:** search niche hashtags, filter by followers and engagement rate, and shortlist creators for Instagram influencer research. It works as an Instagram influencer finder tool for outreach lists.
- 🌟 **Small creators:** turn on creator stats, set a maximum for followers and a minimum engagement rate to find Instagram micro influencers.
- 📈 **Trend research:** order by plays with a recent date filter and read the top-hashtags table to see which hashtags appear in the most-played recent reels, a starting point for Instagram trending hashtags and Instagram reels hashtags trending checks.
- 🔥 **Content planning:** the top-hashtags and music tables work as an Instagram content research tool for planning your own posts.
- 🏷️ **Brand and competitor tracking:** schedule runs on your campaign hashtags and a competitor's for a simple Instagram competitor analysis tool view.
- 📊 **Analytics:** load the rows into a dashboard for Instagram hashtag analytics and social media trend research with hashtags.
- 🤖 **Data for apps and AI:** the dataset is a clean feed from an Instagram hashtag data extractor for your own tools and AI workflows.

### 🔗 What are other tools for Instagram and social media research?

- 🎵 [Douyin search scraper for keyword and hashtag videos](https://apify.com/data_wiki/douyin-search-scraper): scrapes Douyin search results by keyword, hashtag or link, with filters.
- 👤 [Douyin creator profile scraper](https://apify.com/data_wiki/douyin-profile-scraper-followers-posts-hashtags): public Douyin creator profiles with followers, posts, hashtags and engagement.
- 👥 [Facebook group scraper for community research](https://apify.com/data_wiki/facebook-group-scraper): public Facebook groups with posts, comments, reactions and member counts.
- 💬 [Facebook comment scraper for sentiment analysis](https://apify.com/data_wiki/facebook-comment-scraper): comments and replies from public Facebook posts, reels and videos.
- 🌐 The data comes from public [Instagram hashtag pages](https://www.instagram.com/explore/tags/).
- 📚 New to Apify? Read the [Apify API documentation](https://docs.apify.com/api/v2) and the [Apify integrations](https://docs.apify.com/platform/integrations) page.

### ❓ Frequently asked questions

#### How does Instagram Hashtag Scraper work?

Use it to scrape Instagram data from public hashtag pages. You give hashtags, keywords or hashtag links. The Actor looks up the public reels for each term, adds the details you switch on, applies your filters and saves each reel to the dataset, like an Instagram hashtag extractor. It reads public data that any visitor can see and uses plain HTTP requests, no browser.

#### Can I use this Instagram hashtag scraper without a login?

Yes. It is an Instagram hashtag scraper no login is needed for: it reads public hashtag pages, so you need no Instagram account and no cookies. That is also why only what logged-out visitors see can be returned.

#### Is this Instagram hashtag scraper free?

The Actor has no subscription. You pay per reel saved, at the price of your Apify plan tier, plus the small start event; see the pricing section for the numbers. If you are looking for an Instagram reels scraper free of fixed fees, a small test of 10 reels on the Free tier costs 10 x $0.0015 = $0.015 plus the $0.00005 start event.

#### Can I scrape many hashtags and keywords at once?

Yes. Add as many entries to **Hashtags, keywords or links** as you like, one per line. Use "Maximum reels in total" to cap the whole run and "Reels per search term" to cap each term.

#### What are the limits of Instagram Hashtag Scraper?

Instagram offers about 60 reels per term to visitors who are not logged in, as the input form states. Only reels are returned, not posts or stories. A run also stops at your "Maximum reels in total", your spend limit or "Maximum reels to check".

#### Why am I getting fewer results than expected?

Most often the term has fewer public reels than you asked for, a filter rejects many reels, or the term has no public reels at all. The search-terms table on the Output tab shows the status of each term. Add related keywords or more terms, loosen the filters, or raise "Maximum reels to check".

#### Why are likes, comments or follower numbers empty?

Likes and comments need "Likes, comments, date, place & music", and creators can hide them. Followers and engagement rate need "Creator stats". Turn the option on and run again.

#### What happens when Instagram blocks a request?

The Actor retries and switches to another connection automatically, and the log says so. If nothing can be collected, the run says so instead of returning wrong data.

#### Can I get posts or stories?

No. Public hashtag pages list reels only, so this is an Instagram hashtag reels scraper and not an Instagram hashtag posts scraper.

#### Can I get the video files?

You get a link to each video file in the `video` field, so you can scrape Instagram videos as links and download them yourself where the terms allow it. These links expire after a while.

#### Can I search by keyword instead of a hashtag?

Yes. Add a keyword or phrase to **Hashtags, keywords or links**. It works as an Instagram keyword search tool, and through the API as an Instagram keyword search API.

#### Is this an Instagram hashtag generator?

No. It does not suggest hashtags to use. It shows which hashtags real reels use, in the top-hashtags table, so you can choose your own.

#### Can I integrate Instagram Hashtag Scraper with other apps?

Yes. Through the Apify platform you can connect it with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets and more, or use webhooks to react when a run finishes. See the [Apify integrations](https://docs.apify.com/platform/integrations) page.

#### Can I use Instagram Hashtag Scraper as its own API?

Yes. Use the Apify API and the `apify-client` packages for Node.js and Python; the API tab of the Actor shows ready-made calls. This is the Instagram hashtag API route for your own app: send the input, get a dataset back.

An Instagram hashtag scraper Python example with the Apify client:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("data_wiki/instagram-hashtag-scraper").call(run_input={"urls": ["#travel"], "resultsLimit": 10})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["url"], item["video"]["playCount"])
```

#### Is this an alternative to the Instagram Graph API hashtag search?

It gives you hashtag reels as JSON through the Apify API, so you can use it as an Instagram reels search API without building an app or passing a review. If you looked for the Instagram Graph API hashtag search, note that this Actor needs no Instagram app and no Instagram account. It is not an official Instagram API.

#### Why use this instead of an Instagram hashtag scraper GitHub project?

With a project you host yourself, you maintain the code and the servers. Here you send an input and get a dataset back, with schedules, webhooks and the API of the Apify platform. This Instagram hashtag scraper Apify Actor needs nothing installed. The Python example above is all the code you need, and the rows work as Instagram reels data scraper output.

#### Can I use Instagram Hashtag Scraper through MCP?

Yes. The hosted Apify MCP server (`https://mcp.apify.com`) lets AI agents find an Actor with `search-actors`, check it with `fetch-actor-details` and run it with `call-actor`.

#### Is it legal to scrape Instagram hashtag data?

This Actor reads only public data that any visitor can see, and no private or login-protected content. Whether your use is allowed depends on Instagram's terms and on privacy laws such as GDPR and CCPA, and you are responsible for following them and for keeping request volumes reasonable. This is not legal advice.

#### 💬 Your feedback and custom solutions

Found a bug or need another field? Open an issue on the Actor's **Issues** tab. Need a custom solution? Contact hello.datawiki@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

One entry per line. Use a #hashtag (travel), a keyword or phrase (new york), or a link such as https://www.instagram.com/explore/tags/travel/.

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

Optional. More hashtags, with or without the # sign. Each entry is one search term.

## `keywords` (type: `array`):

Optional. More keywords or multi-word phrases such as 'new york'. Each entry is one search term.

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

How many reels to keep for each hashtag or keyword. Instagram offers about 60 reels per term to visitors who are not logged in.

## `maxItems` (type: `integer`):

Stop the whole run after this many reels. Leave empty for no total cap.

## `expandRelated` (type: `integer`):

0 = off. A number N also searches up to N related keywords that Instagram suggests for each term, for deeper coverage.

## `sortBy` (type: `string`):

Feed keeps Instagram's own order and saves reels live as they are found. The other orders look at up to three times the reels per term, rank them, and then save the best ones.

## `contentType` (type: `string`):

Public hashtag pages list reels only.

## `postedAfter` (type: `string`):

Keep only reels posted after this date. Use YYYY-MM-DD or a relative value such as '7 days'.

## `postedBefore` (type: `string`):

Keep only reels posted before this date. Use YYYY-MM-DD or a relative value such as '30 days'.

## `minPlays` (type: `integer`):

Keep reels with at least this many plays.

## `maxPlays` (type: `integer`):

Keep reels with at most this many plays.

## `minLikes` (type: `integer`):

Keep reels with at least this many likes.

## `maxLikes` (type: `integer`):

Keep reels with at most this many likes.

## `minComments` (type: `integer`):

Keep reels with at least this many comments.

## `minFollowers` (type: `integer`):

Keep reels from creators with at least this many followers. Creator stats are collected automatically.

## `maxFollowers` (type: `integer`):

Keep reels from creators with at most this many followers, handy for finding small creators. Creator stats are collected automatically.

## `minEngagementRate` (type: `number`):

Keep reels whose (likes + comments) / followers is at least this percentage. Creator stats are collected automatically.

## `mustIncludeHashtags` (type: `array`):

A reel is kept only if its caption has all of these hashtags.

## `anyOfHashtags` (type: `array`):

A reel is kept if its caption has at least one of these hashtags.

## `excludeHashtags` (type: `array`):

Drop reels whose caption has any of these hashtags.

## `includeKeywords` (type: `array`):

Keep reels whose caption contains at least one of these words.

## `excludeKeywords` (type: `array`):

Drop reels whose caption contains any of these words.

## `excludeOwners` (type: `array`):

Drop reels posted by these usernames.

## `languages` (type: `array`):

Keep reels whose caption language is one of these codes, for example en, es, pt, fr, de, ar, ru.

## `onlyVerified` (type: `boolean`):

Keep only reels from verified accounts.

## `onlySponsored` (type: `boolean`):

Keep only paid partnerships and reels with ad hashtags. Cannot be combined with 'Hide sponsored reels'.

## `excludeSponsored` (type: `boolean`):

Drop paid partnerships and reels with ad hashtags.

## `onlyWithLocation` (type: `boolean`):

Keep only reels that have a tagged place.

## `enrichDetails` (type: `boolean`):

Adds the number of likes and comments, the posting date, the tagged place, music and tagged users to every reel. Takes one extra request per reel. Filters and sorting that need these values switch it on automatically.

## `enrichOwners` (type: `boolean`):

Adds followers, following, posts count, bio and link of each creator. Takes one extra request per creator.

## `extractContacts` (type: `boolean`):

Lists the email addresses and web links written in each caption.

## `includeDescription` (type: `boolean`):

Adds the short description Instagram shows for each term to the search-terms table.

## `includeVolume` (type: `boolean`):

Adds the total number of posts Instagram reports for each term to the search-terms table.

## `incremental` (type: `boolean`):

Skips reels already returned by earlier runs that used the same monitoring name. Handy for scheduled tracking.

## `incrementalKey` (type: `string`):

Runs that share this name share their memory of seen reels.

## `maxScanned` (type: `integer`):

Safety limit: when filters reject most reels, the run stops once this many reels have been checked in total. The check happens after each search term finishes.

## `requestDelay` (type: `number`):

Wait between result pages of the same term.

## `proxyConfiguration` (type: `object`):

Choose how requests are routed. If a request is blocked, the Actor switches to another connection automatically.

## Actor input object example

```json
{
  "urls": [
    "https://www.instagram.com/explore/tags/travel/"
  ],
  "resultsLimit": 10,
  "expandRelated": 0,
  "sortBy": "feed",
  "contentType": "reels",
  "onlyVerified": false,
  "onlySponsored": false,
  "excludeSponsored": false,
  "onlyWithLocation": false,
  "enrichDetails": true,
  "enrichOwners": false,
  "extractContacts": true,
  "includeDescription": true,
  "includeVolume": true,
  "incremental": false,
  "incrementalKey": "default",
  "maxScanned": 5000,
  "requestDelay": 1,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `reels` (type: `string`):

Every reel with cover, creator, caption, plays, likes and comments.

## `engagement` (type: `string`):

Plays, likes, comments, engagement and virality.

## `creators` (type: `string`):

Creator name, followers, bio and bio link.

## `videoMedia` (type: `string`):

Video file, size, duration and cover image.

## `captions` (type: `string`):

Caption, hashtags, mentions, topics and language.

## `location` (type: `string`):

Tagged places with coordinates.

## `music` (type: `string`):

Track and artist of each reel.

## `brandSignals` (type: `string`):

Sponsorship flags, co-authors and contacts from captions.

## `searchContext` (type: `string`):

Which term found each reel and its rank.

## `terms` (type: `string`):

One row per search term: status, total posts and related keywords.

## `hashtags` (type: `string`):

Most used hashtags and hashtag pairs.

## `topCreators` (type: `string`):

Creators ranked by plays.

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

Totals for the whole run.

# 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 = {
    "urls": [
        "https://www.instagram.com/explore/tags/travel/"
    ],
    "resultsLimit": 10,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_wiki/instagram-hashtag-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 = {
    "urls": ["https://www.instagram.com/explore/tags/travel/"],
    "resultsLimit": 10,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_wiki/instagram-hashtag-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 '{
  "urls": [
    "https://www.instagram.com/explore/tags/travel/"
  ],
  "resultsLimit": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_wiki/instagram-hashtag-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data_wiki/instagram-hashtag-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/OKHFmlWkWvaDKuXTc/builds/dw1ZoEVGbCG6HvA85/openapi.json
