Fast Instagram Post Scraper avatar

Fast Instagram Post Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Fast Instagram Post Scraper

Fast Instagram Post Scraper

Scrape the latest public posts from any Instagram profile, fast. Get captions, hashtags, likes, comments, reel views, photo and video links, audio, tagged users and top comments. Filter by post type or date, add profiles in bulk, live results. No login needed.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Insights Data

Insights Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Categories

Security

Limited permissions

Share

๐Ÿ“ธ Instagram post scraper: what is Fast Instagram Post Scraper?

Fast Instagram Post Scraper helps social media managers, marketers and analysts run Instagram competitor analysis and check influencer engagement by turning the latest public posts of the profiles you list into a table. Paste usernames or profile links, click Start, and get captions, likes, comments, Reel views and media links, with no Instagram login or cookies. This Instagram post scraper saves each post to the dataset (the results table of the run) as soon as it is ready, so you can watch the table fill while the run is going, and the Apify Free plan's $5 monthly credit lets you try it for free.

The easiest way to try it: add one profile and click Start. The default input collects the 10 newest posts of that profile, pinned posts included, with one top-level comment (a comment that is not a reply) for each post. Free plan runs work like paid runs. The $5 monthly Apify credit pays for the result charges and the platform usage (the compute your run uses, explained under pricing).

  • ๐Ÿ Instagram competitor analysis: compare how often rival accounts post, which formats they use (photo, video, carousel) and how many likes, comments and Reel views they get.
  • ๐ŸŒŸ Influencer marketing: check a creator's engagement rate, Reel views, ad-disclosure hashtags and collab posts before you hire them. Engagement rate is filled only for the profile's own and co-authored posts with visible likes, so it is a starting point for an Instagram influencer analysis, not the whole picture.
  • ๐Ÿ“ก Social media monitoring and Instagram brand monitoring: run it on a schedule for the accounts you list and compare the newest posts of each profile from run to run.
  • ๐Ÿ”Ž Instagram content analysis and Instagram hashtag research: read captions, hashtags, mentions, tagged users and post types side by side across many profiles.
  • ๐Ÿ“Š Instagram post analytics and Instagram reels analytics: feed likes, comments, view counts and video length into reports and dashboards.
  • ๐Ÿงช Instagram market research: build post datasets for studies, or pass clean structured posts to an AI or LLM (large language model) pipeline.

What can Fast Instagram Post Scraper do?

  • ๐Ÿ‘ฅ Take many profiles in one run: as an Instagram profile posts scraper, it accepts usernames or profile links, with or without the @. Duplicates are removed.
  • ๐ŸŽฏ Filter posts: keep only photos, only videos and Reels, or only carousels, and only posts newer than a relative value such as 7d or a date.
  • ๐Ÿ’ฌ Attach comments: 0 to 15 top-level comments (not replies) per post.
  • ๐ŸŽž๏ธ Return the highest-resolution media links for each photo and video file, including each file of a carousel. These are links, not files, and they may stop working over time, so download what you need to keep.
  • ๐Ÿ“ฆ Export Instagram posts to Excel, CSV, JSON, XML or HTML from the dataset.
  • ๐Ÿ”Œ Run it online or by API: start it in Apify Console as an Instagram post scraper online, or call it from code, schedules and webhooks.

๐Ÿงพ Instagram post scraper data: what data you get

Every saved post is one row of Instagram post data: the post itself, its engagement numbers, its media and the account behind it. This Instagram posts scraper reads only what any visitor can see on a public profile. Used as an Instagram post data extractor, it needs nothing but the profiles you list.

The fields most people use first are url, posted_at, caption, like_count, comment_count, view_count and engagement_rate_pct. The full list is below.

