Instagram Post Scraper: $1 per 1,000 Posts · Apify
Instagram Post Scraper: Captions, Likes, Comments, No Login avatar

Instagram Post Scraper: Captions, Likes, Comments, No Login

Pricing

from $0.90 / 1,000 results

Go to Apify Store
Instagram Post Scraper: Captions, Likes, Comments, No Login

Instagram Post Scraper: Captions, Likes, Comments, No Login

Instagram post scraper for public profiles and post links: caption, hashtags, likes, comments, publish time, location, tagged accounts, image and video links, views for videos. Up to 12 latest posts per profile. No login. $1 per 1,000 results, platform usage included.

Pricing

from $0.90 / 1,000 results

Rating

0.0

(0)

Developer

One Dollar Store

One Dollar Store

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Categories

Features

Limited permissions

Share

Instagram Post Scraper: captions, likes, comments and dates from public profiles

$1 per 1,000 posts. Platform usage included. No rental, no minimum.

Give it Instagram usernames or post links and get one row per post: post ID, shortcode, link, type (photo, carousel, video or reel), full caption with its hashtags and mentions, like and comment counts, publish time, location, owner, coauthors, tagged accounts, image and video links, carousel items, and for videos the views, length and audio. It reads the public pages Instagram shows to any visitor. No login, no cookies, no follower lists.

Open it in Apify Console

New to Apify? [Create a free account](https://www.apify.com?fpr=ymnoit) (referral link).

What does Instagram Post Scraper cost?

PostsThis actor
1,000$1.00
10,000$10.00
100,000$100.00

One flat price, platform usage included, so there is no separate compute or proxy bill. A daily run over 50 brand profiles with their 12 latest posts each is 600 posts, about $0.60 a day or about $18 a month. Posts that are skipped by your date filter, profiles that do not exist and profiles Instagram refuses are not charged.

Why use it

  • Full post records. Each post is read from its own public page, so you get the exact publish time, exact like and comment counts, the whole caption, location name and ID, coauthors of collab posts and tagged accounts, not only a preview.
  • Video details included. For videos and reels the row also has views, length in seconds, whether it has sound, the audio title and artist, and a link to the video file.
  • Profiles or single posts. Mix usernames and post links in one run. A date filter keeps only posts newer than a day you choose.
  • IDs for joining. Post ID, shortcode and owner ID stay the same when captions or usernames change, so you can track the same posts over time.

How to use Instagram Post Scraper

  1. Open the actor, add one username per line (or a profile link), press Start.
  2. Or paste this input:
{ "usernames": ["nasa", "peakdesign"], "maxPostsPerProfile": 6, "maxItems": 12 }
  1. Download the results as JSON, CSV or Excel, or read them through the API.

Use it from code

curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~instagram-post-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"usernames": ["nasa", "peakdesign"], "maxPostsPerProfile": 12, "maxItems": 100}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/instagram-post-scraper").call(
run_input={"usernames": ["nasa", "peakdesign"], "maxPostsPerProfile": 12, "maxItems": 100}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["postedAt"], item["ownerUsername"], item["likeCount"], item["url"])

Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

https://mcp.apify.com?tools=one_dollar_store/instagram-post-scraper

Then ask, for example: "Get the 12 latest Instagram posts of @nasa with likes, comments and dates."

Switching from another Instagram post scraper

Most Instagram post actors take a list of usernames or post links and a limit. Here they are usernames, postUrls, maxPostsPerProfile and maxItems. The core output fields are shortcode, url, type, caption, likeCount, commentCount, postedAt and ownerUsername.

Input

FieldTypeDefaultWhat it does
usernameslist of textnoneUsernames or profile links, for example natgeo, @natgeo or https://www.instagram.com/natgeo/.
postUrlslist of textnoneLinks to single posts or reels (/p/..., /reel/...). One row each.
maxPostsPerProfilenumber12Latest posts per profile, 1 to 12.
newerThandatenoneYYYY-MM-DD. Older posts are skipped and not charged.
maxItemsnumber100Total posts for the run, 10 to 100,000.
proxyConfigurationobjectApify proxyData center proxy by default. Its cost is included in the price.

