Instagram Scraper - Posts, Profiles & Hashtags avatar

Instagram Scraper - Posts, Profiles & Hashtags

Pricing

from $0.60 / 1,000 results

Go to Apify Store
Instagram Scraper - Posts, Profiles & Hashtags

Instagram Scraper - Posts, Profiles & Hashtags

Scrape Instagram posts, profiles, and hashtags. Get captions, likes, comments, media URLs, follower counts, and more. Uses Instagram's GraphQL API with residential proxy for reliability.

Pricing

from $0.60 / 1,000 results

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

63

Total users

9

Monthly active users

6 days ago

Last modified

Categories

Share

Instagram Scraper — Posts, Reels, Comments & Profiles

Thirdwatch portfolio: 8,800+ users across 140+ public Actors, 2M+ records delivered, >95% run success. Explore all Thirdwatch Actors.

What you get

Five Instagram scrapers in one Actor, no login required. Profile posts, profile reels, single post/reel details, comments, and profile cards — captions, hashtags, mentions, like and comment counts, music, video URLs, carousels, tagged users, bios, follower counts, and external links.

Modes

Set mode, or leave it on auto and the Actor reads each input: a post URL returns post details, a handle returns that handle's posts.

ModeInputReturnsOne dataset item per
profilePosts@handle or profile URLThe account's timeline — posts, reels and carouselspost
profileReels@handle or profile URLThe account's timeline filtered to reelsreel
postDetails/p/… or /reel/… URLFull record for one post or reelpost
comments/p/… or /reel/… URLComments on that postcomment
profile@handle or profile URLProfile card, optionally with recent posts attachedprofile
auto (default)anythingRoutes each input by its shapevaries

You can mix input shapes in one run on auto:

{
"queries": [
"@natgeo",
"https://www.instagram.com/p/Dc_g-YvhWhw/",
"https://www.instagram.com/nasa/"
],
"mode": "auto",
"maxResults": 50
}

Input parameters

ParameterRequiredDescription
queriesYesPost/reel URLs, profile URLs, @handles, or #hashtags.
modeNoauto (default), profilePosts, profileReels, postDetails, comments, profile.
maxResultsNoMax total dataset items across all queries. Default 10.
maxResultsPerQueryNoPer-query cap. 0 = no per-query cap. Default 0.
maxCommentsPerPostNocomments mode. Default 15. Instagram serves only the first page to logged-out clients, so higher values do not return more.
maxPostsPerProfileNoprofile mode. Recent posts attached to each profile record. Default 12, max 60.
searchTypeNoLegacy. Only consulted when mode is auto. Prefer mode.

A bare word is treated as a hashtag on auto, as a handle under the profile modes, and as a shortcode under postDetails/comments. So {"queries": ["nasa"], "mode": "profilePosts"} scrapes @nasa.

Output fields — posts and reels

FieldDescription
typeimage, video, carousel, or reel
shortcode / urlPost shortcode and canonical URL
captionFull caption text
hashtagsHashtags parsed from the caption
mentions@handles parsed from the caption
likeCountLikes (null when the account hides counts)
commentCountComments
viewCountPlays/views — null on public data, see Limitations
timestampISO 8601 publish time
authorUsername / authorFullName / authorId / authorIsVerifiedAuthor
videoUrlDirect MP4 URL for videos and reels
imageUrl / thumbnailUrlHighest-resolution still
music{title, artist, audioAssetId, isOriginalAudio, isExplicit} for reels
carousel_mediaEvery slide of a carousel with its own image/video URL
tagged_usersAccounts tagged in the media
coauthorsCollab post co-authors
locationLocation name, when tagged
dimensions{width, height}
productTypeInstagram's own type (feed, clips, carousel_container)
isSponsoredPaid-partnership flag
commentsDisabled / likeAndViewCountsDisabledCreator-side visibility settings
accessibility_captionInstagram's generated alt text

Output fields — comments

FieldDescription
textComment body
ownerUsername / ownerFullName / ownerId / ownerIsVerifiedCommenter
ownerProfilePicUrlCommenter avatar
likeCountLikes on the comment (null = Instagram did not disclose it)
timestampISO 8601
isReply / parentCommentIdThreading
replyCountReplies (null = Instagram did not disclose it)
postShortcode / postUrl / postOwnerUsername / postCaptionParent post
totalCommentCountTotal comments on the post
moreCommentsAvailabletrue when Instagram holds more back behind a login

Output fields — profiles

