Instagram Hashtag Scraper
Under maintenancePricing
from $0.001 / result
Go to Apify Store
Instagram Hashtag Scraper
Under maintenanceFast & 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
Maintained by CommunityActor 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)
| Category | Fields | Toggle |
|---|---|---|
| Core | ID, shortcode, URL, caption, media type, product type | Always on |
| Engagement | Likes, comments, views, plays | Always on |
| Author | Username, full name, user ID, is private | Always on |
| Timestamps | Posted time, scraped time | Always on |
| Location | Name, ID, lat/lng, address, city | includeLocation |
| Music | Title, artist, audio type (Reels) | includeMusic |
| Tagged Users | Username, user ID | includeTaggedUsers |
| Carousel | Count, individual media types/URLs | includeCarouselMedia |
| Image URLs | Multiple resolutions | includeImageUrls |
| Dimensions | Width, height | includeDimensions |
| Comments | Top comments with username, text, likes, timestamp | scrapeComments |
| Related Hashtags | Related hashtag names and IDs | includeRelatedHashtags |
| Analytics | Total post count, profile pic per hashtag | includeAnalytics |
| Flags | is_sponsored, comments_disabled | Always on |
| Hashtags & Mentions | Extracted from caption | Always on |
Filtering Options
- Date range —
dateSince/dateUntil(YYYY-MM-DD) - Minimum likes —
minLikes(only posts with X+ likes) - Minimum comments —
minCommentsFilter(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
| Parameter | Type | Default | Description |
|---|---|---|---|
hashtags | string[] | required | Hashtags to scrape (without #) |
resultsLimit | number | 100 | Max results per hashtag (0=unlimited) |
resultsType | select | all | top / recent / reels / all |
dateSince | text | — | Only posts after this date (YYYY-MM-DD) |
dateUntil | text | — | Only posts before this date (YYYY-MM-DD) |
minLikes | number | 0 | Minimum likes filter |
minCommentsFilter | number | 0 | Minimum comments filter |
scrapeComments | checkbox | false | Fetch top comments per post |
maxComments | number | 5 | Comments per post (1-50) |
includeLocation | checkbox | true | Location data |
includeMusic | checkbox | true | Music/audio info |
includeTaggedUsers | checkbox | true | Tagged users |
includeCarouselMedia | checkbox | true | Carousel details |
includeImageUrls | checkbox | true | Multi-resolution image URLs |
includeDimensions | checkbox | true | Media width/height |
includeRelatedHashtags | checkbox | false | Related hashtags |
includeAnalytics | checkbox | false | Hashtag analytics |
instagramAccounts | json | — | Multi-account array |
instagramUsername | text | — | Single account (fallback) |
instagramPassword | secret | — | Single account password |
proxy | proxy | Apify Residential | Proxy 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"}
Full-featured (multi-account, all options)
{"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