Instagram Hashtag Scraper avatar

Instagram Hashtag Scraper

Under maintenance

Pricing

from $0.001 / result

Go to Apify Store
Instagram Hashtag Scraper

Instagram Hashtag Scraper

Under maintenance

Fast & reliable Instagram hashtag scraper. Extract posts, reels, and analytics from any hashtag. No duplicates, rich data fields, 30-40% cheaper than alternatives.

Pricing

from $0.001 / result

Rating

0.0

(0)

Developer

XiaoZhi DataTools

XiaoZhi DataTools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

17 days ago

Last modified

Categories

Share

Full-featured Instagram hashtag scraper with multi-account rotation, date filtering, engagement filters, and 30+ data fields per post.

Why choose this actor?

  • No duplicates — Built-in MD5 deduplication across hashtags
  • Multi-account rotation — Distribute requests, reduce ban risk
  • 30+ data fields — Engagement, location, music, comments, carousel, tagged users, dimensions
  • 12 feature toggles — Control exactly what data you need
  • Engagement filters — Filter by minimum likes and comments
  • Date range filtering — Only scrape posts within a time window
  • Hashtag analytics — Get total post count and related hashtags
  • 50% cheaper than the official Apify Instagram Hashtag Scraper

Features

Scraping Modes

  • Top posts — Trending/viral posts for a hashtag
  • Recent posts — Newest posts in chronological order
  • Reels — Video content only
  • All — Top + Recent combined

Data Fields (all configurable with toggles)

CategoryFieldsToggle
CoreID, shortcode, URL, caption, media type, product typeAlways on
EngagementLikes, comments, views, playsAlways on
AuthorUsername, full name, user ID, is privateAlways on
TimestampsPosted time, scraped timeAlways on
LocationName, ID, lat/lng, address, cityincludeLocation
MusicTitle, artist, audio type (Reels)includeMusic
Tagged UsersUsername, user IDincludeTaggedUsers
CarouselCount, individual media types/URLsincludeCarouselMedia
Image URLsMultiple resolutionsincludeImageUrls
DimensionsWidth, heightincludeDimensions
CommentsTop comments with username, text, likes, timestampscrapeComments
Related HashtagsRelated hashtag names and IDsincludeRelatedHashtags
AnalyticsTotal post count, profile pic per hashtagincludeAnalytics
Flagsis_sponsored, comments_disabledAlways on
Hashtags & MentionsExtracted from captionAlways on

Filtering Options

  • Date rangedateSince / dateUntil (YYYY-MM-DD)
  • Minimum likesminLikes (only posts with X+ likes)
  • Minimum commentsminCommentsFilter (only posts with X+ comments)

Multi-Account Support

  • Add multiple Instagram accounts for round-robin rotation
  • Each request uses a different account
  • Session auto-saved for reuse (no re-login needed)
  • Single account failure doesn't stop the scrape

Anti-Ban Measures

  • Random 2-4 second delay between requests
  • Account rotation distributes load
  • Residential proxy support (recommended for 1000+ posts)
  • Session persistence reduces login frequency

Input Parameters

