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.

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.