Home › Guides › Instagram Profile Posts Scraper

Instagram post history by profile: photos, carousels and reels as clean rows

The Instagram Profile Posts Scraper returns a profile's posts — photos, carousels and reels — one row per post, from the top of each list down until the list ends or your limit is reached. A row carries the caption with hashtags and mentions, the kind, the image address, author and two approximate times. Turn on Read each post's details and one more request per post adds likes and comments, exact time, location, co-authors, tagged accounts, carousel items and topics — and, for a video, its length, file address and sound. No login, no cookies, no account.

Who it's for

What you get

GroupFields
From the listType (photo/carousel/reel), post ID & short code, URL, owner, caption, hashtags, mentions, accessibility caption, image URL, carousel count, approximate times, position
With detailsExact time, like count (+ hidden flag), comment count (+ disabled flag), location, co-authors, tagged users, carousel media, topics, size; for video: duration, video URL, music

A real detailed row (trimmed):

{
  "type": "photo",
  "url": "https://www.instagram.com/p/DeMw7vrDPS3/",
  "profile": "nasa",
  "caption": "Moon-like Madagascar … #NASA #Earth #Geology",
  "hashtags": ["NASA", "Earth", "Geology"],
  "takenAtApprox": "2026-10-07T16:15:00.015Z",
  "takenAt": "2026-10-07T16:15:06.000Z",
  "likeCount": 84901, "likesHidden": false,
  "commentCount": 249,
  "topics": ["satellite view", "geology", "earth from space"],
  "detailsSource": "post-query",
  "positionInProfile": 9
}

Input

InputWhat it does
profilesOne per line: natgeo, @natgeo or a URL (up to 10,000; duplicates read once)
maxPostsPerProfile · maxPostsPosts per profile from the top of its list (default 100) · total rows
postTypesphoto, carousel, video (covers reels); other kinds skipped, not charged
includeDetailsRead each post's own record for engagement, exact time and more (default off)
onlyNewPosts · listNameDeliver only posts not delivered before — account watching on a schedule
{ "profiles": ["nasa"], "maxPostsPerProfile": 12, "includeDetails": true }

Honest limits

Pricing

Pay per result: a post event (from the list) or post-detailed (details read). A post asked with details that came without them carries post. Status rows, posts of a kind you did not ask for, and posts skipped as already delivered are free. Current prices are on the actor's Pricing tab on Apify.

Pull a profile's whole feed: photos, carousels and reels with captions and, on demand, engagement and exact times. Exportable to JSON, CSV or Excel.

Open the Instagram Profile Posts Scraper →

Related

This Actor reads a profile's feed; for profile-level metrics (followers, engagement rate) use the Instagram Profile Scraper, for one post by URL the Instagram Post & Reel Details Scraper, for reels with a score the Instagram Reels Scraper, and for comments the Instagram Comments Scraper.

Frequently asked questions

Do I need an Instagram login or cookies?

No — only what a signed-out visitor sees. No login, no cookies, nothing from your own account.

Why are there no like or comment counts on some rows?

The profile's list carries none; they come with includeDetails, which reads each post's own record (one more request per post). A hidden like count stays null, never a fake 0.

Are the times exact?

takenAtApprox and publishedDayApprox are approximate — read from the post id, within a minute of the exact time for 64 of 120 posts but over an hour early for 16. Use takenAt (with details) for the exact order; allow a day when filtering on publishedDayApprox.

Does it get reels?

Yes, as video or reel rows. For reels-only with a performance score against the profile's median, use the Instagram Reels Scraper.

Can I watch a profile for new posts?

Yes — turn on onlyNewPosts with a listName and schedule the run; each run delivers only posts not delivered before. postId is the key, delivered once per run.

Using the data lawfully

Posts are published by the accounts themselves, but rows can hold personal data of others (co-authors, tagged accounts, mentions, locations); you decide why you use it and are responsible for a lawful reason (GDPR and similar). Media belongs to its owners and its addresses are temporary. Not affiliated with Instagram or Meta.

Instagram Profile Posts Scraper — a profile's post history, with engagement on demand. Pay per row, no API key.

Get Instagram posts on Apify →