Instagram Post Scraper avatar

Instagram Post Scraper

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Instagram Post Scraper

Instagram Post Scraper

Scrape public Instagram profile posts, reels, and carousel media with captions, likes, comments, plays, timestamps, media URLs, and optional cloud media downloads for content analytics, influencer research, and AI workflows.

Pricing

from $2.20 / 1,000 results

Rating

5.0

(1)

Developer

TrueFetch

TrueFetch

Maintained by Community

Actor stats

1

Bookmarked

29

Total users

8

Monthly active users

4 days ago

Last modified

Share

Affiliate disclosure: Apify links on this page may include referral parameters. If you sign up through one of these links, TrueFetch may earn a commission from Apify at no extra cost to you. Pricing, features, and Actor access are unaffected.

Instagram Post Scraper Profile Posts Scraper Pay per Result No Login Required Telegram Support Telegram Group

Instagram Post Scraper — Profile Posts, Reels & Media Scraper API

Scrape any public Instagram profile to extract all posts and reels — including captions, media links, like counts, comment counts, play counts, and media details — in a single Apify Actor run. Returns clean JSON / CSV / Excel for content analysis, influencer research, and AI agent workflows, with optional media download, and no Instagram login or cookies required.

TL;DR (40-word answer): Instagram Post Scraper is a no-login Apify Actor that returns 60+ structured fields per post from any public Instagram profile with tiered pricing from $6.75 per 1,000 posts, including captions, media URLs, likes, comments, and plays. Last verified 2026-07-05.

What it is NOT: Instagram Post Scraper is not a follower or following scraper, not an Instagram DM automation tool, and not a comment scraper — it only reads publicly visible posts and reels from a given Instagram profile.

Instagram Post Scraper is an Apify Actor that scrapes posts from any public Instagram profile and returns 60+ structured fields per post — post_id, shortcode, post_url, post_type, owner fields, caption, hashtags, mentions, timestamps, engagement counts, media counts, location fields, comments, audio metadata, and media_items. Supports optional media download, configurable result limits, and clean media extraction. Maintained by TrueFetch on the Apify Store.


📸 Why choose Instagram Post Scraper

Instagram Post Scraper is best for content researchers, influencer agencies, and developers who need structured post data from any public Instagram account without managing authentication or building scrapers.

  • 📊 60+ fields per post — processor, processed_at, post_id, shortcode, post_url, post_type, owner_username, caption, hashtags, mentions, published_at, like_count, comment_count, play_count, view_count, media_count, location_name, audio_title, top_comments, and media_items.
  • 📥 Optional media download — download all available media to your Apify storage with tiered media pricing from $0.00855 per file.
  • ⚡ Pay-per-result pricing — FREE tier is $7.50 per 1,000 posts ($0.00750 per result), with paid tiers discounted down to $6.75 per 1,000 posts.

🚀 Quick Start — run in 3 steps

Run in Apify Console

  1. Open the Actor — go to Instagram Post Scraper on Apify and click Try for free.
  2. Configure inputs — enter a bare username and max_results; optionally enable download.
  3. Click Start — the Actor streams results into the default dataset; download as JSON, CSV, or Excel.

Run via Apify API

curl -X POST "https://api.apify.com/v2/acts/truefetch~instagram-post-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "natgeo",
"max_results": 50,
"download": false
}'

Run via MCP (for AI agents)

Instagram Post Scraper is callable from Claude, ChatGPT, Cursor, and any MCP-compatible client through the Apify MCP Server. Reference the Actor as truefetch/instagram-post-scraper and pass the same JSON input as above.


⚙️ Input parameters

ParameterTypeRequiredDefaultDescriptionExample
usernamestringBare Instagram username to scrape posts from. Do not include @ or a profile URL.natgeo
max_resultsintegerMaximum number of posts to return. Range: 1 to 1,000,000.50
downloadbooleanfalseEnable to save all available post media files to Apify storage and rewrite cover_url plus media_items[].media_url.true
{
"username": "natgeo",
"max_results": 50,
"download": false
}

