Instagram Post Scraper — Posts, Carousels & Reels, No Login avatar

Instagram Post Scraper — Posts, Carousels & Reels, No Login

Pricing

from $0.90 / 1,000 posts

Go to Apify Store
Instagram Post Scraper — Posts, Carousels & Reels, No Login

Instagram Post Scraper — Posts, Carousels & Reels, No Login

Scrape posts from public Instagram profiles and post links: photos, carousels and reels with likes, comment count, plays, caption, hashtags, mentions, location, media URLs, date and the owner's follower count. Date filter, and monitor mode for new posts only. No login or cookies.

Pricing

from $0.90 / 1,000 posts

Rating

0.0

(0)

Developer

Yugenox Corp

Yugenox Corp

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

2

Monthly active users

13 days ago

Last modified

Share

Scrape the posts of any public Instagram profile, or of post links you paste. Photos, carousels and reels all come back as rows with likes, comment count, plays for videos, caption, hashtags, mentions, location, image and video URLs, the date, and the owner's username and follower count. You don't need an account, cookies or an API key.

Why this one

  • Built to finish. It runs on the same engine as yugenox/instagram-scraper, and 100 of that Actor's 100 public runs in the 30 days to 2026-10-03 succeeded (Apify Store run stats). Every run ends with the posts it saved and a plain status message. A short timeout, a blocked request or an unexpected error stops the run early and keeps what was read, instead of failing it.
  • The whole timeline, newest first. Profiles are read from Instagram's own profile grid, with every carousel item, real pinned flags, and play counts on videos.
  • Fast, even with short timeouts. In a local test with a 20-second timeout, 213 posts from one profile were saved. On Apify, container start-up counts against the timeout, so a very short timeout saves fewer.
  • Only new posts on a schedule. Monitor mode remembers what earlier runs saved and returns only new posts. Posts you already have are never charged again.
  • No login, no cookies, no account risk. It only reads what Instagram shows to any visitor.

Input

FieldWhat it does
urlsUsernames (nasa, @nasa), profile URLs (the whole timeline, newest first), post or reel URLs (/p/…/, /reel/…/) or numeric user IDs. A profile's /reels/ URL scrapes only its reels tab.
maxPostsHard cap on posts for the whole run. This limits your cost. Empty: 100, or maxPostsPerProfile × the number of profiles when that is set.
maxPostsPerProfileCap per profile, so one big account can't use up the run.
newerThanOnly posts after a date (2026-09-01) or within a period (7 days, 3 months). On profiles, paging stops at the first older post.
skipPinnedPostsLeave out posts pinned to the top of a profile.
monitor, monitorKeyFor scheduled runs: return only posts earlier runs didn't save.
{
"urls": ["https://www.instagram.com/nasa/", "https://www.instagram.com/p/DdHyaYAifb6/"],
"maxPosts": 50,
"newerThan": "30 days",
"skipPinnedPosts": true
}

Hashtag, location, keyword, trend and audio pages are not accepted here. Use yugenox/instagram-scraper for those.

Inputs written for apify/instagram-post-scraper work here too: username, resultsLimit (per profile), onlyPostsNewerThan and skipPinnedPosts.

Output

Each row is one post. Here is an example row (a carousel), shortened:

{
"url": "https://www.instagram.com/p/DdHyaYAifb6/",
"code": "DdHyaYAifb6",
"createdAt": "2026-09-10T21:20:24.000Z",
"mediaType": "carousel",
"caption": "Cementing their names in history. The Artemis III crew is leaving their mark…",
"hashtags": [],
"mentions": ["NASAKennedy", "EuropeanSpaceAgency", "Astro_Luca"],
"likeCount": 120004,
"commentCount": 978,
"isPinned": true,
"image": { "url": "https://scontent…jpg", "width": 1440, "height": 1800 },
"carousel": [{ "type": "image", "url": "https://scontent…jpg", "videoUrl": null, "width": 1440, "height": 1800 }],
"carouselCount": 4,
"video": null,
"owner": { "username": "nasa", "fullName": "NASA", "isVerified": true, "followerCount": 104294370 },
"engagementRate": 0.116
}

