Instagram Reels Search | $0.4/1K Reels + $0.002 per Page
Pricing
from $0.40 / 1,000 reel results
Instagram Reels Search | $0.4/1K Reels + $0.002 per Page
Search public Instagram Reels by keyword for $0.40 per 1,000 saved Reels plus $0.002 per successfully fetched page. One page per query by default. No login, cookies, browser, or proxy setup.
Pricing
from $0.40 / 1,000 reel results
Rating
0.0
(0)
Developer
Public Signal Labs
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
19 hours ago
Last modified
Categories
Share
Search current public Instagram Reels by keyword for $0.40 per 1,000 saved Reels plus $0.002 per successfully fetched page. One page per query is the default. No Instagram login, cookies, browser, or proxy setup.
What this Actor does
- Searches Instagram's current ranked public Reel results for one or more free-text queries
- Fetches up to 10 pages separately for each paying query
- Removes duplicate Reel IDs across pages of the same query
- Preserves the same Reel separately when it appears under different queries
- Returns Reel, engagement, media, audio, and public creator fields
- Exports normalized rows to JSON, CSV, Excel, XML, and API workflows
Use it for public content discovery, trend research, creative analysis, campaign research, and repeatable keyword-monitoring workflows.
Quick start
- Enter one or more free-text searches.
- Choose the maximum pages to fetch for each query.
- Run the Actor, then open or export the default dataset.
{"queries": ["home workout", "sourdough starter"],"maxPagesPerQuery": 1}
Input
| Field | Rules |
|---|---|
queries | Required array of free-text searches. Leading/trailing whitespace is removed, equivalent Unicode/case variants are deduplicated, and first occurrence order is retained. Paying users may provide 1–10 unique queries; plan-specific limits are detailed in Pricing. Each query is limited to 100 Unicode code points. |
maxPagesPerQuery | Optional integer from 1 through 10; default 1. Applied separately to each query. Plan-specific effective limits are detailed in Pricing. This is a maximum page count, not a row guarantee. |
Unknown input properties, empty queries, control characters, invalid types, and out-of-range values are rejected before extraction begins.
Dataset rows
One row represents one charged, unique Reel for one submitted query. A Reel may appear once—and incur one result event—for each distinct query because its query provenance is meaningful. Duplicate Reel IDs from later pages of the same query are suppressed and are not charged again.
{"query": "home workout","query_index": 0,"page_number": 1,"page_rank": 1,"rank": 1,"id": "1234567890","shortcode": "ExampleCode","reel_url": "https://www.instagram.com/reel/ExampleCode/","caption": "Example caption #fitness","hashtags": ["fitness"],"mentions": [],"taken_at": "2026-01-01T12:00:00Z","play_count": 1000,"like_count": 100,"comment_count": 10,"share_count": 5,"duration_seconds": 12.5,"thumbnail_url": "https://...","video_url": "https://...","width": 1080,"height": 1920,"author_id": "987654321","author_username": "example_creator","author_full_name": "Example Creator","author_is_verified": false,"author_is_private": false,"audio_title": "Original audio","audio_artist": "Example Creator"}
| Field group | Meaning |
|---|---|
query, query_index | Normalized submitted search and its zero-based order |
page_number, page_rank, rank | First page/order where the Reel appeared and its unique query rank |
id, shortcode, reel_url | Stable Reel identity and canonical public URL |
caption, hashtags, mentions, taken_at | Current public caption metadata and publication time |
play_count, like_count, comment_count, share_count | Current engagement values when exposed |
duration_seconds, thumbnail_url, video_url, width, height | Current media metadata; external media URLs can expire |
author_* | Current public creator identity and account flags |
audio_title, audio_artist | Current audio/music attribution when exposed |
Nullable fields are returned as null when Instagram does not expose a valid value. The default dataset contains customer rows only; run summaries are not mixed into exports.
Pricing
$0.40 per 1,000 saved unique Reels + $0.002 per successfully fetched page.
| Example | Charge |
|---|---|
| 1 valid empty page | $0.0020 |
| 1 page with 12 saved Reels | $0.0068 |
| 2 pages with 20 saved Reels | $0.0120 |
Only saved unique Reels are billed. Duplicate or malformed Reels are not. A valid empty or duplicate-only page costs $0.002; failed pages are not billed. The minimum run spending limit is $0.0024, enough for one page and one saved Reel.
FREE demo limits
FREE Apify accounts can run this Actor up to 5 times per UTC calendar month. Each admitted FREE run accepts exactly one query and fetches at most one page per query; a larger submitted maxPagesPerQuery is reduced to one before extraction. Console, CLI, API, schedules, webhooks, MCP, and other Apify launch methods share the same account allowance. A run counts once admitted even when it is later aborted or unsuccessful, and resurrecting it does not start another extraction. Creating another task or API token does not reset the allowance. FREE runs use the same billing, dataset, and output contracts as paid runs. Paid Apify users are not subject to these demo limits.
Run summary
The default key-value store contains:
OUTPUT— overall status, Reel and page prices, maximum requested page charge, delivered/charged Reel totals, charged pages, and sanitized per-query outcomesAUDIT— aggregate request, retry, byte, mapping, duplicate, Reel/page-charge, storage, and timing reconciliation metrics
Per-query outcomes report requested/fetched/charged pages, raw/mapped/unique/skipped counts, duplicate suppression, whether more pages were reported, and a stable stop reason.
Overall status is one of:
SUCCEEDEDPARTIALFAILEDCHARGE_LIMIT_REACHED
A run can be PARTIAL when one query fails while another succeeds. Account-wide configuration or capacity failures stop later queries safely.
Admitted FREE runs include a freeTier object with the UTC month, claimed slot, remaining allowance, effective page limit, and policy version. Rejected FREE runs use stable reasons such as free_monthly_limit, free_run_already_consumed, or free_quota_unavailable. The record never contains an Apify user ID, API token, or internal quota-storage identifier.
Allowance exhaustion and replay complete the Apify run successfully, while OUTPUT.status remains FAILED; the stable stopReason/freeTier.outcome remains machine-readable, and identity/quota verification errors still fail the platform run.
Pagination and stopping behavior
Queries and pages run sequentially so spending-limit checks, billing order, and query provenance remain deterministic.
For each query, extraction stops when:
maxPagesPerQueryis reached;- Instagram reports no more pages;
- either next-cursor component is absent;
- the run cannot charge another page or at least one Reel result within its spending limit;
- the query encounters a terminal failure.
A page that adds zero new Reels does not by itself stop pagination. A later page can still contain new Reel IDs.
Instagram can return the same cursor pair for consecutive pages while changing the ranked results. An unchanged cursor therefore remains eligible for another bounded page request. The strict 10-page maximum prevents unbounded loops.
This version intentionally does not expose continuation tokens. Start a new search run when you need a fresh ranked snapshot.
Limitations
This Actor:
- returns Instagram's current ranked public Reel search snapshot, not an exhaustive index;
- cannot guarantee stable ordering, fixed page sizes, minimum row counts, or repeatable results;
- may return fewer unique rows on deeper pages because Instagram can repeat Reel IDs;
- does not search private content or bypass access controls;
- does not perform profile enrichment, hashtag-feed extraction, historical accumulation, or custom sorting;
- does not filter by date, language, engagement, or creator size;
- does not guarantee that external thumbnail or video URLs remain available;
- does not require or accept customer Instagram credentials, cookies, sessions, or proxy configuration.
API and CLI use
Call the Actor through the standard Apify Actor Runs API. Read Reel rows from the default dataset and reconciliation metadata from the OUTPUT and AUDIT records.
apify actors call publicsignallabs/instagram-reels-search \--input '{"queries":["home workout"],"maxPagesPerQuery":1}' \--output-dataset
The Actor also works with the Apify JavaScript and Python clients, REST API, schedules, webhooks, and platform integrations.
Responsible use
Collect and use public data only where you have a lawful purpose. Respect privacy, intellectual-property rights, platform rules, and applicable data-protection law. Minimize retained data, secure exports, and delete records when no longer needed.
This Actor is unofficial and is not affiliated with or endorsed by Instagram or Meta.
Support
Use the Issues tab on this Actor's Apify page. Include the run ID, expected result, and observed result. Never include API tokens, cookies, credentials, or private data.