# Instagram Trending Reels Research Scraper (`khadinakbar/instagram-trending-reels-scraper`) Actor

Collect a current sample of public Instagram trending Reels. Receive deduplicated Reel URLs, captions, hashtags, creator details, engagement, audio, media links, and source provenance for creative research and trend monitoring.

- **URL**: https://apify.com/khadinakbar/instagram-trending-reels-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, Marketing, AI
- **Stats:** 7 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 trending reel 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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Trending Reels Research Scraper

Turn Instagram's current public trending Reels feed into a deduplicated, source-linked dataset for creative strategists, social researchers, brand teams, analysts, and AI agents. Each row can include the Reel URL, caption, hashtags, publication time, play and engagement fields, creator identity, audio details, optional media links, feed position, provider provenance, and sample time.

### Best fit for this Actor

- Choose this Actor when the research question begins with the current public trending Reels feed and needs a bounded sample.
- Use play-count and publication-time filters to focus the returned sample around the brief.
- Enable temporary media URLs when a prompt downstream process consumes the video or thumbnail links.
- Continue with the [Instagram Profile Scraper](https://apify.com/khadinakbar/instagram-profile-scraper) when selected `creatorUsername` values need profile, bio, category, and public contact enrichment.

### From a feed sample to a creative pattern brief

A creative strategist starts with a focused result cap and asks for public captions, hashtags, engagement, creators, and audio. The Actor refreshes the provider-backed trending feed, deduplicates Reels by stable identity, and returns one source-linked row per accepted Reel. The strategist then groups recurring hooks, hashtags, creator types, and audio choices while preserving `reelUrl`, `trendSource`, `source`, and `sampledAt` beside every observation.

### Quick start input

```json
{
  "maxResults": 20,
  "maxProviderCalls": 6,
  "minPlayCount": 0,
  "includeMediaUrls": false
}
````

`maxResults` is the hard cap for returned Reel events. `maxProviderCalls` bounds source refreshes when the public feed contains repeated records.

### Input reference

| Field | Type | What it controls |
|---|---|---|
| `maxResults` | integer | Stable cap on unique trending Reel rows. |
| `maxProviderCalls` | integer | Maximum source refreshes used to gather a deduplicated sample. |
| `minPlayCount` | integer | Keeps Reels at or above the selected public play count. |
| `onlyReelsNewerThan` | string | ISO publication cutoff for focused recency research. |
| `includeMediaUrls` | boolean | Includes temporary public video and thumbnail URLs. |

### What data you receive

One dataset item represents one deduplicated public Reel accepted from the current trending-feed sample.

| Field group | Useful fields |
|---|---|
| Reel identity | `reelId`, `shortcode`, `reelUrl` |
| Content | `caption`, `captionHashtags`, `postedAt` |
| Engagement | `playCount`, `likeCount`, `commentCount`, `engagementCount`, `playEngagementRate` |
| Creator | `creatorId`, `creatorUsername`, `creatorName`, `creatorProfileUrl`, verification and privacy flags |
| Audio and media | `audioId`, `audioTitle`, `audioArtist`, `hasAudio`, `videoUrl`, `thumbnailUrl` |
| Provenance | `trendingFeedPosition`, `trendSource`, `source`, `sourceEndpoint`, `sampledAt`, `runId` |

```json
{
  "reelId": "3659267353687104516",
  "shortcode": "DYt13O8gLoE",
  "reelUrl": "https://www.instagram.com/reel/DYt13O8gLoE/",
  "caption": "A compact travel idea #travel #reels",
  "captionHashtags": ["travel", "reels"],
  "postedAt": "2026-06-01T12:00:00.000Z",
  "playCount": 456789,
  "likeCount": 12345,
  "commentCount": 123,
  "creatorUsername": "creator",
  "creatorProfileUrl": "https://www.instagram.com/creator/",
  "audioTitle": "Original audio",
  "trendingFeedPosition": 1,
  "trendSource": "instagram-public-reels-feed",
  "source": "scrapecreators",
  "sourceEndpoint": "/v1/instagram/reels/trending",
  "sampledAt": "2026-06-02T09:00:00.000Z"
}
```

### Use through the API

```bash
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~instagram-trending-reels-scraper/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "maxResults": 20,
    "maxProviderCalls": 6,
    "minPlayCount": 0,
    "includeMediaUrls": false
  }'
