Instagram Hashtag Scraper avatar

Instagram Hashtag Scraper

Pricing

$0.20 / 1,000 results

Go to Apify Store
Instagram Hashtag Scraper

Instagram Hashtag Scraper

This scraper extracts users from Instagram based on a hashtag. Just enter a hashtag and set the number of usernames you need. It collects user details like usernames, IDs, and captions, making it perfect for social media analysis and research. 🚀

Pricing

$0.20 / 1,000 results

Rating

5.0

(1)

Developer

CoderX

CoderX

Maintained by Community

Actor stats

5

Bookmarked

393

Total users

2

Monthly active users

3 days ago

Last modified

Share

Pull structured post data from any Instagram hashtag — no account, no login, no friction.

Point it at a hashtag. Get back clean JSON with every post, reel, and carousel that lives under it — engagement numbers, author profiles, audio metadata, location pins, and more. Built for analysts, marketers, and developers who need Instagram data that's actually usable.


What It Does

Instagram hashtag feeds are a goldmine of public content intelligence — trending sounds, emerging creators, geo-tagged posts, sponsored content signals. This scraper surfaces all of it in a consistent, queryable structure.

Hand it a hashtag and it returns:

  • Full post and reel metadata (captions, timestamps, media URLs)
  • Engagement signals: likes, comments, plays, reshares
  • Author snapshots: follower count, account type, verification
  • Audio context: track name, artist, trending status
  • Location data: venue name, city, coordinates
  • Collaboration flags: paid partnerships, co-authors, tagged users

No credentials. No cookies. No session maintenance on your end.


Input

ParameterTypeRequiredDefaultDescription
hashtagStringThe hashtag to scrape, without the #. E.g. travel, fitness, streetphotography
scrape_typeStringrecentrecent for newest posts, top for highest-performing
max_itemsInteger24How many posts to retrieve. Minimum is 24
cursorStringResume token from a previous run (paid only)

Example:

{
"hashtag": "streetphotography",
"scrape_type": "top",
"max_items": 100
}

Output

Each record in the dataset is one post, reel, or carousel. Here's the full field breakdown.

Core Post Fields

FieldTypeDescription
idStringInstagram internal post ID
shortcodeStringShortcode used in the post URL
urlStringDirect link to the post
taken_atIntegerPublish time as Unix timestamp
taken_at_timestampStringPublish time in ISO 8601 / UTC
scraped_atStringWhen this record was collected
product_typeStringclips = Reel, feed = standard post
media_typeInteger1 = Photo · 2 = Video · 8 = Carousel

Author (author object)

FieldTypeDescription
idStringInstagram user ID
usernameStringHandle
full_nameStringDisplay name
is_verifiedBooleanBlue checkmark status
is_privateBooleanPrivate account flag
follower_countIntegerFollower count at scrape time
account_typeInteger1 = Personal · 2 = Creator · 3 = Business
profile_pic_urlStringProfile picture URL

Content

FieldTypeDescription
captionStringFull caption text
hashtagsArrayHashtags parsed from caption
mentionsArray@mentions parsed from caption
caption_is_editedBooleanWhether caption was edited post-publish
carousel_media_countIntegerSlide count (carousel posts only)

Engagement

FieldTypeDescription
like_countIntegerInstagram likes
comment_countIntegerInstagram comments
play_countIntegerTotal video/reel plays
ig_play_countIntegerInstagram-side play count
fb_play_countIntegerFacebook play count (cross-posts)
fb_like_countIntegerFacebook likes
fb_comment_countIntegerFacebook comments
reshare_countIntegerReshare count
like_and_view_counts_disabledBooleanTrue if creator has hidden counts

Media

FieldTypeDescription
video_urlStringHighest-quality video URL
thumbnail_urlStringPost thumbnail URL
duration_secondsFloatVideo length in seconds
original_widthIntegerMedia width in pixels
original_heightIntegerMedia height in pixels
has_audioBooleanWhether audio is present

Audio (audio object)

Handles all three Instagram audio structures automatically.