FieldWhat you get
๐Ÿ†” idInstagram media ID
๐Ÿ”ค shortcodeShort code that identifies the post, taken from its link
๐Ÿ”— urlLink to the post
๐Ÿ—‚๏ธ typephoto, video or carousel
๐ŸŽ›๏ธ product_typeInstagram's own label for the kind of post (see the JSON example)
๐Ÿ“… posted_atPost time in UTC, for example 2026-10-27T18:00:03Z
๐Ÿ“ captionCaption text, or null
#๏ธโƒฃ hashtagsLowercase hashtags from the caption, without duplicates
๐Ÿ“ฃ mentionsLowercase @mentions from the caption, without duplicates
โค๏ธ like_countNumber of likes, null when the owner hid likes
๐Ÿ”ข comment_countTotal number of comments
๐Ÿ‘๏ธ view_countViews of a video or Reel, null for photos or when not available
๐Ÿ“ˆ engagement_rate_pct(likes + comments) / followers x 100, rounded to 3 decimals
โฑ๏ธ video_durationVideo length in seconds
๐Ÿ“Œ is_pinnedWhether the post is pinned at the top of the profile (checked on the first page of posts only)
๐Ÿค is_collabtrue when the post has co-authors or belongs to another account
๐Ÿ‘ซ coauthorsList of {username, id}
๐Ÿท๏ธ tagged_usersList of {username, full_name, is_verified}
๐Ÿ“ location{id, name, lat, lng} or null
๐ŸŽต audio{kind, title, artist} or null, where kind is music or original
๐Ÿ“ข has_ad_disclosuretrue when the caption has an ad or partnership hashtag such as #ad or #sponsored
๐Ÿšซ comments_disabledComments are turned off
๐Ÿ™ˆ likes_hiddenThe owner hid the like count
โœ๏ธ caption_editedThe caption was edited
๐Ÿฆฎ alt_textImage description (accessibility caption)
๐Ÿ“ widthOriginal width
๐Ÿ“ heightOriginal height
๐Ÿ–ผ๏ธ thumbnail_urlLink to the preview image
๐ŸŽฌ video_urlLink to the first video file, or null
๐ŸŽž๏ธ mediaList of {type, url, width, height, thumbnail_url} for every photo and video file
๐Ÿ’ฌ commentsList of {id, text, username, is_verified, likes, posted_at}, top-level only
๐Ÿ‘ค owner{id, username, full_name, is_verified, followers, following, biography, links, profile_pic_url}
๐Ÿ”– from_profileThe profile from your input that the post came from

Note: engagement_rate_pct is filled only for posts owned or co-authored by the scraped profile when the like count is visible. Otherwise it is null. The followers, following, biography and links of owner are filled only for those same posts. view_count can be null for some videos. In comments, the likes value is the like count of that comment.

Instagram post caption extractor, likes and Reel views

  • ๐Ÿ“ As an Instagram post caption extractor, it gives you the full caption plus the hashtags and mentions found in it.
  • โค๏ธ As an Instagram post likes scraper, it returns the like count of each post. It does not return the list of people who liked a post.
  • ๐Ÿ‘๏ธ As an Instagram reel views checker, it returns view_count and video_duration for videos and Reels.
  • ๐Ÿ“ˆ For influencer engagement rate and Instagram engagement rate, it calculates engagement_rate_pct per post from the likes, comments and the followers of the scraped profile.
  • ๐ŸŽฅ As an Instagram reels data scraper, it covers the Reel's caption, audio, views, duration and comments.

What data can't Fast Instagram Post Scraper extract?

  • โŒ Private profiles. They are skipped and listed with the status private.
  • โŒ Single post, Reel or story links as input. Add the profile instead.
  • โŒ Stories and highlights.
  • โŒ Comment replies and full comment threads. Only top-level comments, up to 15 per post, are returned.
  • โŒ Saves, shares and reach.
  • โŒ Downloaded media files. You get links, not files.
  • โŒ Emails and phone numbers. For contact data, try Instagram Email Scraper or Instagram Profile Scraper.
  • โŒ Posts found by hashtag or keyword search. For that, use Instagram Search Scraper.

๐Ÿงญ How to scrape Instagram posts

Fast Instagram Post Scraper is designed for an easy start, even if you have never extracted data from the web before. Here is how to scrape Instagram data from public profiles in a few clicks.

  1. Create a free Apify account using your email.
  2. Open Fast Instagram Post Scraper.
  3. Add the profile links or usernames you want, one per line.
  4. Set Posts per profile, and optionally Only posts newer than and Post types. The Input section below shows the matching API names.
  5. Click Start and wait for the run to finish. The table fills while it runs. How long a run takes depends on how many profiles and posts you ask for, so start with a small run.
  6. Open Storage, then Datasets, then Export to download the posts in JSON, CSV, Excel, XML or HTML.

Use the same steps to scrape Instagram posts into a spreadsheet. To scrape Instagram Reels, set Post types to Videos and Reels only (the API value is video).


๐Ÿ’ฒ Instagram post scraper pricing: how much does it cost?

Fast Instagram Post Scraper uses a pay-per-event model: you pay for set events, such as each saved post, instead of a flat fee. Your bill has three parts:

  1. Results: one result is charged for each post saved to the dataset. The price depends on your Apify plan, as in the table below.
  2. Start fee: $0.00005 per run at the default memory of 1 GB. It is the same on every plan.
  3. Platform usage: the compute time and resources your run uses, billed at your Apify plan's own rates. You can see it on the run page after the run.