📦 Output dataset

Each run writes structured post objects to the default Apify dataset, exportable as JSON, JSONL, CSV, Excel, XML, RSS, or via the dataset API.

FieldTypeDescriptionExample
processorstring | nullApify actor URL that processed this job recordhttps://apify.com/username/actor_name
processed_atstring | nullUTC timestamp when this record was processed2025-01-15T10:30:00.000Z
post_idstring | nullInstagram media identifier for this post.3930000000000000000_25025320
shortcodestring | nullShort Instagram code used in the public post URL.DaTSSukB-Lb
post_urlstring | nullPublic Instagram URL for this post, reel, IGTV, or carousel.https://www.instagram.com/reel/DaTSSukB-Lb/
post_typestring | nullNormalized post type: feed_image, feed_video, reel, igtv, carousel_image, carousel_video, or carousel_mixed.reel
instagram_product_typestring | nullOriginal Instagram product type, such as feed, clips, igtv, or carousel_container.clips
instagram_media_typeinteger | nullOriginal Instagram media type number.2
owner_idstring | nullInstagram account ID of the post owner.25025320
owner_usernamestring | nullInstagram username that published this post.instagram
owner_full_namestring | nullDisplay name of the post owner.Instagram
owner_is_verifiedboolean | nullWhether the post owner is verified.true
owner_is_privateboolean | nullWhether the post owner account is private.false
owner_profile_pic_urlstring | nullProfile picture URL for the post owner.https://example.com/profile.jpg
captionstring | nullCaption text shown on the Instagram post.time to create
caption_created_atinteger | nullUnix timestamp when the caption was created, when available.1782504015
caption_is_editedboolean | nullWhether Instagram reports the caption as edited.false
accessibility_captionstring | nullInstagram accessibility caption or generated alt text.Photo by Instagram on June 26, 2026.
hashtagsarray | nullUnique hashtags extracted from the caption without the # prefix.["reels", "launch"]
mentionsarray | nullUnique mentioned usernames extracted from the caption without the @ prefix.["instagram", "creators"]
published_atstring | nullISO 8601 timestamp when the post was published.2026-06-26T20:00:15+00:00
published_timestampinteger | nullUnix timestamp when the post was published.1782504015
like_countinteger | nullNumber of likes shown for this post.333091
comment_countinteger | nullNumber of comments shown for this post.18435
play_countinteger | nullInstagram play count for reels and videos when available.61839889
view_countinteger | nullView count reported by Instagram or yt-dlp when available.1204050
like_and_view_counts_disabledboolean | nullWhether Instagram reports like and view counts as hidden.false
cover_urlstring | nullBest display image URL for table previews.https://example.com/cover.jpg
media_countinteger | nullNumber of media items in this post.3
image_countinteger | nullNumber of image items in this post.1
video_countinteger | nullNumber of video items in this post.2
is_carouselboolean | nullWhether this post contains multiple media items.true
has_videoboolean | nullWhether this post contains at least one video item.true
has_audioboolean | nullWhether this post contains audio on any media item.true
location_idstring | nullInstagram or Facebook Places location identifier when available.1783641135097024
location_namestring | nullLocation name attached to the post when available.New York
location_latnumber | nullLatitude of the tagged location when available.40.779442
location_lngnumber | nullLongitude of the tagged location when available.-73.963359
location_addressstring | nullAddress text attached to the tagged location when available.Low Earth Orbit
location_citystring | nullCity attached to the tagged location when available.New York
tagged_usersarray | nullUsers tagged in the post, with account and tag-position metadata.[{"id": "2107151539", "username": "chriswoodlight", "full_name": "Chris Wood Light Studio", "is_verified": false, "is_private": false, "profile_pic_url": "https://example.com/profile.jpg", "position_x": 0.5, "position_y": 0.6}]
coauthorsarray | nullCollaborating accounts reported by Instagram.[{"id": "25025320", "username": "instagram", "full_name": "Instagram", "is_verified": true, "is_private": false, "profile_pic_url": "https://example.com/profile.jpg"}]
comments_disabledboolean | nullWhether comments or caption comments are disabled for this post.false
can_viewer_saveboolean | nullWhether Instagram reports that the current viewer can save the post.true
can_viewer_reshareboolean | nullWhether Instagram reports that the current viewer can reshare the post.true
is_paid_partnershipboolean | nullWhether Instagram marks the post as paid partnership content.false
sponsor_tagsarray | nullSponsor or branded-content accounts attached to the post.[{"id": "25025320", "username": "instagram", "full_name": "Instagram", "is_verified": true, "is_private": false, "profile_pic_url": "https://example.com/profile.jpg"}]
top_commentsarray | nullStructured comments returned by yt-dlp for this post.[{"id": "18085023536555088", "author_id": "14786298068", "author_username": "kind.care.daily", "text": "Great post", "like_count": 0, "timestamp": 1783232439, "created_at": "2026-07-05T02:20:39+00:00"}]
audio_typestring | nullInstagram audio type for reels and videos when available.licensed_music
audio_titlestring | nullAudio or music title when available.her garden
audio_artiststring | nullAudio artist or display artist when available.Amory Reel
audio_asset_idstring | nullInstagram audio asset identifier when available.1446482649383194
audio_canonical_idstring | nullCanonical Instagram music or audio identifier when available.18424926214053229
audio_duration_msinteger | nullAudio duration in milliseconds when available.89205
audio_cover_urlstring | nullCover artwork URL for licensed music or original audio owner image.https://example.com/audio-cover.jpg
audio_preview_urlstring | nullPreview or progressive audio URL when Instagram exposes one.https://example.com/audio-preview.mp4
audio_owner_usernamestring | nullUsername associated with original audio ownership when available.instagram
audio_is_originalboolean | nullWhether the post uses original audio metadata rather than licensed music metadata.false
audio_is_reuse_allowedboolean | nullWhether the exposed audio metadata indicates reuse is allowed.false
audio_is_trendingboolean | nullWhether Instagram marks this audio as trending in clips.true
audio_mashups_countinteger | nullNumber of mashups Instagram reports for the audio when available.7
media_itemsarray | nullAll media parts inside the post, including carousel children.[{"position": 1, "media_id": "3930000000000000000", "media_type": "video", "media_url": "https://example.com/video.mp4", "cover_url": "https://example.com/cover.jpg", "width": 720, "height": 1280, "duration_seconds": 22.033, "has_audio": true, "accessibility_caption": null}]