Give at least one username or post link.

What data does Instagram Post Scraper return?

FieldMeaning
postId, shortcode, urlInstagram ID, the short code and the link (reels use /reel/).
type, productTypephoto, carousel, video or reel, and Instagram's own label.
ownerUsername, ownerId, ownerFullName, ownerIsVerifiedThe account that published it. For a collab post this can be a partner of the profile you asked for.
postedAtPublish time, ISO 8601 in UTC.
caption, captionEdited, hashtags, mentionsFull caption, whether it was edited, and the hashtags and @mentions in it.
likeCount, commentCount, countsHiddenCounts as Instagram shows them; likes are left out when the owner hides them.
viewCount, videoDurationSecs, hasAudioVideos and reels: views, length, sound.
audioTitle, audioArtist, audioId, usesOriginalAudioVideos and reels: the song or original audio.
locationName, locationIdTagged location.
isPinned, isPaidPartnership, sponsorsPinned flag (known for posts from the profile card), paid partnership label and brand partners.
coauthors, taggedUsersUsernames of collab coauthors and of tagged accounts.
accessibilityCaptionInstagram's description of the image.
displayUrl, videoUrl, width, heightImage or cover link, video file link, original size.
carouselCount, carouselItemsCarousels: number of items and each item's ID, type, image and video link.
requestedProfile, requestedUrl, feedPosition, source, scrapedAtWhich input found it, its position on the profile, which public pages it was read from, and when.

Sample results

Real rows from test runs on 6 November 2026 (captions and links shortened).

[
{"postId": "4021095312734048310", "shortcode": "DfNzOHbgFA2", "url": "https://www.instagram.com/p/DfNzOHbgFA2/", "type": "carousel", "ownerUsername": "adidas", "ownerFullName": "adidas", "postedAt": "2026-11-01T22:25:37.000Z", "caption": "YOUR NEW WORLD CHAMPION 💙​\n​\nThe youngest ever. First Italian champion since ’53.🏆 Cong...", "likeCount": 290359, "commentCount": 425, "locationName": "Autodromo Hermanos Rodriguez", "locationId": "491332271372801", "coauthors": ["adidasmotorsport"], "taggedUsers": ["mercedesamgf1", "kimi.antonelli", "adidasmotorsport"], "carouselCount": 4, "width": 1080, "height": 1440, "requestedProfile": "adidas", "feedPosition": 4, "source": "profile page and card, post page"},
{"postId": "4023389236945569299", "shortcode": "DfV8zG1RUYT", "url": "https://www.instagram.com/p/DfV8zG1RUYT/", "type": "photo", "ownerUsername": "nasaaero", "ownerFullName": "NASA Aeronautics", "postedAt": "2026-11-05T02:25:45.000Z", "caption": "🚨 BREAKING: Introducing X-70 Fractal, @nasa’s newest experimental aircraft! \n\nThis crew...", "mentions": ["nasa", "nasaadmin"], "likeCount": 153599, "commentCount": 577, "coauthors": ["nasa", "nasaadmin"], "taggedUsers": ["nasa", "nasaadmin"], "width": 1680, "height": 960, "requestedProfile": "nasa", "feedPosition": 1, "source": "profile card, post page"},
{"postId": "3536981079146171046", "shortcode": "DEV4Y0_yQqm", "url": "https://www.instagram.com/reel/DEV4Y0_yQqm/", "type": "reel", "ownerUsername": "1tomplumber", "ownerFullName": "1-Tom-Plumber", "postedAt": "2025-01-02T23:39:25.000Z", "caption": "God bless our emergency plumbers 🫡\n\n#plumber #drains #happynewyear", "hashtags": ["plumber", "drains", "happynewyear"], "likeCount": 159, "commentCount": 13, "viewCount": 17438, "videoDurationSecs": 33.95, "audioTitle": "Slow It Down (Instrumental)", "audioArtist": "Deuxhyun", "width": 1080, "height": 1920, "requestedProfile": "1tomplumber", "feedPosition": 1, "source": "profile page and card, post page, post embed"},
{"postId": "4007938272349758937", "shortcode": "DefDp-tGaXZ", "url": "https://www.instagram.com/p/DefDp-tGaXZ/", "type": "carousel", "ownerUsername": "peakdesign", "ownerFullName": "Peak Design", "postedAt": "2026-10-14T18:44:55.000Z", "caption": "We just re-certified as a B Corp. It was a lot harder this time. (That’s a good thing.)...", "likeCount": 557, "commentCount": 15, "taggedUsers": ["bcorporation"], "carouselCount": 5, "width": 3276, "height": 4095, "requestedProfile": "peakdesign", "feedPosition": 5, "source": "profile card, post page"}
]

