How to Scrape Instagram Profiles and Posts

To scrape an Instagram profile's posts, put the profile URL, such as https://www.instagram.com/nike/, in the startUrls input of apidojo's Instagram Scraper on Apify, and set maxItems.

Cover card reading 'How to Scrape Instagram Profiles and Posts'

To scrape an Instagram profile’s posts, put the profile URL, such as https://www.instagram.com/nike/, in the startUrls input of apidojo’s Instagram Scraper on Apify, and set maxItems. Each result is a post with its caption, date, likes, comments, media and location, plus an owner object with the account’s followers, following and post count. For profile details on their own, such as bio, website and business category, use apidojo’s Instagram User Scraper.

Profile data answers questions like “how does this creator perform?” and “what does this competitor post?”. This guide covers both actors, the fields, the reels and tagged-post variants, and costs. The full overview is in how to scrape Instagram data in 2026. What people say under those posts is covered in how to scrape Instagram comments.

Which apidojo Actor Should You Use?

Use the Instagram Scraper for an account’s posts and the User Scraper for an account’s profile details. The table compares them (Apify, Apify).

Need Actor Input Price
Posts and reels from a profile Instagram Scraper Profile, reels or tagged URLs in startUrls $0.50 per 1,000 posts
Bio, website, category, public email Instagram User Scraper handles, startUrls or userIds $0.01 per profile
Profiles matching a keyword Instagram User Scraper keywords $0.02 per search, first 40 profiles included

How Do You Scrape a Profile’s Posts?

Add the profile URL and a cap, then run the Instagram Scraper. Each profile should return at least 10 posts (Apify).

{
  "startUrls": [
    "https://www.instagram.com/nike/",
    "https://www.instagram.com/adidas/"
  ],
  "until": "2026-07-01",
  "maxItems": 400
}

until keeps only posts newer than the date. Avoid a very near date, which makes runs inefficient. To scrape only an account’s reels, use https://www.instagram.com/username/reels/, and for posts the account is tagged in, https://www.instagram.com/username/tagged/ (Apify).

What Data Does Each Post Contain?

Each post comes with its content, engagement, media and the owner’s profile summary. The fields below come from the Instagram Scraper’s output example (Apify).

Field Contains
url, code, createdAt Post link, shortcode and publish time
caption Caption text, with hashtags and mentions
likeCount, commentCount Engagement counts
isPinned, isPaidPartnership Pinned and paid-partnership flags
isVideo, video.playCount, video.duration Video flag, plays and length
image.url, video.url Media links
location Place name and coordinates, for geo-tagged posts
owner username, fullName, isVerified, followerCount, followingCount, postCount
coowners Collaborators on a joint post

How Do You Get Profile Details?

For bios, websites, categories and public business emails, run the User Scraper with handles and both list options off. getFollowers and getFollowings are on by default, so switch them off for profile details only (Apify).

{
  "handles": ["nike", "adidas"],
  "getFollowers": false,
  "getFollowings": false
}

Each profile returns fields such as biography, website, bioLinks, category, isBusiness and publicEmail, where the account shows them. Follower lists are covered in how to scrape Instagram followers and following lists.

How Do You Turn Posts Into Account Benchmarks?

Group the posts by owner.username and compute median likes, comments and engagement rate. Medians are safer than averages, because one viral post skews an average. The formula and benchmarks are in how to calculate Instagram engagement rate, and tracking accounts over time in how to track competitors on Instagram.

What Does Scraping Instagram Profiles Cost?

At $0.50 per 1,000 posts, 20 accounts with 100 posts each cost $1 on the Instagram Scraper; profile details cost $0.01 per account, plus $0.0005 for each profile returned, on the User Scraper.

Job Actor Cost
20 accounts, 100 posts each Instagram Scraper $1.00
200 profiles, details only Instagram User Scraper $2.10
1,000 profiles found by 5 keyword searches Instagram User Scraper About $0.50

The last row works out as 5 searches at $0.02, plus 800 profiles beyond the 200 included at $0.0005 each (Apify). The TikTok counterpart is how to scrape TikTok profiles and their videos.

Questions people ask

Can you scrape a private Instagram profile?

No, private profiles' posts aren't public, and the User Scraper documents that it can't read them.

Can you scrape an account's stories?

apidojo's Instagram Scraper API can fetch a user's active stories with its getStories option (Apify).

Can you scrape every post on a profile?

Yes, leave maxItems empty or set it above the account's post count.

Where do you start?

At how to scrape Instagram data in 2026.