Sample output

{
"processor": "https://apify.com/truefetch/instagram-post-scraper",
"processed_at": "2026-04-24T09:30:00+00:00",
"post_id": "3284718293741928634",
"shortcode": "C5xKqPTL8JA",
"post_url": "https://www.instagram.com/reel/C5xKqPTL8JA/",
"post_type": "reel",
"owner_username": "natgeo",
"caption": "Golden hour in Patagonia",
"published_at": "2026-04-24T09:00:00+00:00",
"like_count": 48200,
"comment_count": 312,
"play_count": 1240000,
"cover_url": "https://scontent.cdninstagram.com/cover.jpg",
"media_items": [
{
"position": 1,
"media_type": "video",
"media_url": "https://scontent.cdninstagram.com/video.mp4",
"cover_url": "https://scontent.cdninstagram.com/cover.jpg"
}
]
}

💡 Use cases

For influencer agencies auditing content performance

  • Problem: manually reviewing all posts from a target influencer account — extracting likes, plays, captions, and post types — takes hours per account.
  • How Instagram Post Scraper solves it: extract like_count, comment_count, play_count, post_type, and caption for all recent posts in structured JSON for influencer scoring.
  • Outcome: a structured content performance snapshot from $6.75 per 1,000 posts on discounted paid tiers.

