Instagram Scraper - Posts, Reels, Profiles & Followers avatar

Instagram Scraper - Posts, Reels, Profiles & Followers

Pricing

from $2.30 / 1,000 results

Go to Apify Store
Instagram Scraper - Posts, Reels, Profiles & Followers

Instagram Scraper - Posts, Reels, Profiles & Followers

Scrape public Instagram in 14 modes: profile posts, Reels and tagged posts, profiles with bio and business contacts, comments and replies, followers, following, post likers, hashtag, location and audio feeds, search, stories and highlights. Flat JSON, no login or cookies needed.

Pricing

from $2.30 / 1,000 results

Rating

0.0

(0)

Developer

Silkline

Silkline

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

Instagram Scraper extracts public Instagram data as clean, flat JSON. List the posts, Reels and tagged posts of any public profile, read profile details, post details, comments and replies, collect the posts of a hashtag, location or audio, search accounts, posts, Reels, hashtags, locations and audios, and list followers, following, post likers, similar accounts, stories and highlights. Every post comes with likes, plays, comments, caption, hashtags, mentions, location, music, carousel slides and the owner's name, ID and verified flag. No Instagram account, API keys, proxies or cookies are needed.

What data can you get?

The Actor has 14 modes. Post modes share one flat post output, so one pipeline handles them.

Modes

ModeGive itYou get
userPostsusernamesthe latest posts of each public profile, pinned posts first
profilesusernamesone full profile record per username: bio, links, counts, business details, related accounts, latest posts
userReelsusernamesthe Reels of each profile
taggedPostsusernamesthe posts each profile is tagged in
postDetailspost or Reel linksone full post record per link
commentspost or Reel links, optional commentSort, includeRepliesthe comments of each post, optionally with replies
postLikerspost or Reel linksthe accounts that liked the post (as many as Instagram lists)
hashtagPostshashtags, optional hashtagFeed (top, recent, reels)the posts under each hashtag
locationPostslocation IDs or linksthe posts at each location
audioPostsaudio IDs or linksthe Reels that use each audio
searchkeywords, searchTypeaccounts, posts, Reels, hashtags, locations or audios found for each keyword
followersusernames, followTypethe accounts that follow each profile, or that it follows
similarAccountsusernamesthe accounts Instagram suggests as similar
storiesusernames, storyTypecurrent stories, the highlight reels, or the stories inside each highlight reel

Post fields (post modes, search posts and Reels, stories)

FieldWhat it is
postId, shortCode, urlInstagram ID, shortcode and link of the post
postTypeImage, Video or Sidecar (carousel)
productTypefeed, clips (Reel), carousel_container, igtv or story
caption, hashtags, mentionsCaption as published, and the hashtags and @mentions in it
createdAtPublish time, ISO 8601 UTC
likeCount, commentCountLikes (null when hidden) and comments
playCount, viewCountPlays and views of a video or Reel
shareCount, repostCount, saveCountShares, reposts and saves, when Instagram shows them
durationSeconds, width, heightVideo length and size
displayUrl, videoUrlImage and video file links (temporary)
altTextAccessibility caption, when present
isVideo, isPinned, isSponsored, commentsDisabled, likesHiddenFlags; null when the source does not say
ownerId, ownerUsername, ownerFullName, ownerVerified, ownerPrivate, ownerProfilePicUrlThe account that posted
taggedUsers, coauthorsUsernames tagged in the post and co-authors of collab posts
locationId, locationNameThe tagged location
musicId, musicTitle, musicArtist, isOriginalAudioThe audio of a Reel
childPostsSlides of a carousel: postId, postType, displayUrl, videoUrl, width, height, durationSeconds
sourceInputThe input that produced the item
typepost (stories: story; they also have expiresAt, highlightId, highlightTitle)

Profile fields (mode profiles)