FieldTypeDescription
titleStringTrack title (licensed music)
artistStringArtist or original audio creator
typeStringlicensed_music, original_sound, or audio type flag
is_explicitBooleanExplicit content flag
original_audio_titleStringCustom label for original audio
is_trendingBooleanWhether the audio is trending in Reels

Location (location object)

FieldTypeDescription
pkStringLocation ID
nameStringVenue or place name
addressStringStreet address
cityStringCity
latFloatLatitude
lngFloatLongitude

Collaboration & Rights

FieldTypeDescription
is_paid_partnershipBooleanSponsored content flag
coauthor_usernamesArrayCo-author handles
has_tagged_usersBooleanWhether users are tagged in post
can_viewer_reshareBooleanResharing allowed
ig_media_sharing_disabledBooleanSharing disabled by creator

Sample Record

{
"id": "3621480123456789012",
"shortcode": "DAbc1234XYZ",
"url": "https://www.instagram.com/reel/DAbc1234XYZ/",
"taken_at": 1720000000,
"taken_at_timestamp": "2024-07-03T12:00:00+00:00",
"scraped_at": "2025-04-13T09:30:00+00:00",
"product_type": "clips",
"media_type": 2,
"author": {
"id": "123456789",
"username": "jane.travels",
"full_name": "Jane Wanderlust",
"is_verified": false,
"is_private": false,
"follower_count": 48200,
"account_type": 2,
"profile_pic_url": "https://..."
},
"caption": "Golden hour in Santorini 🌅 #travel #greece #sunset #reels",
"hashtags": ["travel", "greece", "sunset", "reels"],
"mentions": [],
"like_count": 4821,
"comment_count": 112,
"play_count": 98400,
"video_url": "https://...",
"thumbnail_url": "https://...",
"duration_seconds": 14.5,
"has_audio": true,
"audio": {
"title": "Golden Hour",
"artist": "JVKE",
"type": "licensed_music",
"is_explicit": false,
"original_audio_title": null,
"is_trending": true
},
"location": {
"pk": "213204004",
"name": "Santorini, Greece",
"city": "Santorini",
"lat": 36.3932,
"lng": 25.4615
},
"is_paid_partnership": false,
"coauthor_usernames": [],
"has_tagged_users": true
}

Pagination & Resuming Runs (Paid)

Long scrapes can be paused and continued without data loss. The final record in every paid dataset includes a _metadata block:

{
"_metadata": {
"cursor": "QVFDZjJmUTdQcGQ4VUluUFZMa3N...",
"total_scraped": 500,
"unique_items": 498,
"hashtag": "travel"
}
}

To resume: copy the cursor value, start a new run with the same hashtag, and paste it into the Resume Cursor field. The scraper picks up from the exact point it left off — no re-scraping, no duplicates.


Free vs Paid

FeatureFreePaid
Posts per run~24Up to max_items
Scrape type (recent / top)
Full output fields
Pagination cursor
Resume interrupted runs
Priority support

How to Use It

Trend monitoring — run it on a niche hashtag weekly and compare engagement velocity over time. Spot content formats gaining traction before they peak.

Creator discovery — filter top posts for accounts with sub-50K followers and high engagement rates. That's your emerging influencer list.

Audio trackingis_trending on the audio object tells you which sounds are gaining velocity in Reels before the mainstream catches on.

Location intelligence — need to understand content patterns from a specific city or venue? Filter by location.city or use the lat/lng coordinates for geo-clustering.

Pipeline integration — the output is clean, flat JSON. Drop it directly into BigQuery, Airtable, a CRM enrichment flow, or any BI tool. No cleaning required.


Technical Notes

  • Works on public hashtags only — content must be visible to unauthenticated Instagram users
  • Deduplication is built in — safe to run overlapping time windows without getting duplicate records
  • Automatic retry on failures — up to 3 attempts per request with exponential backoff
  • Handles all three Instagram audio data structures without any configuration

Disclaimer

This scraper collects only publicly available content — the same data visible to anyone browsing Instagram without an account. No private data, credentials, or messages are accessed or stored. Use responsibly and in accordance with applicable laws and platform terms of service. The developer assumes no liability for misuse.


Support

Found a bug or need a custom configuration? Use the Issues tab on this Actor's page. Paid users get priority responses.