For brand monitoring tracking competitor content

  • Problem: brands need to monitor what competitors are posting on Instagram — post frequency, content types, and engagement levels.
  • How Instagram Post Scraper solves it: schedule the Actor for target competitor accounts and track post_type, like_count, and play_count over time.
  • Outcome: structured competitive content intelligence at a fraction of the cost of social media monitoring platforms.

For AI agents answering questions about public Instagram accounts

  • Problem: LLM agents asked "what are the top-performing posts from @natgeo this year?" cannot trust stale training data.
  • How Instagram Post Scraper solves it: call the Actor over the Apify MCP Server and surface grounded, up-to-date Instagram post data.
  • Outcome: accurate, source-cited Instagram content data in production AI assistants.

💰 Pricing, limits, and performance

FactValue
Pricing modelTiered pay-per-event pricing: result plus optional media download
Actor start event$0.01 per GB when the run starts
Result eventFREE $0.00750 · BRONZE $0.00725 · SILVER $0.00700 · GOLD+ $0.00675 per post
Media eventFREE $0.00950 · BRONZE $0.00918 · SILVER $0.00887 · GOLD+ $0.00855 per file
Free-tier monthly allowance$5 Apify credits ≈ ~660 FREE-tier posts / month
Result range per run1 to 1,000,000 posts
Output fields per post62
Login / cookies requiredNo — works without an Instagram account
Export formatsJSON, JSONL, CSV, Excel, XML, RSS, dataset API

⚖️ Compared with alternatives

CapabilityInstagram Post ScraperInstagram Basic Display APICustom scraper
Full post feed from any public profileown content onlyyou build & maintain
60+ fields incl. plays, audio, location, comments, and media itemslimitedyou build & maintain
Optional media downloadyou build & maintain
No login or API approval requiredrequires app reviewyou build & maintain
Pay-per-result pricing$0.00750 to $0.00675 / postN/Ainfra + dev cost
Export to CSV / JSONlimitedyou implement
Setup time to first result< 60 secondsdays (app approval)days–weeks

Verdict. Instagram's official APIs restrict post access heavily and require app review. Instagram Post Scraper delivers structured public post data for any account with no approval required.


⚠️ Common mistakes to avoid

  1. Passing a private account username. The Actor can only read publicly visible posts — private accounts will return no results.
  2. Setting max_results outside the allowed range. The Actor accepts 1 to 1,000,000 posts per run.
  3. Setting download to true for large accounts. Media download uses the media event and is billed per file. For analysis only, omit download or set it to false.
  4. Expecting play_count on image posts. The play_count field is only populated for video, reel, and IGTV content when Instagram exposes it.
  5. Assuming media_items[].media_url links are permanent. Instagram CDN links may expire — download media immediately if persistent storage is needed.

🛠️ Troubleshooting

ProblemLikely causeFix
No results returnedAccount is private or username is incorrect.Verify the account is public and the username is spelled correctly.
Fewer results than max_resultsAccount has fewer than max_results posts.Expected — some accounts have limited post history.
play_count nullPost is an image or Instagram did not expose plays.Filter has_video == true to process only video posts.
Media download URLs expiredInstagram CDN links are short-lived.Use download: true to persist media to Apify key-value store.
Charge limit reachedAccount-level monthly spend limit hit.Raise the run / monthly limit in your Apify plan settings.

❓ FAQ

What data does Instagram Post Scraper return?

Instagram Post Scraper returns 60+ structured fields per post including post IDs, shortcodes, URLs, owner fields, captions, hashtags, mentions, engagement counts, location signals, comments, audio metadata, and media items from any public Instagram profile.

How much does Instagram Post Scraper cost?

Instagram Post Scraper uses tiered pay-per-event pricing. The result event is $0.00750 per post on FREE and discounts down to $0.00675 on GOLD, PLATINUM, and DIAMOND. Optional media download uses the media event from $0.00950 to $0.00855 per file.

Does Instagram Post Scraper require a login?

No. The Actor reads publicly visible Instagram post feeds without any login or cookies.

Can I download images and videos from posts?