userId, username, url, fullName, biography (as published, with any contact details), externalUrl, externalUrls (every link in the bio), followerCount, followingCount, postCount, igtvVideoCount, highlightReelCount, isVerified, isPrivate, isBusinessAccount, isProfessionalAccount, businessCategory, categoryName, businessEmail, businessPhone, businessAddress, hasClips, hasChannel, isJoinedRecently, pronouns, fbId, profilePicUrl, relatedProfiles (identity fields of suggested accounts), latestPosts (post items), type = profile.

Comment fields (mode comments)

commentId, text, createdAt, likeCount, replyCount, isPinned, parentCommentId and postId (replies), ownerId, ownerUsername, ownerFullName, ownerVerified, ownerPrivate, ownerProfilePicUrl, mentions, hashtags, sourceInput, type = comment.

Account fields (followers, following, post likers, similar accounts, account search)

userId, username, url, fullName, isVerified, isPrivate, profilePicUrl, relation (follower, following, liker or similar), sourceInput; type is user, or searchUser for account search.

Other records

Highlight reels (type highlight): itemId, title, mediaCount, createdAt, updatedAt, coverUrl, isPinned. Hashtags (hashtag): itemId, name, mediaCount, url, profilePicUrl. Locations (location): itemId, name, address, city, latitude, longitude, url. Audios (audio): itemId, audioId, title, artist, durationSeconds, isExplicit, coverUrl, previewUrl.

How to use Instagram Scraper

  1. Open Instagram Scraper in Apify Console.
  2. Choose a Mode.
  3. Fill in the list that belongs to the mode: usernames, postUrls, hashtags, keywords, locations or audios, plus the mode option if it has one.
  4. Set maxResults, the limit for each input.
  5. Start the run, then export the dataset as JSON, CSV or Excel, or read it through the API.

Input

FieldTypeWhat it doesDefault
modestringOne of the 14 modes aboveuserPosts
usernamesarraynasa, @nasa or a profile linknasa
postUrlsarrayPost or Reel links, or shortcodesa sample post
hashtagsarraynasa, #nasa or an explore/tags linknasa
keywordsarraySearch keywordstravel
locationsarrayLocation IDs or explore/locations linksa sample location
audiosarrayAudio IDs or reels/audio linksa sample audio
followTypestringfollowers or followingfollowers
searchTypestringusers, posts, reels, hashtags, locations or audiousers
storyTypestringstories, highlights or highlightStoriesstories
hashtagFeedstringtop, recent or reelstop
commentSortstringrecent or popularrecent
includeRepliesbooleanAlso fetch replies of comments with two or morefalse
maxResultsintegerItems per input, 1 to 5000. Ignored by profiles and postDetails20

An empty input {} lists 20 posts of nasa. At most 50 inputs are used per run in the listing modes (1,000 in profiles and postDetails); extra ones are ignored without a warning.

{"mode": "userPosts", "usernames": ["nasa", "https://www.instagram.com/natgeo/"], "maxResults": 50}
{"mode": "comments", "postUrls": ["https://www.instagram.com/p/DeTUk4sDSp-/"], "commentSort": "popular", "includeReplies": true, "maxResults": 200}
{"mode": "search", "searchType": "reels", "keywords": ["travel"], "maxResults": 50}

Output example

Values are illustrative.

{
"type": "post",
"postId": "4000000000000000001",
"shortCode": "Dexample01",
"url": "https://www.instagram.com/reel/Dexample01/",
"postType": "Video",
"productType": "clips",
"caption": "Launch day #space",
"hashtags": ["space"],
"mentions": [],
"createdAt": "2026-10-10T15:15:02Z",
"likeCount": 7190,
"commentCount": 71,
"playCount": 105090,
"durationSeconds": 43.766,
"ownerUsername": "sample.account",
"ownerVerified": true,
"taggedUsers": [],
"coauthors": [],
"musicTitle": "Original audio",
"isOriginalAudio": true,
"childPosts": [],
"sourceInput": "sample.account"
}

How much does it cost?

The Actor uses pay-per-event pricing:

EventPriceWhen it is charged
Start fee (run-start)$0.0025For each input of the listing modes (and once per run in profiles and postDetails). The first one is charged when the first request to the data source succeeds. Each further one is charged before that input's first request and is kept even if that input returns nothing.
Result (result)$0.0023For each post, story, comment, reply, profile, highlight, hashtag, location, audio or account-search hit returned.
Account (user)$0.0007For each follower, following, post liker or similar account returned.