```

After completion, read the default dataset for Reel rows and the `OUTPUT` or `RUN_SUMMARY` record for terminal outcome, source diagnostics, item counts, and billing counters.

### Use with AI agents through Apify MCP

> Collect a bounded sample of current public Instagram trending Reels. Return Reel URL, caption, hashtags, posted time, play and engagement fields, creator username, audio title, feed position, provider source, and sample time. Read the dataset and terminal outcome after completion, preserve provenance, and summarize recurring creative patterns with source URLs beside each observation.

For strong agent routing, state the desired sample scope and filters, request only the fields needed for the brief, and ask the agent to preserve `reelUrl`, `trendSource`, `source`, and `sampledAt`. Bounded results and source refreshes make scope and cost easy to review.

### Connect the workflow

Continue with the [Instagram Profile Scraper](https://apify.com/khadinakbar/instagram-profile-scraper) when the creative brief identifies creators for deeper research. Pass selected `creatorUsername` values into its username input to add profile biography, category, and public contact fields.

### Pricing

This Actor uses Pay per event plus Apify platform usage. Open the live Pricing tab for current event details, and use `maxResults`, `maxProviderCalls`, and Apify run cost controls to keep research aligned with your budget.

### Best results

- Keep the sample focused around a specific creative, audience, or category question.
- Use `minPlayCount` and `onlyReelsNewerThan` when the brief has explicit public-engagement or recency criteria.
- Enable media URLs only for workflows that consume temporary CDN links promptly.
- Treat `trendingFeedPosition` as the order within the collected sample and keep the provenance fields with every comparison.

### Builder's note

I built the normalization around a stable Reel identity and canonical public URL because I found that repeated provider responses can otherwise distort a trend sample. Recording feed position, provider route, and sample time beside each row makes the resulting creative brief easier to audit and keeps agent summaries grounded in the collected evidence.

### Responsible use

Use public Instagram data for authorized research, preserve source context, and handle creator information in line with applicable laws, Instagram terms, and your organization's social-data policies.

# Actor input Schema

## `maxResults` (type: `integer`):

Use this when you need a bounded number of current trending Reel records. Enter an integer from 1 to 100, for example 20. Defaults to 20 and is the hard cap for billable Reel events. This is not a request for every Reel on Instagram.

## `maxProviderCalls` (type: `integer`):

Use this to limit repeated refreshes of the public trending feed when the source returns duplicates. Enter an integer from 1 to 20, for example 6. By default the actor derives a small number from maximum results and stops early once it has enough unique Reels. This is not a page number or a promise of unique records per call.

## `minPlayCount` (type: `integer`):

Use this to retain only Reels with at least the specified public play count. Enter a non-negative integer, for example 100000. Defaults to 0, which keeps Reels even when Instagram does not expose plays. This is not an engagement-rate threshold.

## `onlyReelsNewerThan` (type: `string`):

Use this to exclude Reels published before a specific ISO date or timestamp, for example 2026-07-01. The actor compares the public posted timestamp returned by Instagram when available. Leave it blank to keep the current feed sample regardless of posted date. This is not a guarantee that Instagram will return only newly published media.

## `includeMediaUrls` (type: `boolean`):

Use this when you need the Reel video and thumbnail URLs returned by Instagram's public response. Defaults to false because CDN URLs may expire and are usually unnecessary for trend analysis. Enable it only when your downstream workflow consumes media links promptly. This does not download video files.

## Actor input object example

```json
{
  "maxResults": 20,
  "maxProviderCalls": 6,
  "minPlayCount": 100000,
  "onlyReelsNewerThan": "2026-07-01",
  "includeMediaUrls": false
}
```

# Actor output Schema

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

Dataset records with public Reel, creator, engagement, audio, media, and provenance fields.

## `output` (type: `string`):

Terminal outcome, provider diagnostics, item counts, pricing counters, and stop reason.

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

Compatibility alias for the terminal run summary.

# 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 = {
    "maxResults": 5,
    "includeMediaUrls": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/instagram-trending-reels-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 = {
    "maxResults": 5,
    "includeMediaUrls": False,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/instagram-trending-reels-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 '{
  "maxResults": 5,
  "includeMediaUrls": false
}' |
apify call khadinakbar/instagram-trending-reels-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Trending Reels Research Scraper",
        "description": "Collect a current sample of public Instagram trending Reels. Receive deduplicated Reel URLs, captions, hashtags, creator details, engagement, audio, media links, and source provenance for creative research and trend monitoring.",
        "version": "1.6",
        "x-build-id": "nlWvjb6pwiR1hTkyS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~instagram-trending-reels-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-instagram-trending-reels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/khadinakbar~instagram-trending-reels-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-instagram-trending-reels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/khadinakbar~instagram-trending-reels-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-instagram-trending-reels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxResults": {
                        "title": "Maximum trending Reels",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Use this when you need a bounded number of current trending Reel records. Enter an integer from 1 to 100, for example 20. Defaults to 20 and is the hard cap for billable Reel events. This is not a request for every Reel on Instagram.",
                        "default": 20
                    },
                    "maxProviderCalls": {
                        "title": "Maximum source refreshes",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Use this to limit repeated refreshes of the public trending feed when the source returns duplicates. Enter an integer from 1 to 20, for example 6. By default the actor derives a small number from maximum results and stops early once it has enough unique Reels. This is not a page number or a promise of unique records per call."
                    },
                    "minPlayCount": {
                        "title": "Minimum play count",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Use this to retain only Reels with at least the specified public play count. Enter a non-negative integer, for example 100000. Defaults to 0, which keeps Reels even when Instagram does not expose plays. This is not an engagement-rate threshold.",
                        "default": 0
                    },
                    "onlyReelsNewerThan": {
                        "title": "Only Reels newer than",
                        "type": "string",
                        "description": "Use this to exclude Reels published before a specific ISO date or timestamp, for example 2026-07-01. The actor compares the public posted timestamp returned by Instagram when available. Leave it blank to keep the current feed sample regardless of posted date. This is not a guarantee that Instagram will return only newly published media."
                    },
                    "includeMediaUrls": {
                        "title": "Include temporary media URLs",
                        "type": "boolean",
                        "description": "Use this when you need the Reel video and thumbnail URLs returned by Instagram's public response. Defaults to false because CDN URLs may expire and are usually unnecessary for trend analysis. Enable it only when your downstream workflow consumes media links promptly. This does not download video files.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
