Instagram Hashtags Posts Scraper
Pricing
from $0.49 / 1,000 results
Instagram Hashtags Posts Scraper
This Actor scrapes public Instagram hashtag popular pages. It runs in no‑login mode, which makes it fast to start and easy to use for analytics, research, and content monitoring workflows.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
Instagram Scraper
Actor stats
0
Bookmarked
5
Total users
3
Monthly active users
4 days ago
Last modified
Categories
Share
Fast Instagram hashtags Scraper
This Actor scrapes public Instagram hashtag popular pages. It runs in no‑login mode, which makes it fast to start and easy to use for analytics, research, and content monitoring workflows.
How to run it in the Apify Console
- Open the Actor page and click Try for free / Run.
- In Input, paste one or more hashtag keywords.
- Set how many posts to scrape per hashtag (
postsPerHashtags). - After the run finishes, open the Dataset to view results and export to JSON / CSV / Excel.
Input parameters
hashtags (required)
Accepts either a plain hashtag keyword or a #keyword:
travel#travel
Notes:
- Empty lines are ignored and inputs are de‑duplicated
- Invalid inputs are reported in logs (they do not automatically fail the whole run)
postsPerHashtags
Maximum number of posts to scrape per hashtag.
- Minimum:
5 - Default:
12 - If a hashtag has fewer available posts (or Instagram limits access), the actual output will be lower
input json example
{"hashtags": ["youtube", "#furniture", "travel"],"postsPerHashtags": 10}
Output (Dataset)
Results are stored in the default Dataset (default).
Field reference
Each hashtag post is stored as one Dataset item with a stable post-detail-like schema.
Core fields
| Field | Type | Notes |
|---|---|---|
id | string | null | Instagram media id. |
pk | string | null | Instagram primary key. |
shortcode | string | null | Public shortcode used to build URL. |
url | string | null | Canonical post/reel URL. |
from_url | string | null | Source hashtag page URL (/popular/{hashtag}/). |
crawled_at | string | null | Crawl timestamp in UTC ISO format. |
Content and actor fields
| Field | Type | Notes |
|---|---|---|
caption | string | null | Caption text (best effort). |
hashtags | string[] | Hashtags extracted from caption. |
mentions | string[] | Mentions extracted from caption/usertags. |
tagged_user | object[] | Simplified tagged users. |
comments | object[] | Parent comments from post detail when available. |
owner | object | null | Owner summary (id, username, profile_pic_url, etc.). |
location | object | string | null | Location data when available. |
status | number | null | Present on restricted/transient fallback records (for example 572). |
message | string | null | Short fallback reason text. |
Media fields
| Field | Type | Notes |
|---|---|---|
image | string | null | Cover image URL. |
is_video | boolean | null | Media type flag. |
video_url | string | null | Playable video URL. |
has_audio | boolean | null | Video audio flag. |
video_duration | number | null | Video duration in seconds. |
accessibility_caption | string | null | Accessibility caption. |
dimensions | object | null | { "width": number|null, "height": number|null } or null when unknown. |
product_type | string | null | Media/product type (for example clips). |
clips_music_attribution_info | object | null | Music attribution info for clips. |
coauthor_producers | array | null | Co-author list (empty or populated). |
taken_at | string | null | Original post timestamp in UTC ISO format. |
Engagement and flags
| Field | Type | Notes |
|---|---|---|
comment_count | number | null | Comment count. |
like_count | number | null | Like count. |
play_count | number | null | Play count. |
view_count | number | null | View count. |
is_ad | boolean | null | Whether the post is ad content. |
is_affiliate | boolean | null | Affiliate indicator. |
is_paid_partnership | boolean | null | Paid partnership indicator. |
is_published | boolean | null | Published flag. |
Example item
Fields may vary slightly depending on Instagram responses:
{"id": "3847167235685798934","pk": "3847167235685798934","is_video": true,"video_url": "https://sconten..oe=69B3232F","has_audio": true,"video_duration": 8.103,"accessibility_caption": null,"hashtags": [],"mentions": ["@bts.bighitofficial"],"tagged_user": [{"full_name": "BTS official","followed_by_viewer": false,"id": "2274763833","is_verified": true,"profile_pic_url": "https://scontent..4041&_nc_sid=d885a2","username": "bts.bighitofficial"},{"full_name": "Google India","followed_by_viewer": false,"id": "8536113897","is_verified": true,"profile_pic_url": "https://scontent-l...c_sid=d885a2","username": "googleindia"},{"full_name": "Google Indonesia","followed_by_viewer": false,"id": "44378210506","is_verified": true,"profile_pic_url": "https://scontent-lax7..F9&_nc_sid=d885a2","username": "googleindonesia"},{"full_name": "Google en Español","followed_by_viewer": false,"id": "48967006444","is_verified": true,"profile_pic_url": "https://scontent-lax..c_sid=d885a2","username": "googleespanol"},{"full_name": "Google Japan / グーグル・ジャパン","followed_by_viewer": false,"id": "45157324866","is_verified": true,"profile_pic_url": "https://scontent-lax7..NTKIIoBAAAA&ccb=7-5&oh=00_Afy7_nxWep6lYlwcDSxLpVuWSSULtqQxWpL92A-kd_F73A&oe=69B34CB7&_nc_sid=d885a2","username": "googlejapan"},{"full_name": "Google France","followed_by_viewer": false,"id": "74161638136","is_verified": true,"profile_pic_url": "https://scontent-lax7...id=d885a2","username": "googlefrance"}],"caption": "@bts.bighitofficial fans, have you seen what happens when you search “BTS” yet? 👀 Something special is waiting for you.\n\n구글에 “BTS”를 검색하면 어떤 일이 일어나는 지 알고 계시나요? 👀 특별한 경험이 기다리고 있습니다!\n\nBTS ファンの皆さん、Google で「BTS」と検索すると何が起きるか、もうチェックしましたか?👀 今なら、とっておきのサプライズが待っていますよ!","comment_count": 5550,"like_count": 261079,"play_count": 6338210,"view_count": 1897124,"taken_at": "2026-03-06T23:04:38Z","is_ad": false,"is_affiliate": false,"is_paid_partnership": false,"is_published": true,"location": null,"from_url": "https://www.instagram.com/popular/google/","url": "https://www.instagram.com/reel/DVj4je6ktQW/","crawled_at": "2026-03-08T12:33:04.461569Z","comments": [{"id": "...","text": "...","created_at": 1529249418,"did_report_as_spam": false,"owner": {"id": "...","is_verified": false,"profile_pic_url": "https://scont...","username": ".."},"viewer_has_liked": false,"like_count": 0,"is_restricted_pending": false}],"image": "https://scontent-lax..c_sid=d885a2","shortcode": "DVj4je6ktQW","product_type": "clips","clips_music_attribution_info": {"artist_name": "google","song_name": "Original audio","uses_original_audio": true,"should_mute_audio": false,"should_mute_audio_reason": "","audio_id": "33977498751893623"},"owner": {"id": "1067259270","username": "google","is_verified": true,"profile_pic_url": "https://sconte..9B33AE9&_nc_sid=d885a2","blocked_by_viewer": false,"restricted_by_viewer": null,"followed_by_viewer": false,"full_name": "Google","has_blocked_viewer": false,"is_embeds_disabled": false,"is_private": false,"is_unpublished": false,"requested_by_viewer": false,"pass_tiering_recommendation": true,"post_count": 3137,"followers": 15742809},"coauthor_producers": [{"id": "8536113897","is_verified": true,"profile_pic_url": "https://scontent-lax7-..._sid=d885a2","username": "googleindia"},{"id": "45157324866","is_verified": true,"profile_pic_url": "https://scontent-la..._nc_sid=d885a2","username": "googlejapan"},{"id": "48967006444","is_verified": true,"profile_pic_url": "https://scontent-..._nc_sid=d885a2","username": "googleespanol"},{"id": "44378210506","is_verified": true,"profile_pic_url": "https://scontent-lax7-...sid=d885a2","username": "googleindonesia"}]}
Need other Instagram data?
Use dedicated Actors for other Instagram data types:
- Instagram Posts Scraper: All-in-one
- Instagram Profile Scraper
- Instagram Profile Posts Scraper
- Instagram Tagged Posts Scraper
- Instagram Reels Scraper
FAQ
1) Why is the Dataset empty / much smaller than expected?
The hashtag has no available posts, not enough posts, or Instagram is limiting access
2) What does restricted_profile mean?
A hashtag query can still be limited for anonymous (no-login) access. Instagram may gate some popular-search endpoints unless a logged-in session is used. When this happens, the Actor logs the restriction and skips/stops that hashtag query.
3) How does billing work for unavailable hashtags?
The Actor uses one unified charge event: restricted_profile.
This event is emitted when a hashtag query cannot return posts due to:
- restricted/no-login access limits,
- invalid hashtag target,
- no posts found for that hashtag.
Limitations & recommendations
- Data scope: this Actor is optimized for hashtag popular-page post-level data.
- No-login access limits: this Actor runs without an Instagram login by default. Some hashtag endpoints may be unavailable in no-login mode.
- Compliance: make sure your usage complies with Instagram’s terms and your local laws, and only collect data you have the right to use.