The start fee is not charged when the data source fails from the start or your spending limit cannot cover it.

Worked examples:

  • 100 posts of one profile cost $0.0025 + 100 x $0.0023 = $0.2325.
  • 1,000 followers of one profile cost $0.0025 + 1,000 x $0.0007 = $0.7025.
  • 20 profile records cost $0.0025 + 20 x $0.0023 = $0.0485.

On the free Apify plan, every run returns a sample dataset: a real result of this Actor's prefilled input, captured on the date shown in the run status, so you can see exactly what the output looks like. Your own input is not used and nothing is charged. To run your own queries, use any paid Apify plan.

You never pay for more than maxResults items per input, and the run stops by itself if your spending limit is reached. An input that returns nothing (an account that does not exist, a hashtag with no posts) still costs its start fee. If the data source is down for the whole run, nothing is charged.

Use cases

  • Influencer research: pull profiles with followers, bio, business category and contact details, then their latest posts and Reels.
  • Competitor and brand monitoring: track posts tagging a brand, hashtag feeds and location feeds with likes, plays and comments.
  • Audience analysis: list followers, following and post likers, and read comment text with commenter profiles.
  • Trend research: search Reels and audios by keyword, then list the Reels that use a trending audio.
  • Lead generation: search accounts by keyword and read business email, phone and links from their profiles.
  • AI and data projects: captions, hashtags and counts as clean rows for classification and dashboards.

Integrations and API

Start runs through the Apify API, schedule them in Apify Console, and connect the dataset to Apify integrations and your own tools. Results can be downloaded as JSON, CSV or Excel.

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("clover_folktale/instagram-scraper").call(run_input={
"mode": "userPosts",
"usernames": ["nasa"],
"maxResults": 50
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Tips and limits

  • Pages are small. Profile posts and Reels come about 12 per request, comments about 15, followers 30 to 50. Large limits take many requests.
  • Thin pages end a listing. A page that brings too few new items to pay for its own request ends the listing, so a listing can end before maxResults.
  • Highlights with one story are skipped in highlightStories; list them with highlights if you need them.
  • Stories expire after 24 hours. stories returns what is live at the time of the run.
  • Likers and some follower lists are partial. Instagram lists only part of a very large audience; postLikers returns what Instagram shows.
  • Location, audio and hashtag inputs must exist. Find location IDs with search and searchType locations. Audio IDs are the number in the audio page link.
  • Links are temporary. Image, video, audio and profile picture links expire; download what you need soon after the run.
  • Numbers are a snapshot. Counts are what Instagram shows at the time of the run; hidden like counts are null.
  • Often-empty fields: viewCount, shareCount, saveCount and repostCount only exist for some post types; commentsDisabled and isSponsored are null when the source does not say; taggedPosts, hashtag and location items from the secondary source have fewer fields.
  • Free plan. Every run on the free Apify plan returns a stored sample dataset (a real result of the prefilled input); your own input is not used and nothing is charged.

FAQ

Do I need an Instagram account or login?

No. No account, API keys, proxies or cookies are needed. Private profiles are not readable.

The Actor returns only public information: posts, counts, public profiles with their bio, public comments and public account lists. It does not return private messages or anything behind a login. Bios are returned as published, including contact details the account owner wrote there. You are responsible for how you use the data and for following the laws that apply to you.

How fresh is the data?

It is read live during the run.

Why are some fields empty?

Fields Instagram does not send are null; lists such as hashtags are empty []. Some counts only exist for some post types.

How many results can I get?

Up to 5,000 items per input, with up to 50 inputs per run in the listing modes.

Can I schedule runs and export the data?

Yes, in Apify Console or through the API, as JSON, CSV or Excel.

What if a username, post or hashtag does not exist?

It returns nothing and still costs its start fee, because the request was made. Missing a field or a mode? Open an issue from the Actor page.

More tools from the same developer