Skip to content
Keklik

WorkingInstagram · tested Nov 12, 2026

Instagram Post Scraper

Get the posts of any public Instagram profile, with caption, likes, comment count, date, photos, videos, tags and music.

  • 46 data points for every post
  • Profiles or post links is all you type
  • From $1 per 1,000 posts
  • No Instagram account or login needed
  • 21 users
  • 129 runs
  • 124.5K rows of data

In short

Instagram Post Scraper gets the posts of any public Instagram profile, newest first, or single posts from their links. Each post is one row with caption, likes, comment count, date, photos, videos, carousel slides, tags, mentions and music. The newest comments of each post are an optional add-on, charged per comment.

You enter
Usernames, profile links or post links
You get
Caption, likes, comment count, date, photos, videos, tags and music
Add-ons
Latest comments
Price
$1 per 1,000 posts on Apify’s Free plan, down to $0.70 on Business. Apify’s platform costs are included.
Formats
CSV, Excel, JSON, Google Sheets, or the API
Runs on
Apify, in your own account. No login to the site needed.

1Sample rows

Real rows from a recent run. The full file has 48 columns.

starbucks · 10real output

5 of the posts found

CaptionPostedMedia typeLikesComments
@paigepaul can do it all, just like protein cold foam13 Oct 2026video191,343859
a little BTS with @paigepaul14 Oct 2026video36,328174
does @dairyboy founder @paigepaul know her dairy?13 Oct 2026video62,526206
now available under Trending in the Starbucks app15 Oct 2026carousel47,484314
the Aerocano. definitely new. definitely frothy. airier too.29 Sept 2026video46,945477
Real results from a test search. The full file has 48 columns.Download the sample ↓

2Use cases

What people use it for.

Competitor tracking

What rival accounts post, how often and in which format, and which posts draw the most likes and comments.

Vetting influencers

Engagement on each post, paid partnership labels, collab posts and the brands an influencer tags.

Content planning

The captions, hashtags, formats and music behind the best posts in your niche.

Research datasets

Every post from a set of accounts over a chosen period, for trend or sentiment analysis.

3How it works

How it works. The same steps as the form on Apify.

1

Type the profiles

Profiles or postsstarbucks
Posts per profile10

A username or profile link gets its posts, newest first. A post link gets that one post.

2

Keep only the posts you want

Past 30 days10 per profileSkip pinned posts

Set a start date, how many posts to take from each profile, or leave out pinned posts.

3

Add comments if you need them

Choose how many of each post's newest comments to add. You pay per comment, and none are added unless you ask.

4

Download your list

As a spreadsheet, in Google Sheets, or into your reporting tool.

CSVExcelSheetsAPI

4What you get

What you get for each post. 48 fields in 9 groups.

Add-ons are extra data you switch on in the scraper’s form.

  • Post

    Post URL, Posted, Media type, Caption, Alt text, Product type, Is video, Pinned, Paid partnership, Paid partner, and 4 more

  • Author

    Author username, Author name, Author ID, Author profile picture

  • Likes and comments

    Likes, Comments, Likes hidden

  • Photos and videos

    Carousel slides, Image URL, Video URL, Reel URL, Slide 1 image, Slide 2 image, Slide 3 image, Slide 4 image, Slide 5 image

  • Carousel slides

    Carousel slide 1, Carousel slide 2, Carousel slide 3, Carousel slide 4, Carousel slide 5, Carousel slide 6, Carousel slide 7, Carousel slide 8, Carousel slide 9, Carousel slide 10

  • Tags, mentions and hashtags

    Hashtags, Mentions, Co-authors, Tagged accounts

  • Music

    Music

  • Latest commentsAdd-on

    Latest comments

  • Scrape details

    Source input, Scraped at

See all 48 columns
ColumnFieldWhat it is