PlanPrice per resultPrice per 1,000 results
๐Ÿ†“ Free$0.002$2.00
๐ŸŒฑ Starter$0.0018$1.80
๐Ÿš€ Scale$0.0016$1.60
๐Ÿข Business and higher$0.0015$1.50

The plan discount applies to the result price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.

Example: 1,000 posts on the Free plan cost 1,000 x $0.002 = $2.00 in result charges, plus $0.00005 for the start fee, plus platform usage. On Business that is 1,000 x $0.0015 = $1.50 in result charges. The default input (one profile, up to 10 posts) is at most 10 x $0.002 = $0.02 on the Free plan, plus the start fee and platform usage.

Profiles that are private, not found or failed add no rows, so they add no result charges. See the pricing tab for the full price list.

Is there an Instagram post scraper free to use?

You can start for free. The Free plan includes a $5 monthly credit that pays for result charges and platform usage, and Free plan runs work like paid runs. How far the credit goes depends on the posts you collect and the platform usage of your run, so do a small test run first and read the cost on the run page. You can also set a maximum charge limit (a cap you set in the run options when you start a run). The run stops cleanly when the result charges reach it. Platform usage is billed on top.


โฌ‡๏ธ Input

You only need one thing: a list of public Instagram profile links or usernames. Set the input in Apify Console or send it as JSON through the API.

Settings most people change

In Apify Console you see the titles on the left. The API name, used in JSON and API calls, is in brackets:

  • ๐Ÿ”— Profile URLs or usernames (urls): a list with one profile per line, with or without @. Required. There is no cap on the number of profiles in one run.
  • ๐Ÿ”ข Posts per profile (maxItems, default 10): the newest posts first. It counts per profile, not per run. 0 means all posts the profile has, which can be large and costly.
  • ๐Ÿ“… Only posts newer than (postedSince): a relative value or a date such as 2026-09-01. Relative values are 12h (12 hours), 7d (7 days), 2w (2 weeks), 3m (3 months of 30 days each, not 3 minutes) and 1y (1 year of 365 days). Leave it empty for no limit.
  • ๐ŸŽฏ Post types (postTypes, default all): all, photo, video (shown in Console as Videos and Reels only) or carousel.
  • ๐Ÿ’ฌ Comments per post (commentsPerPost, default 1): how many top-level comments (not replies) to attach to each post, from 0 to 15. 0 skips comments.

Two more fields are rarely needed:

  • ๐Ÿ” Retries (retries, default 3, from 1 to 10): how many attempts the Actor makes for a request that fails.
  • ๐ŸŒ Proxy configuration (proxyConfiguration): optional. Leave it unchanged unless you need to set it. The Actor uses Apify Proxy when needed.

โš ๏ธ Cost grows with the number of profiles and Posts per profile, because each saved post is one result. Start with one profile and the default 10 posts.

Here is a small example that collects the 10 newest posts of one profile:

{
"urls": ["https://www.instagram.com/natgeo/"],
"maxItems": 10,
"postTypes": "all",
"commentsPerPost": 1
}

See the input tab for a full description of all fields.

Profile URLs or usernames

Only profile links and usernames work. Post, Reel and story links are skipped with a warning. If no valid profile is left, the run stops with an input problem message.

  • โœ… Good: https://www.instagram.com/natgeo/, @natgeo or natgeo
  • โŒ Bad: https://www.instagram.com/p/DfAWxdIFmVB/

Posts per profile and Only posts newer than

โš ๏ธ A high Posts per profile, or 0 on a large profile, can cost more than you expect. Set a maximum charge limit when you start a run.

The date filter stops reading a profile once its posts are older than your date. Pinned posts older than your date are skipped.

  • โœ… Good: 30d or 2026-09-01
  • โŒ Bad: last month

โฌ†๏ธ Output

Results are stored in a dataset. In Apify Console, open Storage, then Datasets, then Export to download them in JSON, CSV, Excel, XML or HTML, with only the fields you need. Posts appear while the run is still going. The dataset has nine ready-made views: Posts, Engagement, Caption and tags, Media, Comments, Post owner, Tagged users, Collaborators, and Audio and location. The run total is in the run status ("Done: N posts from M profile(s)") and the platform usage is on the run page.

JSON example

Results for the input example above, shortened to one post and the most useful fields:

