Instagram Post Scraper
Pricing
from $2.20 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
29
Total users
8
Monthly active users
4 days ago
Last modified
Categories
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, 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.00750per result), with paid tiers discounted down to $6.75 per 1,000 posts.
🚀 Quick Start — run in 3 steps
Run in Apify Console
- Open the Actor — go to Instagram Post Scraper on Apify and click Try for free.
- Configure inputs — enter a bare
usernameandmax_results; optionally enabledownload. - 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
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
username | string | ✅ | — | Bare Instagram username to scrape posts from. Do not include @ or a profile URL. | natgeo |
max_results | integer | ✅ | — | Maximum number of posts to return. Range: 1 to 1,000,000. | 50 |
download | boolean | ❌ | false | Enable 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.
| Field | Type | Description | Example |
|---|---|---|---|
processor | string | null | Apify actor URL that processed this job record | https://apify.com/username/actor_name |
processed_at | string | null | UTC timestamp when this record was processed | 2025-01-15T10:30:00.000Z |
post_id | string | null | Instagram media identifier for this post. | 3930000000000000000_25025320 |
shortcode | string | null | Short Instagram code used in the public post URL. | DaTSSukB-Lb |
post_url | string | null | Public Instagram URL for this post, reel, IGTV, or carousel. | https://www.instagram.com/reel/DaTSSukB-Lb/ |
post_type | string | null | Normalized post type: feed_image, feed_video, reel, igtv, carousel_image, carousel_video, or carousel_mixed. | reel |
instagram_product_type | string | null | Original Instagram product type, such as feed, clips, igtv, or carousel_container. | clips |
instagram_media_type | integer | null | Original Instagram media type number. | 2 |
owner_id | string | null | Instagram account ID of the post owner. | 25025320 |
owner_username | string | null | Instagram username that published this post. | instagram |
owner_full_name | string | null | Display name of the post owner. | Instagram |
owner_is_verified | boolean | null | Whether the post owner is verified. | true |
owner_is_private | boolean | null | Whether the post owner account is private. | false |
owner_profile_pic_url | string | null | Profile picture URL for the post owner. | https://example.com/profile.jpg |
caption | string | null | Caption text shown on the Instagram post. | time to create |
caption_created_at | integer | null | Unix timestamp when the caption was created, when available. | 1782504015 |
caption_is_edited | boolean | null | Whether Instagram reports the caption as edited. | false |
accessibility_caption | string | null | Instagram accessibility caption or generated alt text. | Photo by Instagram on June 26, 2026. |
hashtags | array | null | Unique hashtags extracted from the caption without the # prefix. | ["reels", "launch"] |
mentions | array | null | Unique mentioned usernames extracted from the caption without the @ prefix. | ["instagram", "creators"] |
published_at | string | null | ISO 8601 timestamp when the post was published. | 2026-06-26T20:00:15+00:00 |
published_timestamp | integer | null | Unix timestamp when the post was published. | 1782504015 |
like_count | integer | null | Number of likes shown for this post. | 333091 |
comment_count | integer | null | Number of comments shown for this post. | 18435 |
play_count | integer | null | Instagram play count for reels and videos when available. | 61839889 |
view_count | integer | null | View count reported by Instagram or yt-dlp when available. | 1204050 |
like_and_view_counts_disabled | boolean | null | Whether Instagram reports like and view counts as hidden. | false |
cover_url | string | null | Best display image URL for table previews. | https://example.com/cover.jpg |
media_count | integer | null | Number of media items in this post. | 3 |
image_count | integer | null | Number of image items in this post. | 1 |
video_count | integer | null | Number of video items in this post. | 2 |
is_carousel | boolean | null | Whether this post contains multiple media items. | true |
has_video | boolean | null | Whether this post contains at least one video item. | true |
has_audio | boolean | null | Whether this post contains audio on any media item. | true |
location_id | string | null | Instagram or Facebook Places location identifier when available. | 1783641135097024 |
location_name | string | null | Location name attached to the post when available. | New York |
location_lat | number | null | Latitude of the tagged location when available. | 40.779442 |
location_lng | number | null | Longitude of the tagged location when available. | -73.963359 |
location_address | string | null | Address text attached to the tagged location when available. | Low Earth Orbit |
location_city | string | null | City attached to the tagged location when available. | New York |
tagged_users | array | null | Users 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}] |
coauthors | array | null | Collaborating 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_disabled | boolean | null | Whether comments or caption comments are disabled for this post. | false |
can_viewer_save | boolean | null | Whether Instagram reports that the current viewer can save the post. | true |
can_viewer_reshare | boolean | null | Whether Instagram reports that the current viewer can reshare the post. | true |
is_paid_partnership | boolean | null | Whether Instagram marks the post as paid partnership content. | false |
sponsor_tags | array | null | Sponsor 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_comments | array | null | Structured 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_type | string | null | Instagram audio type for reels and videos when available. | licensed_music |
audio_title | string | null | Audio or music title when available. | her garden |
audio_artist | string | null | Audio artist or display artist when available. | Amory Reel |
audio_asset_id | string | null | Instagram audio asset identifier when available. | 1446482649383194 |
audio_canonical_id | string | null | Canonical Instagram music or audio identifier when available. | 18424926214053229 |
audio_duration_ms | integer | null | Audio duration in milliseconds when available. | 89205 |
audio_cover_url | string | null | Cover artwork URL for licensed music or original audio owner image. | https://example.com/audio-cover.jpg |
audio_preview_url | string | null | Preview or progressive audio URL when Instagram exposes one. | https://example.com/audio-preview.mp4 |
audio_owner_username | string | null | Username associated with original audio ownership when available. | instagram |
audio_is_original | boolean | null | Whether the post uses original audio metadata rather than licensed music metadata. | false |
audio_is_reuse_allowed | boolean | null | Whether the exposed audio metadata indicates reuse is allowed. | false |
audio_is_trending | boolean | null | Whether Instagram marks this audio as trending in clips. | true |
audio_mashups_count | integer | null | Number of mashups Instagram reports for the audio when available. | 7 |
media_items | array | null | All 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, andcaptionfor 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, andplay_countover 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
| Fact | Value |
|---|---|
| Pricing model | Tiered pay-per-event pricing: result plus optional media download |
| Actor start event | $0.01 per GB when the run starts |
| Result event | FREE $0.00750 · BRONZE $0.00725 · SILVER $0.00700 · GOLD+ $0.00675 per post |
| Media event | FREE $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 run | 1 to 1,000,000 posts |
| Output fields per post | 62 |
| Login / cookies required | No — works without an Instagram account |
| Export formats | JSON, JSONL, CSV, Excel, XML, RSS, dataset API |
⚖️ Compared with alternatives
| Capability | Instagram Post Scraper | Instagram Basic Display API | Custom scraper |
|---|---|---|---|
| Full post feed from any public profile | ✅ | own content only | you build & maintain |
| 60+ fields incl. plays, audio, location, comments, and media items | ✅ | limited | you build & maintain |
| Optional media download | ✅ | ❌ | you build & maintain |
| No login or API approval required | ✅ | requires app review | you build & maintain |
| Pay-per-result pricing | $0.00750 to $0.00675 / post | N/A | infra + dev cost |
| Export to CSV / JSON | ✅ | limited | you implement |
| Setup time to first result | < 60 seconds | days (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
- Passing a private account username. The Actor can only read publicly visible posts — private accounts will return no results.
- Setting
max_resultsoutside the allowed range. The Actor accepts 1 to 1,000,000 posts per run. - Setting
downloadtotruefor large accounts. Media download uses themediaevent and is billed per file. For analysis only, omitdownloador set it tofalse. - Expecting
play_counton image posts. Theplay_countfield is only populated for video, reel, and IGTV content when Instagram exposes it. - Assuming
media_items[].media_urllinks are permanent. Instagram CDN links may expire — download media immediately if persistent storage is needed.
🛠️ Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| No results returned | Account is private or username is incorrect. | Verify the account is public and the username is spelled correctly. |
Fewer results than max_results | Account has fewer than max_results posts. | Expected — some accounts have limited post history. |
play_count null | Post is an image or Instagram did not expose plays. | Filter has_video == true to process only video posts. |
| Media download URLs expired | Instagram CDN links are short-lived. | Use download: true to persist media to Apify key-value store. |
Charge limit reached | Account-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 API —
run-sync-get-dataset-itemsfor blocking calls,runsfor 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
- Best Job Listing
- Glassdoor Job Listing
- Glints Company Profile
- Glints Job Listing
- Indeed Job Listing
- JobStreet Company Profile
- JobStreet Job Listing
- LinkedIn Job Listing
- StepStone Company Profile
- StepStone Job Listing
Shopping & Deals
- Amazon Product Listing
- Amazon Store Profile
- Argos Product Listing
- ASOS Product Listing
- eBay Listing
- eBay Seller Profile
- Flipkart Product Listing
- John Lewis Product Listing
- Lidl Product Listing
- Magalu Product Listing
- MediaMarkt Product Listing
- Mercado Livre Product Listing
- Nykaa Product Listing
- OTTO Product Listing
- Target Product Listing
- TradeIndia Product Listing
- TradeIndia Supplier Profile
- Walmart Product Listing
Vehicles
- AutoTrader Car Listing
- AutoTrader Dealer Profile
- Cars.com Car Listing
- Cars.com Dealer Profile
- Webmotors Car Listing
Real Estate
- MagicBricks Builder Profile
- MagicBricks Property Listing
- US Property Listing
- Zillow Property Listing
Local Business & Food
- BBB Business Profile
- BBB Review
- Google Maps Business Listing
- Reclame Aqui Company Profile
- Zomato Restaurant Menu
- Zomato Restaurant Listing
Classifieds
Social Media
- LinkedIn Company Profile
- LinkedIn Person Profile
- Instagram Explore Post
- Instagram Post Scraper
- Instagram Profile
- Reddit Community Post
- Reddit Community Profile
- Reddit Community Member
- Reddit Post Search
- Reddit User Profile
- Social Media Marketing
- Telegram Channel Message
- Telegram Group Member
- Telegram Profile
- X Community Profile
- X User Profile
Videos & Text
- Best Video Downloader
- Instagram Video Transcript
- TikTok Live Recorder
- TikTok Video Downloader
- TikTok Profile Video
- Video Subtitles Downloader
- Video To Text
- YouTube Niche Listing
- YouTube Video Downloader
Content & Articles
📞 Support, changelog, last updated
Support
- 💬 Telegram Group: t.me/TrueFetch
- 📧 Direct support: t.me/AiAgentApi
- 📖 Actor page & docs: apify.com/truefetch/instagram-post-scraper
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
mediaevent 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