Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Instagram Hashtag Scraper icon

Instagram Hashtag Scraper

Scrape Instagram hashtags: captions, likes, comments, image and video URLs, owner and timestamp. No login needed from you. $0.40 per 1,000 posts.

5 from 2 reviews on Apify 2,540 runs on Apify $0.0004 per post ($0.4 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust hashtags, startUrls, resultsLimit (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0004 per post = $0.4 per 1,000

You are charged forWhenPrice
Post returnedCharged per post returned. Failed/empty runs not charged.$0.0004

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-19, and they are what you are actually charged.

Inputs

FieldWhat it doesType
hashtagsHashtags (with or without #) to scrape top & recent posts from.array
startUrlsOr paste /explore/tags/ URLs.array
resultsLimitMax posts per hashtag. Charged per post.integer
notionConnectorOptional Notion delivery.string
notionParentIdOptional Notion data-source id.string
sessionCookiesOptional, and normally not needed. Runs work with no cookie at all. Supply your own Instagram account cookie here to run on your own account and to reach the recent tab as well as top posts. In Chrome: F12, then Application, then Cookies, then https://www.instagram.com, and copy the sessionid value. Use an account you own and are authorized to automate. Cookie values are never logged or written to output. Prefer a throwaway account over your main one.array

What you get

A structured dataset — each result includes fields like:

ownerUsernamecaptionlikesCountcommentsCounturl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

16 ready-to-run use cases

Instagram Hashtag Monitoring: Track a Branded Campaign Tag

Watch a campaign hashtag and pull each post with its caption, creator handle, likes, comments and media links. Re-run it later to see what moved.

Instagram Hashtag Tracker: Crypto Tags, Posts & Engagement

Posts under #bitcoin and #ethereum with caption, creator, likes, comments and timestamp. Put any tags in the list, it is not limited to crypto.

Instagram Hashtag Posts: Scrape #fashion Captions & Media

Recent public posts on #fashion with caption, creator handle, likes, comments, timestamp and the image or video URL. Change the tag to whatever you follow.

Instagram Reels Scraper: #fitness Posts, Views & Captions

Reels and photos carrying #fitness, with caption, creator, likes, comments, view counts on the video posts and the media URL. Swap in whichever tag you track.

Instagram Hashtag Search: #foodporn Posts, Likes & Media

Public posts under #foodporn with caption, creator handle, like and comment counts, timestamp and the image or video URL. Any hashtag works the same way.

Instagram Data Scraper: #gaming and #esports Hashtag Posts

Posts tagged #gaming or #esports with caption, creator, likes, comments and media URLs. Each row records which tag it came from, so you can split them later.

Instagram Content Research: Ad Creative Swipe File by Tag

Posts under #adcreative and #marketingtips with caption, media URL and engagement counts, so a swipe file holds the copy and the visual side by side.

Instagram UGC: Find Public Posts by Hashtag, With Handles

Recent public posts on a tag with the creator handle, caption and media links, so you know who to ask before reusing anything. It does not clear rights.

Hashtag Scraper: #dogsofinstagram and #catsofinstagram

Posts from the big pet tags with creator handle, caption, likes, comments and media URLs. Handy for spotting accounts worth approaching about a partnership.

Instagram Post Scraper: #realestate and #justlisted Feeds

Listing posts under #realestate and #justlisted with the poster's handle, caption, media URLs and post time. Change the tags to follow one local market.

Instagram Caption Scraper: #skincare Posts and Engagement

Every #skincare post comes back with its full caption, the other tags on it, the creator handle and the like and comment counts. Swap the tag freely.

Instagram Hashtag Research: Find Tattoo Artists by Style

Posts under #tattooartist and #finelinetattoo with the artist handle, caption and photos. Style tags are how you narrow it, so swap in the look you want.

Scrape Instagram Posts by Hashtag: #travel Captions, Media

Public #travel posts with caption, creator handle, likes, comments, timestamp and the image or video URL. Put any tag in and it runs the same way.

Find UGC Creators on Instagram by Branded Hashtag

Posts customers tagged with a brand hashtag, each with the creator handle and media URL so you can ask before reposting. Two brand tags are prefilled.

Instagram Hashtag Scraper: Wedding Vendor Posts & Handles

Photographers and florists posting under the trade tags, with handle, caption and media links. A vendor list built from who is actually posting.

Instagram Trending Hashtags: Pull Posts and Engagement

Posts on a tag with likes, comments and timestamps. It does not compute a trend for you: run it weekly and compare the numbers side by side.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Instagram Hashtag Scraper: posts and reels for any tag, no account needed

Give it a hashtag, get the posts back as rows. Caption, like and comment counts, image and video URLs, owner, mentions and timestamp, one row per post. If you already have /explore/tags/ links, paste those instead.

One thing to know before you start, because it changes what you should expect: a hashtag feed is a sample, not an archive. Instagram serves the slice it decides to show, which is nowhere near every post ever tagged. No scraper changes that.

InputHashtags, or /explore/tags/ URLs
OutputOne row per post or reel
Ceiling2,000 posts per run
Account neededNone from you
Price$0.40 per 1,000 posts, flat on every plan

🔍 What Instagram Hashtag Scraper does

You type tags, it returns the posts sitting under them. Photos, videos and carousels all come back in the same row shape, so you can drop the lot into a sheet without branching on type.

Instagram keeps hashtag feeds behind a login, and you do not have to deal with that. No account, no cookie, no app review, no business API approval. Nothing for you to set up and nothing that expires next week.

If you do have an Instagram cookie and want to use it, put it in sessionCookies. That adds the recent tab on top of the top posts. Most people never bother and do not need to.

The same post under two of your tags is delivered once, not twice.

📥 What you give it

{
  "hashtags": ["coffee", "latteart"],
  "resultsLimit": 50
}
FieldDefaultWhat it is
hashtagsnoneTags with or without the #. No spaces, slashes or punctuation inside a tag.
startUrlsnoneOr paste /explore/tags/… URLs. Either works, and you can mix them.
resultsLimit50Posts for the whole run, not per tag. 1 to 2,000. This is also your spend cap.
sessionCookiesnoneOptional. Your own Instagram cookie, which also gets you the recent tab.
proxyConfigurationApify defaultLeave it alone unless you have your own servers to use.
notionConnector, notionParentIdnoneOptional. Write each post into a Notion database as well as the dataset.

Give it at least one tag. A run with nothing in either field fails rather than returning an empty dataset.

📤 What you get back

A real row from a recent run, with the long CDN URLs cut short so the block stays readable:

{
  "ok": true,
  "type": "video",
  "shortCode": "DdgWc82xb8n",
  "url": "https://www.instagram.com/p/DdgWc82xb8n/",
  "caption": "#xingxing #monkey #nature #wildlife #monkeylife",
  "hashtags": ["xingxing", "monkey", "nature", "wildlife", "monkeylife"],
  "mentions": [],
  "likesCount": 906,
  "commentsCount": 33,
  "videoViewCount": 7801,
  "displayUrl": "https://instagram.frix7-1.fna.fbcdn.net/v/t51.82787-15/...",
  "videoUrl": "https://instagram.frix7-1.fna.fbcdn.net/o1/v/t2/f2/m86/...",
  "images": ["https://instagram.frix7-1.fna.fbcdn.net/v/t51.82787-15/..."],
  "isVideo": true,
  "dimensions": null,
  "ownerUsername": "cutexingxing",
  "ownerId": "44976210570",
  "timestamp": "2026-09-20T10:18:08.000Z",
  "accessibilityCaption": null,
  "hashtag": "nature"
}
FieldWhat it is
typeimage, video or carousel.
hashtagWhich of your input tags produced this row. Handy when you asked for several.
hashtags, mentionsParsed out of the caption for you, without the # or @.
shortCodeUnique per post. Use it as your dedupe key across runs.
videoViewCount0 on stills.
displayUrl, videoUrl, imagesDirect CDN links. Signed and time limited, so download anything you want to keep.

Anything Instagram did not supply on a given post comes back null, as dimensions and accessibilityCaption do above. Nothing is guessed or padded.

🧾 Reading the output

Three kinds of row can land in your dataset, and only the first kind costs anything.

RowHow to spot itCharged
A real postok: true and a shortCodeyes
The sample row_sample: trueno
A diagnosticok: false and a codeno

Filter on ok == true and you have your posts.

The code on a diagnostic row tells you what happened:

CodeWhat it means
NO_RESULTSThe tag came back empty. It may be new, misspelled or restricted.
PARTIALThe run delivered some posts for that tag and then stopped early. What arrived is complete and correct.
NOT_FOUNDNo such tag.
RATE_LIMITEDToo much traffic on that tag just now. Try again shortly.
BLOCKED, AUTHENTICATION_FAILEDThe tag could not be read this time. If you supplied a cookie, check it is still valid.
SERVER_ERROR, NETWORKInstagram was unreachable or answered badly. Re-run it.

A diagnostic row never fails the run and never bills you.

▶️ How to run it

1. Open Instagram Hashtag Scraper and click Try for free. 2. Type one or more tags into Hashtags. The # is optional. 3. Set Max posts. Start at 50 while you look at the output shape. 4. Click Start. 5. Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.

💰 How much does it cost?

$0.40 per 1,000 posts. Flat on every Apify plan, no volume tiers.

You pay per post delivered. The same post found under two of your tags is billed once. Sample rows, diagnostic rows and a tag that returns nothing cost you nothing.

💡 What people use it for

  • Watching a niche tag for a week to see which accounts keep showing up in it.
  • Pulling a few thousand captions to find out what wording actually gets engagement in a category.
  • Building a shortlist of creators posting under a branded or event tag, then checking them by hand.
  • Feeding image and video URLs into a labelling pipeline, where the caption doubles as a weak label.

🚧 What it does not do

  • No comments. This returns posts. Comments are a separate actor, linked below.
  • A tag feed is a sample. Instagram decides what to show, so you get a slice rather than the

full history of a tag, however high you set the limit.

  • A big ask can stop early. A run that asks for thousands may deliver fewer and write a

PARTIAL row. You are charged only for what arrived.

  • Media URLs expire. They are signed CDN links, not permanent addresses.
  • No private accounts. Public posts on public tags, nothing else.
  • The recent tab needs your own cookie. Without one you get the top posts for a tag.
  • An empty run fails rather than returning an empty dataset. Give it at least one tag.

🧭 Which Instagram scraper do you need?

If you wantUse
Posts under a hashtagThis one
Everything one profile has postedInstagram Scraper
One post or reel you already have the link forInstagram Post Scraper
Comments under a post or reelInstagram Comments Scraper
Reels found by keywordInstagram Reels Search
Posts tagged at a placeInstagram Location Scraper

❓ Questions people ask

Do I need an Instagram account? No. Nothing to paste, nothing to keep alive. The cookie field is optional and only adds the recent tab.

Will I get every post ever tagged? No, and nothing can. Instagram publishes a curated slice of a tag feed. You get what it serves.

Is resultsLimit per tag or per run? Per run. Ask for 100 across three tags and you get 100 posts in total, not 300.

Is scraping Instagram legal? This reads public posts only, never private accounts or messages. Results can still contain personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

Can I run it on a schedule? Yes. Use Apify's scheduler, or start it from the API and read the dataset when it finishes.

What if a tag has nothing? You get a free labelled row saying so. The run succeeds and no posts are billed.

🆘 If something breaks

Open the Issues tab on the actor page. Include the hashtag you used and the run ID, and the log is enough for us to see what happened.