Limits

  • Up to 12 posts per profile. A visitor who is not logged in sees at most the 12 posts at the top of a profile (pinned posts first, then the newest). Instagram asks for a log in after that, and this actor never logs in. For older posts, give their links in postUrls.
  • Sometimes only the 6 latest. Posts 1 to 6 come from the public profile card, which answers reliably. Posts 7 to 12 need the profile page, and Instagram refuses many data center addresses there. The actor tries 5 addresses; a capped share of profiles (20 percent of those started, none in a run of 1 to 4 profiles) gets one more try through residential proxy. When all of that is refused you get the 6 latest posts for that profile, and the run summary says so.
  • Refused profiles are not charged. On a day when Instagram refuses most addresses, some profiles are not read. They are listed in the run summary, and the run stops after 6 profiles in a row that were refused on every try. Run them again later.
  • No comments text, no likers, no follower lists. Only counts.
  • Views are for videos and reels only. Reel plays (the number on the reels tab) are in the companion Instagram Reels Scraper.
  • Pinned flag is known only for posts that also appear on the profile card.
  • Image and video links expire after a few days, as all Instagram media links do. Download what you need soon after the run.
  • Speed. Each post is read from its own large public page. A 1,000 post test on the default 256 MB delivered about 0.8 posts a second, so a big list takes a while. The price per post is the same at any memory size.
  • Every run writes a RUN_SUMMARY record with counts, the profiles that were missing or refused, and how many reads each kind of page needed.

FAQ

How much does it cost to scrape 10,000 Instagram posts? $10.00 for the posts. Platform usage is included.

Do I pay for compute or proxy on top? No. Compute, data center proxy and the capped residential reads are all inside the $1 per 1,000 price.

Why did I get 6 posts for a profile when I asked for 12? Instagram refused the profile page on every try for that profile, so only the profile card was read. Run that profile again later.

Can I get more than 12 posts per profile? Not by username. Logged out, Instagram stops at 12. You can pass any number of post links in postUrls, and each one is read in full.

Can I filter by date? Yes. Set newerThan to a date such as 2026-10-01. Older posts are skipped and not charged.

Is it legal? The actor reads public pages that Instagram shows to any visitor, with no login and no cookies, and returns only what the account holder published. Instagram's robots.txt asks automated visitors to stay away from all pages, and Instagram's Terms of Use (section 4.2) bar collecting information in an automated way without its permission. The actor reads at a polite rate and stops when it is refused, but whether you may use it is for you to judge. Captions, usernames and tagged accounts can be personal data under laws such as GDPR. You are responsible for lawful use, including a legal basis for storing the data and the rules on marketing messages.

Is this an official Instagram product? No. It is an independent tool and is not affiliated with or endorsed by Instagram or Meta.

Feedback and support

Found a problem or want a field added? Open an issue on the Issues tab of this actor and it gets read. If the actor saved you time, an honest rating on the Reviews tab helps other people find it.

Do I need an Apify account? Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can sign up here. This is a referral link and it costs you nothing.

More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

Social media

Changelog

  • November 2026: first release.