Yes. Set download to true to save all available post media files. Downloaded files are saved to your Apify key-value store and billed through the tiered media event.

Can I schedule Instagram Post Scraper to run automatically?

Yes. Use Apify Schedules to monitor a profile's new posts on a recurring cadence and push results via Webhooks.


🔌 Integrations

Instagram Post Scraper plugs straight into the Apify ecosystem:

  • Schedules — monitor a profile's posts on a recurring schedule (docs).
  • Webhooks — POST results to your endpoint on ACTOR.RUN.SUCCEEDED (docs).
  • Apify APIrun-sync-get-dataset-items for blocking calls, runs for async (docs).
  • MCP Server — call the Actor from Claude, ChatGPT, or Cursor agents (docs).
  • No-code — Make, Zapier, n8n, Pipedream, Google Sheets, Airtable.

🧱 Sister Actors from TrueFetch

Jobs

Shopping & Deals

Vehicles

Real Estate

Local Business & Food

Classifieds

Social Media

Videos & Text

Content & Articles


📞 Support, changelog, last updated

Support

Maintained by TrueFetch on the Apify Store.

Cost of doing nothing: manually reviewing an Instagram profile to collect post data — captions, likes, plays, and media links — takes hours per account. Instagram Post Scraper delivers structured post data with tiered result pricing from $6.75 per 1,000 posts. → Try it free with $5 of Apify credits.

Changelog

  • 2026-05-02 — README rewritten for SEO + GEO; documented the public output fields, full pricing, troubleshooting matrix, and FAQ.
  • 2026-04 — Added optional media download with tiered media event pricing; improved carousel media_items extraction.
  • 2026-03 — Added has_audio, play_count, and media duration details for reel posts.
  • 2026-02 — Initial release: Instagram post scraping.

{
"@context": "https://schema.org",
"@graph": [
{
"@type": "SoftwareApplication",
"@id": "https://apify.com/truefetch/instagram-post-scraper#software",
"name": "Instagram Post Scraper",
"description": "Apify Actor that scrapes posts from any public Instagram profile and returns 60+ structured fields per post, including captions, engagement counts, media URLs, owner fields, comments, and audio metadata. Tiered pay-per-result pricing starts at $0.00675 per post.",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web, Cloud",
"url": "https://apify.com/truefetch/instagram-post-scraper",
"offers": {
"@type": "Offer",
"price": "0.00675",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"author": { "@id": "https://apify.com/truefetch#author-TrueFetch" },
"publisher": { "@id": "https://apify.com/truefetch#publisher" }
},
{
"@type": "Organization",
"@id": "https://apify.com/truefetch#publisher",
"name": "TrueFetch",
"url": "https://apify.com/truefetch",
"sameAs": ["https://t.me/TrueFetch", "https://t.me/AiAgentApi"]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What data does Instagram Post Scraper return?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Instagram Post Scraper returns 60+ structured fields per post including post IDs, shortcodes, URLs, owner fields, captions, hashtags, mentions, engagement counts, location signals, comments, audio metadata, and media items from any public Instagram profile."
}
},
{
"@type": "Question",
"name": "How much does Instagram Post Scraper cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Instagram Post Scraper uses tiered pay-per-event pricing. The result event is $0.00750 per post on FREE and discounts down to $0.00675 on GOLD, PLATINUM, and DIAMOND. Optional media download uses the media event from $0.00950 to $0.00855 per file."
}
},
{
"@type": "Question",
"name": "Does Instagram Post Scraper require a login?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. The Actor reads publicly visible Instagram post feeds without any login or cookies."
}
}
]
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Apify",
"item": "https://apify.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Social Media",
"item": "https://apify.com/store?category=SOCIAL_MEDIA"
},
{
"@type": "ListItem",
"position": 3,
"name": "Instagram Post Scraper",
"item": "https://apify.com/truefetch/instagram-post-scraper"
}
]
}
]
}

Last Updated: May 2, 2026 Schema version: 1.1 Maintained by: TrueFetch · 💬 Telegram Group · 📧 Support