# Instagram Keyword Scraper - Search Volume and Related Keywords (`s-r/instagram-keyword-scraper`) Actor

Get Instagram search volume, related keywords, related topics and top creators for any keyword. Reads Instagram's own public keyword pages, so no login, cookies or API key are needed.

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

## Pricing

$2.00 / 1,000 keyword returneds

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/platform/actors/running/actors-in-store#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 Keyword Scraper - Search Volume and Related Keywords

Get Instagram's own search volume for any keyword, plus the related keywords and top creators behind it. No login, no cookies and no API key: the actor reads Instagram's public surface directly.

This is a single-purpose instagram keyword scraper. It does one thing, takes a handful of inputs and returns one clean row per keyword.

### What you get

- `reels_volume` - how many reels Instagram reports for the keyword, the number its own search surface shows
- `related_keywords` and `related_keyword_count` - the terms Instagram links from your keyword
- `related_topics` - the broader topics Instagram files the keyword under
- `top_creators` - the accounts appearing most often in the keyword's top reels
- `top_reel_count`, `top_reel_total_views`, `top_reel_median_views` - reach of the sampled top reels
- `rank` and `keyword_slug` - position in the returned set and the slug Instagram uses

### Why scrape this from Instagram

Instagram has no keyword planner. There is no Ads-style volume tool for organic reach, and the Graph API exposes nothing about how often a term is searched. Planners end up guessing which of five caption phrasings will actually surface, or paying for a general-purpose social listening suite that reports mention counts rather than search demand.

This actor reads Instagram's public keyword surface directly, the same pages Instagram serves to a logged-out browser. That is where the reel volume figure and the related-keyword graph live. You get the number Instagram itself publishes, not a third-party estimate modelled from hashtag counts.

### Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `search` | array | yes | `['laptop']` | Search terms to look up, one per line. |
| `maxKeywords` | integer | no | `50` | Stop after this many keyword rows. |
| `expandRelated` | integer | no | `0` | 0 returns your terms only; related keyword names still appear on each row. 1 also looks up each related keyword to get its own volume, which multiplies rows (and cost) by roughly 20-60 per seed. |

### Output

One row per keyword.

| Field | Description |
|---|---|
| `keyword` | The keyword as Instagram spells it |
| `keyword_slug` | URL slug Instagram uses for the keyword |
| `reels_volume` | Number of reels Instagram reports for the keyword |
| `reels_volume_text` | Volume as Instagram displays it |
| `related_keywords` | Keywords Instagram links from this one |
| `related_keyword_count` | How many related keywords were found |
| `related_topics` | Broader topics Instagram associates with the keyword |
| `top_creators` | Creators appearing most in the top reels |
| `top_reel_count` | How many top reels were sampled |
| `top_reel_total_views` | Combined view count of the sampled reels |
| `top_reel_median_views` | Median view count of the sampled reels |
| `rank` | Position within the returned set |
| `url` | Public Instagram URL for this record |
| `record_type` | Which kind of row this is |

### Use cases

**Content planners sizing a caption strategy.** Before committing a quarter of content to a theme, pull volume for every candidate phrasing. `reels_volume` separates the terms with genuine search behind them from the ones that only look good in a brainstorm. Expanding related keywords one level typically returns 20 to 60 adjacent terms per seed, which is usually enough to find the phrasing with demand that competitors have not saturated.

**Agencies building a keyword map for a client.** Run the client's product vocabulary through in one pass and export the related-keyword graph. Because each row carries `related_keywords` and `related_topics`, the output assembles into a topic cluster without a second tool. Useful as the evidence layer under a content proposal, where a volume number is more persuasive than an assertion.

**Creators deciding what to make next.** `top_creators` and the reel-view aggregates tell you not just whether a keyword has volume but whether the existing top reels are pulling real views. A keyword with high volume and a low median view count on its top reels is a gap. One with high volume and enormous view counts is a fight you may not want.

**SEO teams extending keyword research past Google.** Search behaviour on Instagram diverges from Google, especially for visual and lifestyle categories. Running your Google keyword set through here shows which terms carry across and which are Google-only, which changes where the content should live.

### How it compares

There is no Apify-official Instagram keyword actor. The closest listings in the store are general keyword-search scrapers that return matching posts rather than volume figures, the largest of which sits around 28,000 lifetime runs. The distinction that matters: those return content for a search term, this returns demand for it.

### Pricing

$0.0020 per keyword returned, which is $2.00 per 1,000 rows. All pricing is pay-per-event - you only pay for results you receive. No actor-start fee, no per-compute-unit charges.

### Limits and gotchas

- Volume is reel volume, the figure Instagram publishes for the keyword. It is not a Google-style monthly search count and the two are not comparable.
- Keywords with no public Instagram page return an error row rather than a zero, so you can tell 'no data' apart from 'no volume'.
- Expand depth 2 multiplies request count quickly. Start at depth 1.
- Instagram changes the public keyword surface without notice. Rows that stop resolving surface in the run's `errors` record.
- Free Apify plans are capped at 10 rows per run. Paid plans have no cap.
- The actor never logs product identifiers or URLs, so run logs stay clean for shared workspaces.

### FAQ

**Can I get Instagram keyword search volume without an API key?**

Yes. This actor reads Instagram's public keyword pages, so no API key, login or cookie is needed. The `reels_volume` field is the figure Instagram publishes on those pages.

**Does Instagram have a keyword planner?**

No. There is no official equivalent to Google's Keyword Planner for Instagram organic search, and the Graph API exposes no search-volume endpoint. Instagram's public keyword pages are the only published source of the number, which is what this actor reads.

**How is this different from a hashtag tool?**

Hashtag tools count how many posts carry a tag. This returns how many reels Instagram associates with a search term, plus the related-term graph. Post counts measure supply, search volume measures demand.

**What does expand related keywords do?**

At depth 0 you get only the terms you submitted. At depth 1 the actor also looks up each related keyword it found, so one seed can return dozens of adjacent terms with their own volumes. Depth 2 goes one level further and is slower.

**Do I need a proxy or an Instagram account?**

Neither. The actor runs against Instagram's logged-out public surface.

### Related Actors

- [Instagram Trending Scraper](https://apify.com/s-r/instagram-trending-scraper)
- [Instagram Profile Scraper](https://apify.com/s-r/instagram-profile-scraper)
- [Instagram Post Scraper](https://apify.com/s-r/instagram-post-scraper)

# Actor input Schema

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

Search terms to look up, one per line.

## `maxKeywords` (type: `integer`):

Stop after this many keyword rows.

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

0 returns your terms only; related keyword names still appear on each row. 1 also looks up each related keyword to get its own volume, which multiplies rows (and cost) by roughly 20-60 per seed.

## Actor input object example

```json
{
  "search": [
    "laptop",
    "running shoes"
  ],
  "maxKeywords": 50,
  "expandRelated": 0
}
```

# 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 = {
    "search": [
        "laptop"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("s-r/instagram-keyword-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 = { "search": ["laptop"] }

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

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

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

```

## CLI example

```bash
echo '{
  "search": [
    "laptop"
  ]
}' |
apify call s-r/instagram-keyword-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=s-r/instagram-keyword-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/AdVfS9bK1o0XdoQVI/builds/UkiBOmtOX9YxPK92O/openapi.json