Post

  • urlPost URLLink to the post (https://www.instagram.com/p/<shortcode>/).
  • timestamp_datetimePostedPublication time, ISO 8601 in UTC.
  • media_typeMedia type"image", "video" or "carousel".
  • captionCaptionCaption text.
  • altAlt textAlt text of the image, when Instagram or the author set one.
  • product_typeProduct typeInstagram product type: "feed" (photo), "carousel_container" or "clips" (reel).
  • is_videoIs videoTrue for videos and reels.
  • is_pinnedPinnedPinned to the top of the scraped profile. Always false for single post URLs.
  • is_paid_partnershipPaid partnershipLabelled as a paid partnership.
  • paid_partnersPaid partnerThe brands a paid partnership names ("Paid partnership with ..."), by username. Empty when it isn't one, and on some paid partnerships that name no brand.
  • dimensionsDimensionsWidth x height of the main media, in pixels.
  • timestampPosted (Unix)Publication time, Unix seconds.
  • post_idPost IDNumeric Instagram media ID, as a string.
  • shortcodeShortcodeThe code in the post URL.

Author

  • owner_usernameAuthor usernameUsername of the author.
  • owner_full_nameAuthor nameDisplay name of the author.
  • owner_idAuthor IDNumeric Instagram user ID of the author, as a string.
  • owner_profile_pic_urlAuthor profile pictureProfile picture URL of the author. Instagram image links expire.

Likes and comments

  • likes_countLikesNumber of likes. Empty when the author hides like counts (like_and_view_counts_disabled is then true).
  • comments_countCommentsNumber of comments Instagram shows on the post.
  • like_and_view_counts_disabledLikes hiddenTrue when the author hides this post's like and view counts. likes_count is then empty, because Instagram shows visitors no real number.

Photos and videos

  • carousel_media_countCarousel slidesNumber of slides, for carousels.
  • display_urlImage URLMain image or video cover URL. Instagram media links expire.
  • video_urlVideo URLVideo file URL, for videos and reels. Instagram media links expire.
  • reel_urlReel URLLink to the reel (https://www.instagram.com/reel/<shortcode>/), for videos only.
  • image_1Slide 1 imageImage URL of carousel slide 1.
  • image_2Slide 2 imageImage URL of carousel slide 2.
  • image_3Slide 3 imageImage URL of carousel slide 3.
  • image_4Slide 4 imageImage URL of carousel slide 4.
  • image_5Slide 5 imageImage URL of carousel slide 5.

Carousel slides

  • child_post_1Carousel slide 1Carousel slide 1: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_2Carousel slide 2Carousel slide 2: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_3Carousel slide 3Carousel slide 3: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_4Carousel slide 4Carousel slide 4: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_5Carousel slide 5Carousel slide 5: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_6Carousel slide 6Carousel slide 6: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_7Carousel slide 7Carousel slide 7: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_8Carousel slide 8Carousel slide 8: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_9Carousel slide 9Carousel slide 9: id, alt, width, height, display_url, timestamp, media_type, video_url.
  • child_post_10Carousel slide 10Carousel slide 10: id, alt, width, height, display_url, timestamp, media_type, video_url.

Tags, mentions and hashtags

  • hashtagsHashtagsHashtags in the caption, with the #.
  • mentionsMentionsUsernames mentioned in the caption, without the @.
  • coauthorsCo-authorsCollab co-authors: id, username, full_name, is_verified, profile_pic_url.
  • user_tagsTagged accountsAccounts tagged in the media: id, username, full_name, is_verified, profile_pic_url.

Music

  • musicMusicAudio of a reel or video: audio_id, song_name, artist_name, uses_original_audio, should_mute_audio, should_mute_audio_reason, is_trending_in_clips, is_explicit.

Latest commentsadd-on

  • latest_commentsLatest commentsOnly with Comments per post set, for posts that have comments: the post's newest comments, newest first, each with comment_id, text, created_at (Unix seconds), likes_count, is_edited, is_covered (hidden by Instagram), giphy_id, giphy_url, owner_id, owner_username, owner_is_verified, owner_profile_pic_url.

Scrape details

  • source_urlSource inputThe input this post came from, as you entered it.
  • scraping_timeScraped atWhen the row was scraped, ISO 8601 in UTC.

5Pricing

Pricing. From $1 per 1,000 posts, platform costs included.

Run it yourself on Apifypay per result

Your Apify plan

1005001K5K10K50K
Posts$1.00
Comment$1.00
Up to$2.00
Run it on Apify
Done for you

Don’t pay for data you don’t need

Tell us the data you need and we deliver just that, cleaned and ready to use.

  • You pay per data point, not for a tool or a subscription
  • No duplicates, no filler, no columns you'll delete
  • Delivered to your sheet or CRM, once or every week
  • Free sample rows before you pay anything
Tell us what you need →
Compare every plan and scraper on the Pricing page →

Good to know

Instagram hides view and play counts from visitors who aren't logged in, so posts come without them. Comments are top-level only, and a carousel row keeps its first 10 slides. Image and video links expire, so download any media you need soon after the run.

6Questions

Questions.

How do I keep my first run small and cheap?

Start with one or two profiles and keep 🔢 Max posts per profile at 20, or set 🛑 Max posts in total: the run stops there. Leave 💬 Comments per post at 0 until you know you need comments. To follow a profile over time, schedule a run with 📅 Posted after set to 1 day so each run gets only the new posts.

Is it legal to scrape Instagram?

This scraper collects only data that Instagram shows publicly to visitors who are not logged in. Posts can still contain personal data, such as usernames of tagged accounts or commenters. Personal data is protected by laws such as the GDPR in Europe, so make sure you have a lawful reason to collect and use it, and check with a lawyer if you are unsure.

Do I need an Instagram account?

No. You don't need an Instagram account, a login or cookies.

Can I scrape private Instagram profiles?

No. Instagram shows a private profile's posts only to approved followers, so private profiles are skipped.

Can I get view or play counts?

Not on posts: Instagram does not show view counts to logged-out visitors. For reels, Instagram Reels Scraper gives the play count of each reel.

How do comments work?

Set Comments per post to add each post's newest comments to its row. Comments come newest first and are top-level comments only: replies and the "most relevant" order are not available without logging in. A post with no comments has no latest_comments. If Instagram refuses a post's comments, the post is still saved without them, and the run's status message says how many posts missed their comments. You pay only for the comments you get. For many comments per post, or one row per comment, use the Instagram Comments Scraper.

Show 5 more questions
Why do some media links stop working?

Instagram image and video links expire after a while. Download the media soon after the run if you need to keep it.

What happens when a run fails?

The run's status message says why, and the log names each input that failed. If a mistake in the input stops the run before anything is scraped, the run ends without results and its status message says what to change. Either way the Actor sends us a short error report, so we can fix the cause even if you never open an issue: the Actor's build, the reason, the counts from the end-of-run summary, whether your Apify plan is free or paid and, for an unexpected error, where in our code it happened. Web addresses and @usernames are blanked out first. The report never includes your input, your account, the pages you scraped or your results. Every run, failed or not, also sends one usage line as it ends, so we can see which options people use, what runs cost us and how well the data is filled: how many of each charged event it used (for example 120 full details) and the price your plan paid for them; the run's platform cost by item and its resources (time, memory, proxy traffic); whether it stopped at your maximum cost or maximum items; how it was started (Console, API, schedule, saved task, and for API runs the kind of tool, such as Make, Zapier or the Apify client, never the tool's full identity); our scraper's own retry and timing counts; and for each output field, how many results had it filled (counts only, never the values). That never includes your input, your account, your IP address, the pages you scraped or your results either. If you need help with a run, open an issue on the Issues tab and attach the run, or email support@kekliktech.com with the run's link; the run's log ends with both.

How much does it cost?

$1.00 per 1,000 posts on Apify's free plan, down to $0.70 on the Business plan. Use the calculator above for your numbers.

Do I need an Apify account?

Yes. The scraper runs in your Apify account and Apify bills you per result. A free Apify account is enough to try it.

Can you run it for us instead?

Yes. We can run it on a schedule, clean up the results and send them to your sheet, CRM or database. Ask for a quote and we reply within one business day.

7Updates

Kept working.

We run a small test search every day and fix the scraper when Instagram changes.

Working23 of 27 days passed · launched Oct 16, 2026
  1. Nov 12, 2026

    Paid partnerships name the brand

    A post marked "Paid partnership" now names the brand in a new paid_partners column, for example mastercard on a Leo Messi post. Some paid posts name no brand; the column is then empty.

  2. Nov 12, 2026

    Fewer posts lost to proxy hiccups

    When Apify's proxy briefly loses its connection, the request now waits a moment and goes again on a new IP, without using up one of its tries, so fewer posts are skipped as refused.

  3. Nov 12, 2026

    Hidden likes are empty, not 3

    When an author hides a post's likes, Instagram shows visitors a stand-in number, and likes_count used to say 3. It is now empty, and a new like_and_view_counts_disabled column says the likes are hidden.

All 10 updates
  1. Nov 12, 2026

    Easier to use, for people and AI agents

    The form has clearer names (Newer than is now 📅 Posted after, Max results is 🛑 Max posts in total), and both date fields use a date picker that also takes periods such as "3 months"; dates typed the old way keep working. Every view in the Output tab starts with the post's link. Every output field now has a plain description and an example value, so AI agents using Apify's MCP server know what each one holds, and a run that reaches the maximum cost you set stops cleanly, keeps everything saved so far and says so in its status. Saved tasks and API calls keep working as before.

  2. Nov 12, 2026

    Posts between two dates

    New Posted before field. With Newer than, it gives you only the posts published between two dates, for example one month last year. Newer posts are passed over without being charged.

  3. Nov 8, 2026

    No new results is not a failure

    A scheduled run with "Newer than" set no longer fails on a day the profile posted nothing new. It finishes cleanly with 0 posts and says there was nothing new.

  4. Oct 26, 2026

    Profiles work again

    Instagram changed its profile pages on October 22, and profile links stopped returning posts. They work again, with the same fields as before, pinned posts included. Each post is now read on its own, so a large profile takes longer than it did.

  5. Oct 18, 2026

    Fewer failed runs

    A profile that is private or has no posts now finishes cleanly, with the reason, instead of showing an error.

  6. Oct 16, 2026

    Pricing set

    $1 per 1,000 posts. The newest comments on each post are optional, at $1 per 1,000 comments.

  7. Oct 16, 2026

    Launched

    Paste Instagram profiles or post links and get each post's caption, likes, comment count, date, photos, videos, carousel slides, tags and music. No Instagram account needed.