mediaType is image, carousel or video. Videos and reels add video (playCount, duration, url, width, height) and audio. Rows also carry location, coowners (collab posts), taggedUsers, isPaidPartnership, sponsors, accessibilityCaption and source (which of your inputs found the post). engagementRate is likes plus comments divided by the owner's followers, in percent.

Plays: videos on a profile get Instagram's play count from the profile's reels tab. Instagram doesn't show a play count on a single post's page to logged-out visitors, so for a pasted post or reel URL video.playCount is null. A video pinned long ago may also be further back than the reels tab is read; the run report notes it.

Share counts and transcripts are not included. For the spoken words of reels, use Instagram Reels Transcript.

Pricing

$1.20 per 1,000 posts on the Free and Starter plans, less on bigger plans, plus a $0.001 start fee per run.

Your Apify plan (discount tier)Per postPer 1,000 posts
Free (FREE)$0.0012$1.20
Starter (BRONZE)$0.0012$1.20
Scale (SILVER)$0.0010$1.00
Business (GOLD)$0.0009$0.90
Enterprise (PLATINUM, DIAMOND)$0.0009$0.90
  • Start fee: $0.001 per run (charged per GB of memory; the default 512 MB is one).
  • You pay only for posts saved. Posts older than newerThan, posts left out by skipPinnedPosts, and posts monitor mode already delivered are free.
  • Your spending limit is respected up front. The run stops at the number of posts your limit covers.
  • Free Apify plans are limited to 100 posts per run.
  • Example: the last 200 posts of 5 profiles (1,000 posts) on Starter cost $1.20 + $0.001.

FAQ

Do I need an Instagram account or cookies? No.

Does a profile URL include reels? Yes. The profile timeline has photos, carousels and reels together, newest first, as on Instagram. Paste the profile's /reels/ URL to get only its reels.

Why is playCount empty for some videos? A pasted post or reel URL has no play count (see Output), and neither does a video pinned long ago that is further back than the reels tab is read.

Can I get only the new posts each day? Yes. Schedule the Actor with monitor: true (and a monitorKey per watchlist), or with newerThan: "24 hours".

What about private accounts? Private accounts are skipped. The run report marks them private, and nothing is charged for them.

Can I get tagged posts or stories? No. Instagram shows those only to logged-in users.

Is it legal to scrape Instagram? This Actor only collects publicly available data: posts from public Instagram accounts and the public profiles of the accounts that posted them, which anyone can see without logging in. Collecting publicly available data is generally legal, but you're responsible for how you use it. Results can include usernames, names, captions and tagged accounts, and that counts as personal data. You must follow privacy laws such as GDPR, PIPEDA and CCPA, as well as Instagram's terms. If you're unsure, check with a lawyer. More on this: Is web scraping legal?

If you contact people you find, anti-spam laws apply: CASL in Canada, CAN-SPAM in the US, and GDPR/ePrivacy in the EU. Get consent before sending commercial messages.

Does it access any private data? No. Everything comes from pages Instagram shows to any visitor without logging in. It never uses a login, never touches private or restricted accounts, and never reaches password-protected areas.

Use it from code, n8n, Make or an AI agent

curl -X POST "https://api.apify.com/v2/acts/yugenox~instagram-post-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'content-type: application/json' \
-d '{"urls":["https://www.instagram.com/nasa/"],"maxPosts":20}'
  • n8n / Make: use the Apify node, choose "Run Actor and get dataset items" and pick yugenox/instagram-post-scraper.
  • MCP (Claude, Cursor and others): add https://mcp.apify.com?actors=yugenox/instagram-post-scraper as an MCP server.

More Instagram tools