Instagram Hashtag Scraper - Posts & Reels, $0.40/1k avatar

Instagram Hashtag Scraper - Posts & Reels, $0.40/1k

Pricing

Pay per event

Go to Apify Store
Instagram Hashtag Scraper - Posts & Reels, $0.40/1k

Instagram Hashtag Scraper - Posts & Reels, $0.40/1k

Hashtags in, posts out: caption, like and comment counts, image and video URLs, owner, mentions, timestamp and which tag produced the row. Instagram gates hashtag feeds behind a login, so runs go through a data provider we pay for. Nothing needed from you. $0.40 per 1,000 posts.

Pricing

Pay per event

Rating

5.0

(1)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

23

Total users

12

Monthly active users

2 days ago

Last modified

Share

Instagram Hashtag Scraper — posts by tag

Hashtags in, posts out. One flat row per post: caption, like and comment counts, image and video URLs, owner, hashtags, mentions and timestamp. /explore/tags/ URLs work too if that's what you already have.

You don't need a login, a cookie, an app review or a business API approval. That needs explaining, because Instagram doesn't hand hashtag feeds to signed-out callers.

Where the data comes from

Instagram serves hashtag feeds only to a signed-in caller. There's no logged-out route to them, at any address or with any fingerprint.

So if you put a cookie in sessionCookies, the run uses yours. Most people don't, and then the run goes through a licensed data provider we pay per request instead. No login is needed from you, but this isn't a keyless scrape and it would be dishonest to call it one. Something is signed in somewhere. We're the ones paying for it.

Your own cookie buys you a rate limit nobody else draws on. That's the only reason to bother.

What you get

A real row, trimmed for length:

{
"ok": true,
"type": "image",
"shortCode": "DcSuVkYONIE",
"url": "https://www.instagram.com/p/DcSuVkYONIE/",
"caption": "Details 🤍✨ ...",
"hashtags": ["flatlayinspiration", "visualcrush", "flatlayart"],
"mentions": [],
"likesCount": 3,
"commentsCount": 36,
"videoViewCount": 0,
"displayUrl": "https://scontent-iad3-2.cdninstagram.com/...",
"videoUrl": null,
"images": ["https://scontent-iad3-2.cdninstagram.com/..."],
"isVideo": false,
"dimensions": { "height": 1350, "width": 1080 },
"ownerUsername": "…",
"ownerId": "…",
"timestamp": "2026-08-19T14:02:11.000Z",
"accessibilityCaption": "…",
"hashtag": "coffee"
}

type is image, video or carousel. hashtag tells you which of your input tags produced the row. Hashtags and mentions are parsed out of the caption for you.

Input

{
"hashtags": ["coffee", "latteart"],
"resultsLimit": 50
}
FieldDefaultNotes
hashtagsWith or without #.
startUrlsOr /explore/tags/… URLs.
resultsLimit50Posts per run, capped at 2,000. This is your spend cap.
sessionCookiesOptional. Your own Instagram cookie, to run on your own rate limit. Stored as a secret.
proxyConfigurationApify datacenterLeave the default. Rotating datacenter addresses are included in the run cost and the actor hops on every block. Your own proxy servers are used exactly as given if you'd rather.
notionConnector / notionParentIdOptional: write each post into a Notion database too.

Limits

  • A hashtag feed is a sample, not an archive. Instagram returns the top and recent sections it chooses to show, which is nowhere near every post ever tagged. No scraper changes that.
  • Paging stops at 12 pages per tab. resultsLimit is what actually bounds a run.
  • Media URLs expire. The CDN links are signed and time-limited. Download what you want to keep.
  • The provider lane has a per-run request budget. If a run reaches it, the run stops early with a diagnostic row saying so. Posts already delivered are complete and correct, and the diagnostic row is free.
  • If nothing usable is available, the run still succeeds and returns one clearly labelled _sample row so you can see the output shape. No per-post fee is charged for it.
  • No comments. This returns posts. Comments are a separate scraper.

Billing

$0.0004 per post ($0.40 per 1,000), plus $0.001 when a run starts. Flat on every Apify plan, no volume tiers.

Charged per post actually delivered. Posts are deduplicated across tags and lanes before charging, so the same post is never billed twice. Diagnostic rows, sample rows, provider-budget stops and empty runs cost nothing beyond the start fee. That one goes by run memory, one event per gigabyte, so it's $0.001 at the default 1 GB.