ParameterTypeDefaultDescription
hashtagsstring[]requiredHashtags to scrape (without #)
resultsLimitnumber100Max results per hashtag (0=unlimited)
resultsTypeselectalltop / recent / reels / all
dateSincetextOnly posts after this date (YYYY-MM-DD)
dateUntiltextOnly posts before this date (YYYY-MM-DD)
minLikesnumber0Minimum likes filter
minCommentsFilternumber0Minimum comments filter
scrapeCommentscheckboxfalseFetch top comments per post
maxCommentsnumber5Comments per post (1-50)
includeLocationcheckboxtrueLocation data
includeMusiccheckboxtrueMusic/audio info
includeTaggedUserscheckboxtrueTagged users
includeCarouselMediacheckboxtrueCarousel details
includeImageUrlscheckboxtrueMulti-resolution image URLs
includeDimensionscheckboxtrueMedia width/height
includeRelatedHashtagscheckboxfalseRelated hashtags
includeAnalyticscheckboxfalseHashtag analytics
instagramAccountsjsonMulti-account array
instagramUsernametextSingle account (fallback)
instagramPasswordsecretSingle account password
proxyproxyApify ResidentialProxy configuration

Example Inputs

Basic (single account)

{
"hashtags": ["travel", "photography"],
"resultsLimit": 50,
"resultsType": "all",
"instagramUsername": "your_account",
"instagramPassword": "your_password"
}

With filters (date + engagement)

{
"hashtags": ["fitness"],
"resultsLimit": 200,
"resultsType": "top",
"dateSince": "2026-01-01",
"dateUntil": "2026-06-01",
"minLikes": 100,
"minCommentsFilter": 10,
"instagramUsername": "your_account",
"instagramPassword": "your_password"
}
{
"hashtags": ["travel", "food", "fitness"],
"resultsLimit": 500,
"resultsType": "all",
"dateSince": "2026-01-01",
"minLikes": 50,
"scrapeComments": true,
"maxComments": 10,
"includeLocation": true,
"includeMusic": true,
"includeTaggedUsers": true,
"includeCarouselMedia": true,
"includeImageUrls": true,
"includeDimensions": true,
"includeRelatedHashtags": true,
"includeAnalytics": true,
"instagramAccounts": [
{"username": "account1", "password": "pass1"},
{"username": "account2", "password": "pass2"},
{"username": "account3", "password": "pass3"}
]
}

Minimal (fast, lightweight)

{
"hashtags": ["python"],
"resultsLimit": 20,
"resultsType": "top",
"includeLocation": false,
"includeMusic": false,
"includeTaggedUsers": false,
"includeCarouselMedia": false,
"includeImageUrls": false,
"includeDimensions": false,
"instagramUsername": "your_account",
"instagramPassword": "your_password"
}

Output Schema

Each item in the dataset contains:

{
"id": "123456789",
"shortcode": "ABC123",
"url": "https://www.instagram.com/p/ABC123/",
"caption_text": "Beautiful sunset #travel #sunset",
"media_type": 1,
"media_type_name": "photo",
"product_type": "feed",
"like_count": 1520,
"comment_count": 43,
"view_count": 0,
"play_count": 0,
"username": "traveler",
"full_name": "John Travel",
"user_id": "987654321",
"is_private": false,
"taken_at": "2026-06-01T12:00:00+00:00",
"location_name": "Paris, France",
"location_id": "12345",
"location_lat": 48.8566,
"location_lng": 2.3522,
"location_address": "Paris, France",
"location_city": "Paris",
"hashtags": ["travel", "sunset"],
"mentions": ["friend"],
"tagged_users": [{"username": "friend", "user_id": "111"}],
"carousel_count": 3,
"carousel_media": [...],
"image_urls": [{"url": "...", "width": 1080, "height": 1080}],
"width": 1080,
"height": 1080,
"video_url": null,
"video_duration": null,
"music_title": "Song Name",
"music_artist": "artist_name",
"audio_type": "original_sounds",
"top_comments": [
{"id": "...", "text": "Great!", "username": "user1", "like_count": 5, "created_at": "..."}
],
"is_sponsored": false,
"comments_disabled": false,
"scraped_at": "2026-06-03T10:00:00+00:00"
}

Hashtag Analytics Output (when includeAnalytics=true)

Saved separately as HASHTAG_ANALYTICS in key-value store:

{
"travel": {
"name": "travel",
"id": "12345",
"media_count": 794857299,
"profile_pic_url": "...",
"related_hashtags": [
{"name": "wanderlust", "id": "67890"},
{"name": "explore", "id": "11111"}
],
"related_hashtags_count": 2
}
}

Important Notes

  • Instagram account required — This actor needs valid Instagram credentials
  • Use dedicated accounts — Don't use your personal Instagram account
  • Rate limits — Instagram limits requests per account per hour
  • Multi-account recommended — Use 2-3 accounts for 500+ posts
  • Proxy recommended — Residential proxy for large volumes

Changelog

v1.1 (2026-06-03)

  • Added date range filtering (dateSince/dateUntil)
  • Added engagement filters (minLikes/minCommentsFilter)
  • Added related hashtags extraction
  • Added hashtag analytics (media_count, profile_pic)
  • Added media dimensions (width/height)
  • Added is_sponsored field
  • Improved error handling for non-existent hashtags
  • Improved rate limit handling

v1.0 (2026-06-03)

  • Initial release
  • Top/Recent/Reels/All scraping modes
  • Multi-account rotation
  • 30+ configurable data fields
  • Comment scraping
  • MD5 deduplication
  • Session persistence
  • Apify proxy support