[
{
"id": "4017311023166285121",
"shortcode": "DfAWxdIFmVB",
"url": "https://www.instagram.com/reel/DfAWxdIFmVB/",
"type": "video",
"product_type": "clips",
"posted_at": "2026-10-27T18:00:03Z",
"caption": "Even a moment's rest on Everest...",
"hashtags": [],
"mentions": ["chaivasarhelyi", "jimmychin"],
"like_count": 38319,
"comment_count": 180,
"view_count": 460260,
"engagement_rate_pct": 0.014,
"video_duration": 68.33,
"is_pinned": false,
"is_collab": true,
"coauthors": [{ "username": "chaivasarhelyi", "id": "17841401329963366" }],
"tagged_users": [{ "username": "jimmychin", "full_name": "Jimmy Chin", "is_verified": true }],
"location": null,
"audio": { "kind": "original", "title": "Original audio", "artist": "natgeo" },
"media": [{ "type": "video", "url": "https://...", "width": 1080, "height": 1920, "thumbnail_url": "https://..." }],
"comments": [{ "id": "18107112458645766", "text": "Whoa! Can't wait for tomorrow!", "username": "m_ofarrell", "is_verified": true, "likes": 0, "posted_at": "2026-10-30T08:12:15Z" }],
"owner": { "id": "787132", "username": "natgeo", "full_name": "National Geographic", "is_verified": true, "followers": 268242508 },
"from_profile": "natgeo"
}
]

Profiles with no posts

If a profile is private, not found or failed, it adds no rows and no result charges. It is listed in the run log and in a PROFILE_ISSUES record in Storage, then Key-value stores (a small store for run records such as this list). Each entry has from_profile, status (not_found, private or failed) and error, which is the reason. failed means the posts of that profile could not be loaded this time, and running again is safe because result charges apply only to saved posts. If some posts of a profile cannot be loaded, they are skipped, the rest are saved, and the log says some posts could not be collected.

If every profile is private or not found, the run still finishes without an error, with no rows, and the status reads "Done: 0 posts". Each profile is listed with its reason. The run ends as failed only when no post at all was collected because the site did not answer for some profiles.


๐Ÿ’ก Tips and recurring runs

How many posts can you scrape with Fast Instagram Post Scraper?

There is no Actor-wide cap. The number depends on how many profiles you add, Posts per profile, the date and post type filters, the size of each profile and whether some profiles are private or unavailable. The best way to know for your use case, including run time and cost, is a quick test run. Read the platform usage on the run page afterwards.

Run it on a schedule

