The Apify Instagram Scraper: Which Actor to Use in 2026
Apify has five Instagram scrapers, not one. Which actor fits which job, how to run them without getting blocked, and what two measured runs actually cost.

We pull a lot of Instagram data. Reels for trend tracking, profiles for creator scouting, hashtag feeds for campaign monitoring. Every time someone says "just use the Apify Instagram scraper," the same small confusion follows: there is no single Apify Instagram scraper. There are five, they take different inputs, they return different records, and reaching for the wrong one means paying for fields you never read.
This guide answers which actor fits which job, how to run them without tripping a block, and what they cost. That last part we measured rather than quoted, and the measurement disagreed with the listed price. Monid is the OpenRouter for agent tools, so we resell these actors; the section on cost is the one where that arrangement looks worst, and it is staying in.
"The Apify Instagram scraper" is not one tool. It is a family of five actors, and the fastest way to overpay is to reach for the wrong member.
How do I automate scraping public Instagram data without getting blocked?
By not being the one making the requests.
This is the question underneath most of the others, and the answer is structural rather than clever. Blocks land on whoever holds the session and the IP. If you drive a logged-in browser or run a script from your own address, then rate limits, challenges and bans arrive at your account and your infrastructure. Rotating user agents and adding sleeps postpones that; it does not change who is exposed.
A managed actor moves the exposure. It reads public pages from the provider's own pool, handles retries and layout changes on their side, and hands you structured JSON. You never authenticate, so there is no session of yours to restrict.
Two limits come with that, and both are correct behaviour rather than gaps:
Private accounts return nothing. Every scraper here reads what a logged-out visitor sees. If a profile is private, that is the whole answer, and a tool claiming otherwise is worth distrusting.
Public counts are not the owner's analytics. Reel view and play counts are the numbers Instagram exposes publicly. They can lag or differ from a creator's private insights. For accounts you own, the Instagram Graph API returns first-party insights after app review, and it is the right tool for your own dashboard and the wrong one for competitors, because it cannot return an account that never connected to your app.
Which Apify Instagram scraper do you actually need?
Start from the unit you already hold. A username points at the post or profile scraper. A hashtag or a sound points at the hashtag scraper. A vague "who even posts about this" points at the search scraper, to find handles first.
| Actor | Takes | Returns | Reach for it when |
|---|---|---|---|
apify/instagram-post-scraper | usernames or post URLs | posts and reels with engagement, captions, audio, comments | you want a profile's recent reels and posts |
apify/instagram-hashtag-scraper | hashtags or keywords | posts or reels for a tag, with engagement | you track a trend or a sound, not one account |
apify/instagram-profile-scraper | usernames, IDs, or URLs | profile bio, follower counts, recent media | you need the account itself, not every post |
apify/instagram-search-scraper | a search term | matching profiles, places, and hashtags | you are discovering accounts to scrape next |
apify/instagram-api-scraper | URLs or a query, no login | posts, profiles, places, and hashtags | one endpoint that covers several shapes |

All five verified present on 2026-08-12. Inspecting an actor's exact fields and price is free, so when two look close, read both schemas before spending anything.
The post scraper is the default for reels and posts
If you have a handle and want its recent reels and posts, this is the one. It takes an array of usernames, profile URLs, or exact post URLs, so account sweeps and single-post lookups share one call shape, and resultsLimit caps how many posts come back per profile. Reels arrive inside the same post stream, tagged by type, with video view and play counts on the reel records.
monid inspect -p apify -e /apify/instagram-post-scraper
monid run -p apify -e /apify/instagram-post-scraper \
-i '{"username":["natgeo"],"resultsLimit":20}'
The hashtag scraper starts from a tag, not an account
Some jobs are not about a known account at all: every reel riding a sound, a branded hashtag, a campaign tag, whoever posts it. Set resultsType to reels so you get video records rather than a mixed feed.
monid run -p apify -e /apify/instagram-hashtag-scraper \
-i '{"hashtags":["cleantok"],"resultsType":"reels","resultsLimit":20}'
Each entry in hashtags is one search term, so add tags as separate array items rather than stringing words onto one line. Flip keywordSearch to true for a multi-word phrase instead of a single tag, which is how you catch content that never bothered to hashtag the thing it is about.
Profile, search and api cover the rest
The profile scraper returns the account itself, bio, counts and a slice of recent media, when you need the profile and not every post it ever made. The search scraper turns a plain term into matching profiles, places and hashtags, which is the step before scraping when you do not yet know the handles. The api scraper is the generalist: posts, profiles, places or hashtags by URL or query, useful when one endpoint beats wiring up four.
Give this to your agent![]()
Set up https://sandbox.monid.ai/SKILL.md, and then use Monid to show me what I can do for Instagram.How do I build an API that scrapes Instagram creator profiles?
Do not build the scraping. Build the part that is yours.
The question usually means "how do I stand up an endpoint my product can call", and the trap is answering it with infrastructure. The scraping layer is a solved, commoditised problem with several vendors, and rebuilding it buys you a parser to maintain on Instagram's schedule rather than your own.
What is worth building is everything after the record arrives: the creator scoring, the deduplication against people you already track, the storage, and the judgement about which accounts are worth a second look. Call a managed actor for the raw records and spend your engineering on the layer that differentiates you.
The practical shape is one HTTP call to a marketplace endpoint with the provider and actor as parameters, rather than an SDK integration per vendor. When an actor is removed or degrades, you change two strings instead of rewriting an integration.
What the records give you

