Fast Instagram Post Scraper
Pricing
from $1.50 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Security
Limited permissionsShare
๐ธ 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
7dor 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.
| Field | What you get |
|---|---|
๐ id | Instagram media ID |
๐ค shortcode | Short code that identifies the post, taken from its link |
๐ url | Link to the post |
๐๏ธ type | photo, video or carousel |
๐๏ธ product_type | Instagram's own label for the kind of post (see the JSON example) |
๐
posted_at | Post time in UTC, for example 2026-10-27T18:00:03Z |
๐ caption | Caption text, or null |
#๏ธโฃ hashtags | Lowercase hashtags from the caption, without duplicates |
๐ฃ mentions | Lowercase @mentions from the caption, without duplicates |
โค๏ธ like_count | Number of likes, null when the owner hid likes |
๐ข comment_count | Total number of comments |
๐๏ธ view_count | Views 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_duration | Video length in seconds |
๐ is_pinned | Whether the post is pinned at the top of the profile (checked on the first page of posts only) |
๐ค is_collab | true when the post has co-authors or belongs to another account |
๐ซ coauthors | List of {username, id} |
๐ท๏ธ tagged_users | List 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_disclosure | true when the caption has an ad or partnership hashtag such as #ad or #sponsored |
๐ซ comments_disabled | Comments are turned off |
๐ likes_hidden | The owner hid the like count |
โ๏ธ caption_edited | The caption was edited |
๐ฆฎ alt_text | Image description (accessibility caption) |
๐ width | Original width |
๐ height | Original height |
๐ผ๏ธ thumbnail_url | Link to the preview image |
๐ฌ video_url | Link to the first video file, or null |
๐๏ธ media | List of {type, url, width, height, thumbnail_url} for every photo and video file |
๐ฌ comments | List 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_profile | The profile from your input that the post came from |
Note:
engagement_rate_pctis filled only for posts owned or co-authored by the scraped profile when the like count is visible. Otherwise it isnull. Thefollowers,following,biographyandlinksofownerare filled only for those same posts.view_countcan benullfor some videos. Incomments, thelikesvalue 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_countandvideo_durationfor videos and Reels. - ๐ For influencer engagement rate and Instagram engagement rate, it calculates
engagement_rate_pctper 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.
- Create a free Apify account using your email.
- Open Fast Instagram Post Scraper.
- Add the profile links or usernames you want, one per line.
- Set Posts per profile, and optionally Only posts newer than and Post types. The Input section below shows the matching API names.
- 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.
- 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:
- Results: one result is charged for each post saved to the dataset. The price depends on your Apify plan, as in the table below.
- Start fee: $0.00005 per run at the default memory of 1 GB. It is the same on every plan.
- 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.
| Plan | Price per result | Price 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.0means all posts the profile has, which can be large and costly. - ๐
Only posts newer than (
postedSince): a relative value or a date such as2026-09-01. Relative values are12h(12 hours),7d(7 days),2w(2 weeks),3m(3 months of 30 days each, not 3 minutes) and1y(1 year of 365 days). Leave it empty for no limit. - ๐ฏ Post types (
postTypes, defaultall):all,photo,video(shown in Console as Videos and Reels only) orcarousel. - ๐ฌ Comments per post (
commentsPerPost, default 1): how many top-level comments (not replies) to attach to each post, from 0 to 15.0skips 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/,@natgeoornatgeo - โ Bad:
https://www.instagram.com/p/DfAWxdIFmVB/
Posts per profile and Only posts newer than
โ ๏ธ A high Posts per profile, or
0on 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:
30dor2026-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:
- Set up your input in Apify Console, for example your profile list, Only posts newer than
7d, and Comments per post0to keep it light. - Click Save as a new task. A task is a saved input you can run again with one click.
- Open Schedules, create a schedule (for example weekly) and attach the task.
- After each run, compare it with the previous one. Match posts by
shortcode(the post's short code), and comparelike_count,comment_countandview_countover 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
0if 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_countcan benullfor some videos. - โ ๏ธ
engagement_rate_pctand the follower fields ofownerarenullfor 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 integrationsclient = 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_countweek 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
- ๐ค Instagram Profile Scraper: bio, followers, following, verified status, emails and phones from the bio, engagement rate and latest posts.
- ๐ Instagram Search Scraper: search Instagram by keyword, @username or link for profiles, places, posts and reels, and hashtags.
- ๐งฌ Instagram Related Profiles Scraper: the similar and suggested accounts Instagram shows for a public profile.
- ๐ง Instagram Email Scraper: public emails of Instagram accounts by niche and location, @username or profile link.
- ๐๏ธ Universal Media Transcriber: transcripts and subtitles for video, audio or podcast links, including Instagram.
โ FAQ
Is it legal to scrape Instagram?
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_ISSUESrecord 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.