# 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:** 10 total users, 3 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 and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

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