The engagement block earns its keep: like and comment counts, and for reels the video view and play counts, which let you rank by median views instead of follower count, the single best filter against a bought audience. Captions, hashtags and mentions are text you feed straight to a model for topic and claim analysis without touching a video file. Audio track and author are how you catch a sound breaking out before the videos riding it do. Thumbnails, media URLs and duration cover the reels you decide to pull down, a sample of recent comments surfaces objections and copycats, and pinned, sponsored and paid-partnership flags separate organic reach from promoted.
Note the detail-level control on the post scraper. Basic data is faster and cheaper; the detailed package adds alt text, latest comments, music info and video play count, so you pay for depth only when a record earns it.
What should I use for the scraping layer in an n8n automation?
One HTTP node against a marketplace, not a vendor node per platform.
This comes up constantly, and the version of the question we found named Instagram and X in the same breath, which is the whole point: an automation rarely needs one platform. Wire in a dedicated node per source and you have four integrations, four accounts and four things that break independently.
The failure that keeps happening is an actor being removed or a vendor losing access to a source, at which point every workflow hardcoded to it stops at once. Pointing at a catalog with the provider and endpoint as parameters turns that from a rebuild into an edit.
What do these actors actually cost?
Less than you would guess, and not in the shape the listing says. This is the part where we contradict our own catalogue.
apify/instagram-post-scraper is listed as billing per call. If that were literally true, one call would cost the same whether it returned five posts or five hundred. We ran it twice against the same account on 2026-08-12, changing only resultsLimit:
resultsLimit | Records returned | Charged |
|---|---|---|
| 5 | 5 | baseline |
| 20 | 20 | roughly 4.75x the baseline |
Twenty posts cost roughly 4.75 times what five posts cost. It is not a flat per-call charge; the bill tracks how many records come back.
This is the second endpoint where we have found that. The Amazon reviews scraper is described as returning one result per input query, and a measured run billed per review instead. Two endpoints, two different stated shapes, and in both cases the charge scaled with volume returned.
So the working rule, which costs us the convenience of a simple price table: treat the listed billing shape as the vendor's description and a small real run as the measurement. monid discover and monid inspect are free and tell you what exists and what it claims. A five-record run costs under a cent and tells you what it charges. Do that before you size a batch of two hundred creators.
With that caveat, the magnitudes: a sweep of a few hundred creators lands in low single-digit dollars and costs nothing in a month you do not run it. Live per-endpoint figures are at monid.ai/tools.
When should you not use Monid?
Instagram data is a daily fixture of your product. These are Apify's actors, maintained by Apify's own scraping specialists, and running them direct on Apify gets you a console, scheduling, storage and their integrations. Past a high, steady daily load the plan floor divided across records dips below metered pricing. If you live in that platform every day, live in it.
You need your own accounts' real analytics. That is the Graph API, not a scraper, as above.
You need a contractual guarantee. A marketplace optimises for breadth and switching cost, not for an SLA with your name on it.
And the caution about us: our price metadata did not predict the bill on either endpoint we measured. That is a real defect in the catalogue, not a presentation choice, and until it is fixed the honest instruction is to verify with a small run rather than to trust the listing. We would rather you read that here than discover it on an invoice.
Conclusion
There is no "the Apify Instagram scraper". There is a family of five, and picking correctly is mostly a matter of naming the unit you already hold: a handle goes to the post scraper, a tag or sound to the hashtag scraper, a bare search term to the search scraper first.
Two things matter more than the pick. Getting blocked is a question of who makes the request, not how cleverly you disguise it, so the durable answer is to not be the one holding the session. And the cost of these actors scales with records returned regardless of what the billing shape is called, which we know because two runs five minutes apart disagreed with the listing.
Start with the free part: monid discover -q "instagram" lists the family and monid inspect prints each schema without spending anything. Then run one five-record call and read the charge. Begin at monid.ai.
FAQ
Which Apify Instagram scraper is best for reels?
For reels from a specific account, apify/instagram-post-scraper returns them inside the post stream with video view and play counts attached. For reels across a hashtag, sound or keyword, apify/instagram-hashtag-scraper with resultsType set to reels is the right member of the family.
Do I need an Apify account to use an Apify Instagram scraper?
Only if you run direct on the Apify platform. Metered through Monid you integrate once against one balance, and the same Apify actors run behind the endpoint with no separate Apify account or plan.
Can these scrapers pull private profiles?
No. Every Instagram scraper reads only what a public, logged-out view can see. A private account returns nothing, which is correct behaviour rather than a coverage gap.
How are the actors billed?
Nominally per call or per result depending on the actor, but as measured above the charge tracks records returned in both cases. Discovering and inspecting are free; only a run bills. Check a small run before sizing a large one, and read current figures at monid.ai/tools.
Last updated August 2026.


