Instagram Hashtags Posts Scraper avatar

Instagram Hashtags Posts Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Instagram Hashtags Posts Scraper

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

Instagram Scraper

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

4 days ago

Last modified

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

  1. Open the Actor page and click Try for free / Run.
  2. In Input, paste one or more hashtag keywords.
  3. Set how many posts to scrape per hashtag (postsPerHashtags).
  4. 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

FieldTypeNotes
idstring | nullInstagram media id.
pkstring | nullInstagram primary key.
shortcodestring | nullPublic shortcode used to build URL.
urlstring | nullCanonical post/reel URL.
from_urlstring | nullSource hashtag page URL (/popular/{hashtag}/).
crawled_atstring | nullCrawl timestamp in UTC ISO format.

Content and actor fields

FieldTypeNotes
captionstring | nullCaption text (best effort).
hashtagsstring[]Hashtags extracted from caption.
mentionsstring[]Mentions extracted from caption/usertags.
tagged_userobject[]Simplified tagged users.
commentsobject[]Parent comments from post detail when available.
ownerobject | nullOwner summary (id, username, profile_pic_url, etc.).
locationobject | string | nullLocation data when available.
statusnumber | nullPresent on restricted/transient fallback records (for example 572).
messagestring | nullShort fallback reason text.

Media fields

FieldTypeNotes
imagestring | nullCover image URL.
is_videoboolean | nullMedia type flag.
video_urlstring | nullPlayable video URL.
has_audioboolean | nullVideo audio flag.
video_durationnumber | nullVideo duration in seconds.
accessibility_captionstring | nullAccessibility caption.
dimensionsobject | null{ "width": number|null, "height": number|null } or null when unknown.
product_typestring | nullMedia/product type (for example clips).
clips_music_attribution_infoobject | nullMusic attribution info for clips.
coauthor_producersarray | nullCo-author list (empty or populated).
taken_atstring | nullOriginal post timestamp in UTC ISO format.

Engagement and flags

FieldTypeNotes
comment_countnumber | nullComment count.
like_countnumber | nullLike count.
play_countnumber | nullPlay count.
view_countnumber | nullView count.
is_adboolean | nullWhether the post is ad content.
is_affiliateboolean | nullAffiliate indicator.
is_paid_partnershipboolean | nullPaid partnership indicator.
is_publishedboolean | nullPublished 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:

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.