Instagram Trending Scraper
Pricing
from $3.51 / 1,000 results
Instagram Trending Scraper
Unofficial Instagram Explore scraper for public posts and reels by country, with section and topic labels, captions, engagement metrics, creator, location, comments, audio, and automatically archived images and videos. Not affiliated with Instagram or Meta.
Pricing
from $3.51 / 1,000 results
Rating
5.0
(3)
Developer
AgentX
Maintained by CommunityActor stats
9
Bookmarked
291
Total users
55
Monthly active users
0.11 hours
Issues response
4 days ago
Last modified
Categories
Share
Instagram Trending Scraper extracts public posts and reels currently surfaced in Instagram Explore for a selected country, then returns normalized topic, creator, engagement, media, location, comment, and audio data.
- Select from 35 country options for a country-routed Explore request.
- Set a per-run result cap from 1 to 500 public posts.
- Export 64 declared Dataset fields in JSON, CSV, Excel, or through the Dataset API.
- Archive available post images, videos, and covers automatically; there is no download input to configure.
Run a one-result test · View API
The smallest useful test requests one result. At the FREE tier and default 256 MB memory, the maximum event charge for one stored result is $0.01390: one $0.01 Actor Start plus one $0.00390 Result.
Why Choose This API
Instagram Trending Scraper is designed for analysts, developers, content teams, and AI workflows that need a structured snapshot of Explore rather than a manually reviewed screen. Every published row represents one distinct post that completed detail collection, media archival, Dataset storage, and result billing.
| Capability | Practical benefit |
|---|---|
| Explore section and topic fields | Group content by the labels Instagram exposed with the post instead of classifying captions alone. |
| Creator, caption, engagement, location, comment, and audio fields | Compare content signals without joining several separate exports. |
| Normalized image, video, carousel, and reel records | Use one field model across the public post types returned by the current feed. |
| Locale-aware runs | Compare snapshots requested with different language-region headers. |
| Automatic post-media archival | Receive stable Apify storage links for successfully processed post covers, images, and videos. |
The main trade-off is source dependence: max_results is a cap, not a guarantee. Instagram may expose fewer distinct public Explore candidates, omit optional values, or change what it returns between runs.
Meta explains that Instagram recommendations personalize over time based on the content and accounts a user interacts with. Treat each Actor output as a run-specific public Explore snapshot, not a universal or official country ranking.
Quick Start Guide
- Open the Actor input.
- Set
max_resultsto1for the smallest useful test. - Choose one supported
country, such asUnited States. - Start the Actor and open the default Dataset when the run finishes.
{"max_results": 1,"country": "United States"}
The limit applies to successfully published Dataset rows in the current run. Each run processes its own Explore snapshot without reading earlier Dataset rows.
Input Parameters
| Field | Type | Required | Accepted values | Effect |
|---|---|---|---|---|
max_results | integer | Yes | 1 to 500 | Maximum number of public Explore post rows to publish in the run. |
country | string | Yes | One of the 35 schema options | Selects the residential proxy country and language header used for Explore. |
Supported countries are:
- Americas: United States, Canada, Brazil, Mexico, Argentina, Chile, and Colombia.
- Europe: United Kingdom, Germany, France, Italy, Spain, Netherlands, Sweden, Norway, Denmark, Finland, Poland, and Portugal.
- Asia-Pacific: Australia, Japan, South Korea, Singapore, Hong Kong, Taiwan, India, Indonesia, Thailand, Philippines, Malaysia, and Vietnam.
- Middle East and Africa: United Arab Emirates, Saudi Arabia, Turkey, and South Africa.
The country setting routes Explore discovery through a matching residential proxy and applies its Accept-Language header. Instagram does not expose an official country-ranking parameter, so two runs can still differ even when they use the same country.
Media handling is intentionally not an input. Available post covers, images, and videos are archived automatically for every row that is successfully published.
Output Data Schema
The default Dataset declares 64 fields. Optional source values can be null; collection fields can be empty when Instagram does not expose a value for that post.
| Group | Dataset fields |
|---|---|
| Primary visual | cover_url |
| Processing | processor, processed_at |
| Identity and Explore | post_id, shortcode, post_url, explore_section, explore_topic, post_type, instagram_product_type, instagram_media_type |
| Owner | owner_id, owner_username, owner_full_name, owner_is_verified, owner_is_private, owner_profile_pic_url |
| Caption and publication | caption, caption_created_at, caption_is_edited, accessibility_caption, hashtags, mentions, published_at, published_timestamp |
| Engagement | like_count, comment_count, play_count, view_count, like_and_view_counts_disabled |
| Media | media_count, image_count, video_count, is_carousel, has_video, has_audio, media_items |
| Location | location_id, location_name, location_lat, location_lng, location_address, location_city |
| Accounts and comments | tagged_users, coauthors, comments_disabled, can_viewer_save, can_viewer_reshare, is_paid_partnership, sponsor_tags, top_comments |
| Audio | audio_type, audio_title, audio_artist, audio_asset_id, audio_canonical_id, audio_duration_ms, audio_cover_url, audio_preview_url, audio_owner_username, audio_is_original, audio_is_reuse_allowed, audio_is_trending, audio_mashups_count |
This abbreviated item is illustrative and uses the same one-result United States scenario as the input and API examples:
{"cover_url": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/media-cover.jpg","processor": "https://apify.com/agentx/instagram-trending-scraper","processed_at": "2026-07-26T10:30:00+00:00","post_id": "3930000000000000000_25025320","shortcode": "DaTSSukB-Lb","post_url": "https://www.instagram.com/reel/DaTSSukB-Lb/","explore_section": "Fashion & Beauty","explore_topic": "Street Fashion","post_type": "reel","owner_username": "instagram","caption": "time to create","like_count": 333091,"comment_count": 18435,"play_count": 61839889,"media_count": 1,"has_video": true,"has_audio": true,"media_items": [{"position": 1,"media_id": "3930000000000000000","media_type": "video","media_url": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/media-video.mp4","cover_url": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/media-cover.jpg","width": 720,"height": 1280,"duration_seconds": 22.033,"has_audio": true,"accessibility_caption": null}]}
Post media and covers are archived to the run's Key-Value Store. Other auxiliary URLs, such as profile pictures or audio previews, can remain source-provided URLs and may expire.
Integration Examples
The verified Actor ID is bUkw01H4rn1K9brjp. The stable name-based ID agentx~instagram-trending-scraper can also be used in Apify API paths.
HTTP API
curl "https://api.apify.com/v2/acts/agentx~instagram-trending-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-X POST \-H "Content-Type: application/json" \-d '{"max_results":1,"country":"United States"}'
Python client
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("bUkw01H4rn1K9brjp").call(run_input={"max_results": 1, "country": "United States"})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
See the generated API page for JavaScript, CLI, OpenAPI, and additional HTTP examples maintained by Apify.
Pricing & Cost Calculator
The current local pricing configuration has one automatic Apify start event and one custom data event. There is no separate media event: automatic media archival does not trigger an additional Actor-defined media charge.
| Event | Billing unit | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|---|
| Actor Start | Run start; event count depends on memory, minimum one | $0.01000 | $0.01000 | $0.01000 | $0.01000 | $0.01000 | $0.01000 |
| Result | One successfully stored default Dataset row | $0.00390 | $0.00351 | $0.00312 | $0.00293 | $0.00293 | $0.00293 |
At the FREE tier and default 256 MB memory, a one-result test costs at most $0.01 + (1 × $0.00390) = $0.01390 in configured events. Actual prices shown by Apify can change; review the live pricing tab before a larger run.
Use Cases & Applications
- Content research: collect the captions, formats, topics, and engagement snapshots of posts currently surfaced in Explore.
- Creator discovery: identify accounts appearing in selected locale-aware snapshots and retain their public post context.
- Trend monitoring: schedule comparable runs and analyze changes in section, topic, audio, and engagement fields over time.
- Creative review: archive successfully processed post covers, images, and videos for authorized downstream analysis.
- Data and AI workflows: feed normalized Dataset rows into dashboards, notebooks, retrieval systems, or agent tools through the Apify API.
This Actor is not a profile crawler, hashtag search tool, follower exporter, direct-message automation tool, or an official Instagram analytics product.
How It Compares with Alternatives
| Option | Best fit | Main trade-off |
|---|---|---|
| Instagram Trending Scraper | Locale-aware snapshots of public Explore posts with normalized post, topic, engagement, and media data | Results depend on what the source exposes during the run. |
| Manual Explore review | Small qualitative checks where a person needs to interpret visual context immediately | Produces no repeatable structured Dataset without additional work. |
| Profile, reel, or hashtag-specific Actor | Research that starts from a known account, post URL, reel, or hashtag | It answers a different question from “what is surfaced in Explore now?” |
Choose this Actor when Explore discovery is the starting point. Choose a narrower Actor when you already know the creator or content URL you want to inspect.
Limits and Troubleshooting
| Symptom or limit | Explanation | Next step |
|---|---|---|
Fewer rows than max_results | The value is a cap; the current feed may expose fewer distinct posts, and incomplete posts are not published. | Retry later or compare another supported country with a small limit. |
A field is null or a list is empty | Instagram does not expose every metric, location, comment, or audio value for every post. | Treat missing values as source-dependent rather than as zero. |
| Country runs look similar | Localization influences the request but does not create an official national ranking. | Compare multiple scheduled snapshots before drawing a country-level conclusion. |
| A run returns no rows | Public Explore availability or post details may be temporarily unavailable. | Reproduce with {"max_results":1,"country":"United States"} and attach the run ID to an issue. |
| Media is absent from the Dataset | A row is only published after required post media is available and stored; auxiliary URLs can still be unavailable. | Check the run log and report the affected post shortcode without sharing your API token. |
FAQ
Does this Actor return an official Instagram trending ranking?
No. It returns posts currently surfaced by the public Explore experience for the selected localization. The order and availability are source-dependent and can change between runs.
Can I filter by section or topic before extraction?
No. explore_section and explore_topic are output fields. Filter them after the Dataset is produced.
Can I disable image or video downloads?
No. The public input intentionally contains only max_results and country. Available post covers, images, and videos are archived automatically.
Why can two identical inputs return different posts?
Explore content changes over time and can vary with source availability and localization. Store the processed_at value with each snapshot when comparing runs.
Are engagement values live counters?
They are snapshots of values exposed while the post was processed. Likes, comments, plays, and views may change after the run.
How are duplicate posts handled?
The Actor removes repeated post codes while collecting the current Explore snapshot. It does not scan earlier Dataset rows, so separate runs remain independent.
What exactly triggers Result billing?
One result event is requested only when a completed row is pushed to the default Dataset. Failed, incomplete, or duplicate candidates do not produce a Result row.
Can I schedule recurring snapshots?
Yes. Use Apify schedules with the same small input, then compare Dataset exports by processed_at, country, Explore section, and topic.
Responsible Use
This Actor processes publicly visible Instagram Explore content and is not affiliated with or endorsed by Instagram or Meta. You are responsible for your use of the data, including compliance with applicable law, privacy obligations, intellectual-property rights, and platform terms. Do not use the output for unauthorized surveillance, harassment, or decisions that require protected or sensitive personal information.
Related Actors
- Instagram Creator Scraper — start with a public creator when account-level research is the goal.
- Instagram Reel Scraper — inspect known reels or reel-focused inputs instead of Explore discovery.
- Reddit Viral Scraper — compare Instagram Explore signals with public viral discussions and posts on Reddit.
Enrich with AgentX
- All Video Scraper — normalize known video URLs from Instagram and other supported sites.
- All Shopping Scraper — add structured marketplace context when Explore research identifies products to investigate.
- All Jobs Scraper — add multi-source job data when research moves from creator or brand signals to hiring activity.
Support & Last Updated
Last verified against the current local Actor on 2026-07-28. The Store page can continue to show the previous published input, output, README, and pricing until this local revision is published.