FieldDescription
username / fullName / idIdentity
biographyBio text
biographyMentions / biographyHashtagsParsed from the bio
followerCount / followingCount / postCountCounts
countsAreApproximatetrue when a count came from Instagram's rounded meta tag
isVerified / isPrivateStatus
externalUrl / bio_linksLinks in the bio
profilePicUrl / profileUrlMedia and canonical URL
pronouns / hasClipsExtras
category, businessEmail, businessPhoneNumberBusiness contact fields — see Limitations
recentPostsRecent posts, when maxPostsPerProfile > 0

Example output

{
"type": "reel",
"shortcode": "Dc_g-YvhWhw",
"url": "https://www.instagram.com/reel/Dc_g-YvhWhw/",
"caption": "Again and again, this young humpback whale burst from the waters off Baja California…",
"hashtags": [],
"mentions": ["mywildlive"],
"likeCount": 8869,
"commentCount": 73,
"viewCount": null,
"authorUsername": "natgeo",
"timestamp": "2026-09-07T16:16:24+00:00",
"videoUrl": "https://instagram.fblr22-1.fna.fbcdn.net/o1/v/t2/f2/…",
"music": {
"title": "Original audio",
"artist": "natgeo",
"audioAssetId": "28139527835659346",
"isOriginalAudio": true
},
"dimensions": { "width": 1080, "height": 1920 },
"productType": "clips"
}

Use cases

  • Influencer vetting — profile for reach, then profilePosts for real engagement per post rather than a follower count alone.
  • Reels/short-form research — profileReels to isolate short-form output, with music to see which audio a creator rides.
  • Competitor content tracking — profilePosts on a competitor set to measure cadence, format mix, and hashtag strategy.
  • Audience and sentiment analysis — comments across a campaign's posts for verbatim customer language.
  • Campaign reporting — postDetails on a list of sponsored post URLs for exact like/comment counts at a point in time.
  • Creative asset collection — videoUrl and carousel_media for downloading a creator's public media.
  • CRM enrichment — attach follower counts, bio links, and verification to creator records.

Limitations

These are properties of Instagram's public web, not of this Actor. Every one of them is reported honestly in the output rather than silently zero-filled.

  • View/play counts are not public. Instagram stopped serving play_count to logged-out clients. viewCount is null, never a fabricated 0.
  • Comments are capped at roughly the first page (~15). Instagram gates comment pagination behind a login. moreCommentsAvailable: true tells you when more exist.
  • Comment replies are rarely exposed. replyCount is null when Instagram does not disclose it.
  • category, businessEmail and businessPhoneNumber require a login. They are returned as null/empty, and categoryAvailable: false marks the difference between "no category" and "not public".
  • postCount can be approximate. Instagram leaves the exact field null and only publishes a rounded count ("32K Posts") for large accounts. countsAreApproximate: true flags it.
  • Private profiles return no posts. The profile record still comes back with isPrivate: true — the account exists, its posts are not public.
  • Hashtag pages require a login. Hashtag queries fall back to public-index discovery and then enrich each hit from Instagram. Check dataQuality; indexed rows may omit engagement and media. When that discovery cannot run at all the query is reported as blocked, never as "no results".
  • Stories and the "For You" reels feed require authentication and are not supported.

A run that never reaches Instagram fails with a clear status message. A run that did reach Instagram and found nothing succeeds with a status message saying so — a deleted handle, a private account, or a term with no public posts. An empty dataset is never left unexplained.

Compared to alternatives

  • vs. single-purpose Instagram Actors: competitors split posts, reels, comments, transcripts, and profiles across separate Actors with separate billing. This one covers five modes on one schema and one price, so a pipeline that needs profile posts and their comments runs against one integration.
  • vs. apify/instagram-scraper ($0.0027/result on FREE, from $0.0015 at high volume): Thirdwatch starts at $0.0012/result and drops to $0.0006.
  • vs. apidojo/instagram-scraper (from $0.00047/post): Apidojo's lowest advertised high-volume rate is lower. Thirdwatch's FREE rate is transparent at $0.0012 and covers comments and reels in the same Actor.

Pairs well with TikTok Scraper and YouTube Scraper for cross-platform creator research.

Use cases & recipes

Step-by-step guides on thirdwatch.dev/blog:

-end

FAQ

Can I scrape one post by URL? Yes — pass the /p/… or /reel/… URL. On auto it returns post details; set mode: "comments" for its comments instead.

How do I get only a creator's reels? mode: "profileReels" with the handle in queries.

Why is viewCount null? Instagram no longer serves play counts to logged-out clients. Reporting null keeps "not available" distinct from "zero views".

Why did I only get 15 comments on a post with thousands? Instagram serves one page of comments without a login. moreCommentsAvailable: true marks it.

Do I need an Instagram account or API key? No. The Actor works entirely against publicly accessible pages.

Will it scrape Stories? No. Stories require a login.

Last verified: 2026-09

More scrapers at thirdwatch.dev.