Instagram Scraper avatar

Instagram Scraper

Pricing

from $0.45 / 1,000 post or reels

Go to Apify Store
Instagram Scraper

Instagram Scraper

Scrape Instagram posts, reels, profiles, comments and hashtag top posts from links or usernames: captions, likes, comments, video URLs, followers, bios and post counts. One input, many result types. No login.

Pricing

from $0.45 / 1,000 post or reels

Rating

0.0

(0)

Developer

Automly

Automly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

What is Instagram Scraper?

Instagram Scraper is an all-in-one tool that lets you scrape Instagram posts, reels, profiles, comments and hashtag top posts from links or usernames. Get captions, likes, comment counts, hashtags, mentions, image and video links, video length, music, tagged users, followers, bios and exact post counts. Paste your links, pick what you want, click Start and download the data as Excel, CSV or JSON.

  • 🧩 All in one: profiles, posts, reels and hashtags in one list, one kind of result per run
  • ⚡ Speed: about 1,700 posts per minute (721 posts from 8 links in 25 seconds in our test)
  • 🔁 Easy to switch: input and output field names match the most used Instagram scraper on the Store
  • 🔓 No login: no Instagram account, cookies or API key needed
  • 💸 Free to try: every Apify account gets $5 of free usage each month

What can Instagram Scraper do?

  • Scrape the latest posts and reels of any public Instagram profile, newest first
  • Scrape Instagram reels only from a profile
  • Get the top posts of a hashtag with their play counts
  • Get full details of posts and reels from their links: caption, likes, comments, video link, length, music, location
  • Get profile details: bio, followers, following, exact post count, website and bio links, verified badge, account type
  • Scrape Instagram comments from posts and reels, newest first, thousands per post
  • Add the latest comments under every post to its row
  • Only get posts newer than a date or an age like "7 days"
  • Cap each link with Results per link and the whole run with Max results
  • Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

What data can you extract from Instagram?

📝 Caption❤️ Likes💬 Comment count
#️⃣ Hashtags@ Mentions📅 Publish date and time
🖼️ Image link🎬 Video link and length🗂️ Carousel items
🎵 Music or original audio🏷️ Tagged users🤝 Collaborators and sponsors
📍 Location📌 Pinned post▶️ Reel plays (hashtag top posts)
👤 Username, name and bio👥 Followers and following🔢 Exact post count
🔗 Website and bio links✅ Verified badge and account type🗨️ Comments with likes and dates

How to scrape Instagram

  1. Create a free Apify account (no credit card needed).
  2. Open Instagram Scraper.
  3. Add profile links or usernames, post or reel links, or hashtags (any mix).
  4. Choose the Results type (posts, reels, details or comments) and how many results you want per link, then click Start.
  5. When the run finishes, download your data as Excel, CSV, JSON, HTML or XML.

How much does it cost to scrape Instagram?

You pay only for the results you get: one price per post, one per post with its latest comments, one per profile and one per comment. See the Pricing tab for the current prices. Every Apify account gets $5 of free usage each month, so you can try it at no cost. Set Max results to cap how many results a run saves, so you always know the most a run can cost.