To check competitors or creators regularly with scheduled runs:

  1. Set up your input in Apify Console, for example your profile list, Only posts newer than 7d, and Comments per post 0 to keep it light.
  2. Click Save as a new task. A task is a saved input you can run again with one click.
  3. Open Schedules, create a schedule (for example weekly) and attach the task.
  4. After each run, compare it with the previous one. Match posts by shortcode (the post's short code), and compare like_count, comment_count and view_count over time.

A weekly run with 7d can overlap a little with the previous run depending on the time it starts, so match on shortcode before you count new posts. Each run reads at most Posts per profile posts for each profile, so raise it if a profile posts more often than that in your time window.

How to get faster or cheaper results

  • ๐Ÿ’ก Lower Posts per profile, and use Only posts newer than for recurring runs.
  • ๐Ÿ’ก Set Comments per post to 0 if you do not need comments.
  • ๐Ÿ’ก Pick Post types to skip formats you do not need.
  • ๐Ÿ’ก Set a maximum charge limit when you start a run.

Known issues

  • โš ๏ธ view_count can be null for some videos.
  • โš ๏ธ engagement_rate_pct and the follower fields of owner are null for posts that belong to another account and do not list the scraped profile as a collaborator.
  • โš ๏ธ The pinned flag is checked on the first page of posts only.

๐Ÿ”Œ Instagram post scraper API and integrations

Can I use it as an Instagram post API?

Yes. The Apify API gives you programmatic access: start runs, schedule them and fetch results. Use the apify-client NPM package for Node.js or the apify-client PyPI package for Python. See the API tab for ready-to-use code.

How to use an Instagram post scraper in Python

This is a short Instagram post scraper Python example:

from apify_client import ApifyClient
# Find your API token in Apify Console under Settings, then API and integrations
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("insights_data/fast-instagram-post-scraper").call(run_input={
"urls": ["https://www.instagram.com/natgeo/"],
"maxItems": 10,
"postTypes": "all",
"commentsPerPost": 1,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["shortcode"], item["like_count"], item["view_count"])

Can I integrate it with other apps?

Yes. Connect it through Apify integrations to Google Sheets, Slack, Make, Zapier, n8n and more. Three workflows that fit this Actor:

  • ๐Ÿ“Š Posts into Google Sheets: save your profiles as a task, schedule it weekly, and send each finished run's dataset to a Google Sheet. Add a column to track like_count week over week. This is a simple way to export Instagram posts to Excel-style sheets that you refresh by running again.
  • ๐Ÿ”” Run-finished messages in Slack: add a webhook (an automatic message Apify sends when a run succeeds or fails) to the task, and post a message to a Slack channel with a link to the dataset. Webhooks fire on run events, not on new posts, so the message also arrives when nothing is new.
  • ๐Ÿงฉ Instagram post scraper n8n: in n8n, use the Apify node to run the Actor, then read the dataset items and pass them to Sheets, a database or an AI step.

See webhooks for how to trigger actions when a run finishes.

Can I use it as an Instagram scraper for Claude (MCP)?

Yes. MCP (Model Context Protocol) lets AI assistants call tools. Connect Fast Instagram Post Scraper to Claude and other AI assistants through the Apify MCP server, then ask the assistant to collect the latest posts of a profile. Open the MCP tab for setup steps. It is a practical Instagram data extractor and Instagram post extractor for AI workflows, and it saves clean JSON you can pass to a model.


๐Ÿ”— Other Instagram scrapers


โ“ FAQ

Web scraping is generally legal if you extract publicly available data. This Actor collects only what any visitor can see on public profiles. However, you should respect personal data (for example, under GDPR) and intellectual property regulations, only collect personal data with a legitimate reason, and take Instagram's Terms of Use into account.

Can you scrape Instagram reels?

Yes. As an Instagram reels scraper, it returns Reels as posts with type video, with view_count, video_duration, audio, comments and links. To scrape Instagram reels only, set Post types to videos and Reels only.

How does Fast Instagram Post Scraper work?

It works like a visitor browsing a public profile, without the manual clicking, and it acts as an Instagram post data scraper for the profiles you list. For each profile, it reads the posts newest first, applies your post type and date filters, loads each post's details, and saves each post to the dataset as soon as it is ready. Private and unavailable profiles are skipped and listed.

How is Fast Instagram Post Scraper different from Instagram Profile Scraper?

They answer different questions, and you can use both.

  • ๐Ÿ“ธ Fast Instagram Post Scraper focuses on posts. Each post comes with caption, hashtags, mentions, likes, comments, Reel views, media links, audio, tagged users, collaborators and up to 15 top-level comments. You can filter by post type and date. It returns no emails or phone numbers.
  • ๐Ÿ‘ค Instagram Profile Scraper focuses on the account. It is described as returning bio, followers, following, verified status, emails and phones from the bio, engagement rate and the latest posts with likes and comments.

Use this Actor when the posts are what you need. Use Instagram Profile Scraper when you need account details or contact data from the bio.

Do I need an Instagram account or cookies?

No. It is an Instagram scraper no login or cookies required. There is no field for an account, and only public profiles work.

Is this an Instagram post likes scraper that lists who liked a post?

No. It returns the number of likes (like_count) for each post. It does not list the accounts that liked it. like_count is null when the owner hid likes, and likes_hidden tells you that.

How is the engagement rate calculated?

For each post, engagement_rate_pct is (likes + comments) / followers x 100, rounded to 3 decimals. It is filled only when the post belongs to, or is co-authored by, the scraped profile and the likes are visible. That makes it a quick starting point for comparing creators, not a replacement for your own judgment.

Why am I getting fewer results than expected?

  • Check Posts per profile. The default is 10 per profile, not per run.
  • Check Only posts newer than and Post types. They drop posts that do not match.
  • A profile may be private, not found or failed. Look at the run log and the PROFILE_ISSUES record for the reason.
  • A small number of posts may fail to load. The log says when that happens.

Run it again later if a profile failed. Result charges apply only to saved posts.

Can I scrape stories, hashtag feeds or contact details?

No. Stories, highlights, hashtag or keyword feeds and emails or phones are not part of this Actor. See the Other Instagram scrapers section above for the Actors that cover them.


๐Ÿ“ง Support and feedback

Found a bug or have a feature request? Please create an issue on the Issues tab.

Need a custom solution or more data? Contact us at hello.insights.data@gmail.com.

Built and maintained by insights_data.