Results typeProfile (natgeo or a profile link)Post or reel linkHashtag (#crossfit or a hashtag link)
PostsIts latest posts and reelsThat postIts top posts
ReelsIts latest reelsThat reelIts top reels
DetailsOne profile row: bio, followers, post countThat postNot available
CommentsNot available (use the post links)Its commentsNot available

Links can be https://www.instagram.com/natgeo/, https://www.instagram.com/natgeo/reels/, @natgeo or just natgeo for profiles; https://www.instagram.com/p/..., https://www.instagram.com/reel/... for posts and reels; https://www.instagram.com/explore/tags/crossfit/ or #crossfit for hashtags.

⬇️ Input

SettingWhat it does
Instagram links or usernamesProfiles, posts, reels and hashtags to scrape, in any mix
Results typePosts, Reels, Details or Comments (see the table above)
Results per linkThe most posts per profile or hashtag, or comments per post (default 20)
Only posts newer thanA date like 2026-09-01 or an age like 7 days, 2 weeks, 3 months
Latest comments per postAdd up to 15 of the comments shown under each post to its row (default 0)
Add parent dataAdd where each post was found (dataSource) and that profile's or hashtag's details (metaData)
Max results (whole run)Stop once the run has saved this many rows (0 = no limit)

Example: the latest 50 posts and reels of two profiles, plus one post.

{
"directUrls": ["natgeo", "https://www.instagram.com/nasa/", "https://www.instagram.com/p/DdG4RIxIPyf/"],
"resultsType": "posts",
"resultsLimit": 50
}

Example: profile details for a list of accounts.

{
"directUrls": ["natgeo", "nasa", "https://www.instagram.com/humansofny/"],
"resultsType": "details"
}

Example: the last week's comments on a reel.

{
"directUrls": ["https://www.instagram.com/reel/DdG4RIxIPyf/"],
"resultsType": "comments",
"resultsLimit": 1000,
"onlyPostsNewerThan": "7 days"
}

⬆️ Output

Each run saves one kind of row, set by Results type: posts, profiles or comments. You can view them as a table in Apify Console, with separate Posts, Profiles and Comments views, or download them as Excel, CSV, JSON, HTML or XML. inputUrl tells you which of your links each row came from.

A post:

{
"inputUrl": "https://www.instagram.com/explore/tags/crossfit/",
"id": "3997106230996470914",
"type": "Video",
"shortCode": "Dd4kvCEC4yC",
"caption": "Now what's the difference over the course of 100+ reps?? ... #hyrox #crossfit #wallballs",
"hashtags": ["hyrox", "crossfit", "wallballs"],
"mentions": ["zoepwood"],
"url": "https://www.instagram.com/reel/Dd4kvCEC4yC/",
"commentsCount": 129,
"likesCount": 6781,
"videoPlayCount": 1607389,
"videoDuration": 13.633,
"timestamp": "2026-09-29T20:05:00Z",
"ownerUsername": "johnwood32",
"ownerFullName": "John Wood",
"productType": "clips",
"musicInfo": {"artist_name": "Piano Glow", "song_name": "Interstellar (Main Theme)", "uses_original_audio": false},
"displayUrl": "https://scontent-lga3-3.cdninstagram.com/v/t51.82787-15/828871951_...jpg",
"videoUrl": "https://scontent-lga3-1.cdninstagram.com/o1/v/t16/f2/m84/AQNeTw7G685y...mp4"
}

A profile (Results type Details):

{
"inputUrl": "natgeo",
"id": "787132",
"username": "natgeo",
"url": "https://www.instagram.com/natgeo/",
"fullName": "National Geographic",
"followersCount": 268435979,
"followsCount": 194,
"postsCount": 32045,
"verified": true,
"private": false,
"accountType": "business",
"externalUrl": "http://visitstore.bio/natgeo"
}

A comment (Results type Comments):

{
"inputUrl": "https://www.instagram.com/p/DdG4RIxIPyf/",
"postUrl": "https://www.instagram.com/p/DdG4RIxIPyf/",
"commentUrl": "https://www.instagram.com/p/DdG4RIxIPyf/c/18077858591409581",
"id": "18077858591409581",
"text": "❤️❤️",
"ownerUsername": "clappermia",
"timestamp": "2026-10-06T06:29:10Z",
"likesCount": 0
}

Each run also saves a short report listing how many links it covered and rows it saved, and any link it could not scrape with the reason (for example, a username that does not exist).

How can I use Instagram data?

  • Competitor analysis: see what competitors post, how often, and which posts get the most likes and comments
  • Influencer research: check a creator's followers and real engagement before you work with them
  • Hashtag research: see which reels lead a hashtag and how many plays they get
  • Brand monitoring: collect the comments on your posts and campaigns every day
  • Lead generation: build lists of business profiles with their websites and bio links
  • Archiving and AI: build datasets of captions, images and videos for analysis or model training

Monitor Instagram on a schedule

Save your input as a task, set Only posts newer than to 1 day, and add a daily schedule. Each run then gets only the new posts (or comments) since yesterday, and you can send them to Google Sheets, Slack or a webhook.

Instagram API: run it from your code

Start runs and read the results with the Apify API or the Python and JavaScript clients:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("automly/instagram-scraper").call(run_input={
"directUrls": ["natgeo", "https://www.instagram.com/explore/tags/travel/"],
"resultsType": "posts",
"resultsLimit": 100,
})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(post["url"], post["likesCount"], post["commentsCount"])

🤖 Use with AI agents (MCP)

This actor works as a tool for AI agents. Connect any MCP-compatible AI assistant or agent to the Apify MCP server at https://mcp.apify.com (sign in with your Apify account), and it can find this actor, fill in the input and read the results by itself. Ask in plain words, for example "Get natgeo's 20 latest Instagram posts with likes and comment counts", and the agent runs automly/instagram-scraper with an input like {"directUrls": ["natgeo"], "resultsType": "posts", "resultsLimit": 20}. Every input and output field has a plain description, so the agent knows what to type and what each column means. Agent runs cost the same as runs you start yourself.

❓FAQ

How much does it cost to scrape Instagram?

You pay only for the results you get, per 1,000 results. See the Pricing tab for the current prices. Every Apify account gets $5 of free usage each month, so you can try it at no cost.

I use another Instagram scraper. Do I need to change my input?

Probably not. The input fields (directUrls, resultsType, resultsLimit, onlyPostsNewerThan, addParentData) and the main output fields (shortCode, caption, likesCount, commentsCount, timestamp, displayUrl, videoUrl, ownerUsername, followersCount, postsCount and more) use the same names as the most used Instagram scraper on the Store. A search word with searchType hashtag or user is read as that exact hashtag or username. Mentions, stories and place links are not offered (see below): those inputs give no rows and cost nothing, and the run still reads the rest.

How many posts can I get from one profile?

All of them. Profiles with thousands of posts work. Set Results per link to the number you need.

How many posts does a hashtag give?

Its top posts only: Instagram shows a few dozen top posts per hashtag (mostly reels) to people who are not logged in, and no full or latest list. Some very broad hashtags (for example #fitness or #love) show no top posts at all to people who are not logged in; the run then names them as not found. Profiles have no such limit.

Can I search Instagram, or get followers, stories or the posts a profile is tagged in?

No. Instagram shows search, follower lists, stories and tagged posts only to logged-in users, and this scraper never logs in. Use profile, post, reel and hashtag links instead.

Why is the view count of some reels missing?

Instagram shows reel play counts without a login only on hashtag pages, so videoPlayCount is filled for hashtag top posts and empty for posts from profiles or links. Likes and comment counts are there for every post, unless the owner hides likes (then likesCount is empty and likesHidden is true).

Can I scrape private Instagram profiles?

No. A private profile's details (name, bio, follower count) come out with Results type Details, but its posts and comments are not public. With Posts or Reels it is listed as "not found" in the run report and the run still finishes.

A deleted post, a wrong username or a hashtag with no posts is listed in the run report as "not found", and the other links are scraped as usual.

Do I need an Instagram account?

No. You don't need an Instagram account, cookies or an API key.

Instagram's media links expire after a few days. Download the files you need soon after the run.

This scraper only collects what people chose to publish publicly. It does not collect private data such as email addresses or phone numbers. Posts and comments can still contain personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason and ask a lawyer if you are unsure. You can read more in Is web scraping legal?

Instagram Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Instagram or Meta.

Something isn't working. What should I do?

Open the Issues tab and tell us the link and what you expected. We usually reply within a day.

Scrape more Instagram data

ActorWhat you get
Instagram Posts & Reels ScraperPosts and reels of profiles with date ranges, plus a real-time API
Instagram Profile ScraperBio, followers, following and post count for many profiles at once
Instagram Comments ScraperEvery comment on a post or reel, newest first
Instagram Post ScraperFull details of posts and reels from their links

⭐ Your feedback

Ideas, missing fields or problems: open the Issues tab and we'll take a look. If Instagram Scraper saved you time, a short review on the Reviews tab helps other people find it.