Instagram Post Scraper Ultra
Pricing
from $1.50 / 1,000 results
Instagram Post Scraper Ultra
Scrape public Instagram posts, reels, carousels, captions, media URLs, engagement metrics, owner details, hashtags, mentions, and optional enrichment from profiles or direct URLs.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Muhammad Qaseem Iqbal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Instagram Post Scraper Ultra πΈβ‘
Extract useful public data from Instagram posts, reels, and profile feeds without needing to log in to Instagram.
Instagram Post Scraper Ultra is built for people who need clean, ready-to-use Instagram post data for research, monitoring, reporting, marketing, influencer discovery, content tracking, and data analysis. Add Instagram usernames, profile URLs, post URLs, or reel URLs, run the Actor, and get structured results in an Apify dataset. π
This Actor works with public Instagram content only. It does not access private accounts, stories, login-only pages, or anything behind an Instagram account login. π
What Does Instagram Post Scraper Ultra Do? π€
Instagram Post Scraper Ultra helps you collect public information from Instagram posts and reels, including captions, hashtags, mentions, media URLs, public engagement numbers, owner details, and scrape status.
You can use it to:
- πΈ Scrape public posts from Instagram profile pages
- π¬ Scrape public reels from direct reel URLs or profile discovery
- πΌοΈ Scrape carousel posts when they are publicly available
- π Scrape direct Instagram post URLs one by one
- π§Ύ Extract captions, hashtags, mentions, and timestamps
- β€οΈ Collect public likes, comments counts, views, plays, and video duration when visible
- π€ Get public post owner information such as username, full name, profile URL, and verified status
- π·οΈ Include tagged users, coauthors, and music info when you turn those options on
- π¦ Save results to an Apify dataset for download, API use, or integrations
Why Use This Instagram Post Scraper? π
Instagram is full of public signals about brands, creators, trends, campaigns, products, and communities. This Actor turns public Instagram post pages into organized data you can filter, export, and analyze.
Popular use cases include:
- π Track brand or competitor content performance
- π§βπ¨ Monitor creators, influencers, publishers, and public figures
- π Find hashtags, mentions, and content themes across posts
- π Watch new posts from selected profiles
- π₯ Collect reel and video metadata for content research
- π§ Build datasets for social listening, dashboards, BI tools, or AI workflows
- ποΈ Archive public media URLs for reporting or review
- π€ Identify public collaborations, coauthors, and paid partnership markers when available
What Instagram Data Can You Extract? π§Ί
Each successful result can include:
| Data group | What you get |
|---|---|
| π Source | Original input, input type, profile URL, discovery method |
| π Post details | Post ID, shortcode, URL, content type, timestamp, pinned/sponsored flags when visible |
| π€ Owner | Username, full name, user ID, profile URL, profile picture, verified status |
| β€οΈ Metrics | Likes, comments count, video views, plays, video duration, and availability notes |
| π¬ Caption | Caption text, hashtags, mentions, and language field |
| πΌοΈ Media | Image URLs, video URLs, thumbnails, alt text, media position, availability |
| π·οΈ Extra public data | Tagged users, coauthors, and music/audio info when enabled and available |
| π§ Status | Whether the item succeeded, failed, or was skipped, plus the reason |
How To Use It π οΈ
- Add one or more Instagram usernames or URLs. βοΈ
- Choose how many posts you want from each profile. π’
- Optional: filter by date, content type, or pinned posts. π
- Optional: turn on extra fields like tagged users, coauthors, music info, or media downloads. βοΈ
- Click Start. βΆοΈ
- Download your results from the Apify dataset as JSON, CSV, Excel, XML, or RSS. π₯
Supported Inputs β
You can mix these in one run:
natgeo@natgeohttps://www.instagram.com/natgeo/https://www.instagram.com/p/DLNsnpUTdVS/https://www.instagram.com/reel/SHORTCODE/
Not Supported π«
This Actor does not scrape:
- π Private Instagram accounts
- π Login-only content
- π Instagram Stories
- #οΈβ£ Hashtag pages
- π Place/location pages
- π₯ Followers or following lists
- π¬ Full deep comment threads
Input Example π₯
Scrape a small public profile sample:
{"startUrls": [{ "url": "https://www.instagram.com/natgeo/" }],"resultsLimit": 10}
Scrape one direct post:
{"startUrls": [{ "url": "https://www.instagram.com/p/DLNsnpUTdVS/" }],"maxTotalResults": 1,"commentsMode": "none","downloadMedia": false}
Monitor only newer posts:
{"startUrls": [{ "url": "https://www.instagram.com/natgeo/" }],"resultsLimit": 25,"onlyPostsNewerThan": "1 day","pinnedPostHandling": "date_filter"}
Archive public image URLs and thumbnails:
{"startUrls": [{ "url": "https://www.instagram.com/natgeo/" }],"resultsLimit": 5,"includeMediaUrls": true,"downloadMedia": true,"mediaDownloadTypes": ["image", "thumbnail"]}
Important Input Settings βοΈ
| Setting | Plain-English meaning |
|---|---|
startUrls | Instagram usernames, profile URLs, post URLs, or reel URLs to scrape |
resultsLimit | Maximum posts to discover from each profile input |
maxTotalResults | Optional total result cap for the whole run |
onlyPostsNewerThan | Keep only posts newer than a date or relative time, such as 1 day |
onlyPostsOlderThan | Keep only posts older than a date or relative time |
includePosts | Include normal feed posts |
includeReels | Include reels |
includeCarousels | Include carousel posts |
commentsMode | Keep as none for lowest cost; preview modes only collect limited public comment snippets when available |
includeTaggedUsers | Include tagged users when Instagram exposes them publicly |
includeCoauthors | Include public collaborator/coauthor data |
includeMusicInfo | Include public music/audio data for reels when available |
downloadMedia | Save selected media files to Apify key-value store |
proxyConfiguration | Enable Apify Proxy only if you need extra reliability |
Output Example π€
The Actor stores results in the default Apify dataset. Each dataset item is one post, reel, carousel, or skipped/failed record if you choose to emit skipped records.
{"schemaVersion": "1.0.0","source": {"input": "https://www.instagram.com/p/DLNsnpUTdVS/","inputUrl": "https://www.instagram.com/p/DLNsnpUTdVS/","inputType": "postUrl","profileUsername": "natgeo","profileUrl": "https://www.instagram.com/natgeo/","discoverySource": "direct"},"post": {"id": "POLARIS_3660778310592222546","shortCode": "DLNsnpUTdVS","url": "https://www.instagram.com/p/DLNsnpUTdVS/","contentType": "image","timestamp": "2025-06-22T19:00:10.000Z"},"owner": {"username": "natgeo","fullName": "National Geographic","profileUrl": "https://www.instagram.com/natgeo/","isVerified": true},"metrics": {"likesCount": 72876,"commentsCount": null,"videoViewCount": null},"caption": {"text": "Example caption text...","hashtags": [],"mentions": []},"media": [{"type": "image","position": 0,"displayUrl": "https://...","availability": "available"}],"scrape": {"status": "success","failureReason": null}}
Run Summary π
Every run also saves a simple summary to the key-value store under RUN_SUMMARY and OUTPUT.
This helps you quickly see:
- β How many sources succeeded
- β οΈ How many sources failed or were skipped
- π¦ How many items were saved
- π¬ How many posts, reels, or carousels were found
- πΎ How many media files were downloaded
- π§± Whether a limit was reached
Example:
{"status": "succeeded","counts": {"sourcesTotal": 1,"sourcesSucceeded": 1,"sourcesFailed": 0,"itemsPushed": 1,"posts": 1,"reels": 0,"carousels": 0}}
How Many Results Can You Scrape? π’
It depends on what Instagram makes publicly visible at the time of your run.
For profile inputs, set resultsLimit to decide how many posts the Actor should try to collect from each profile. For direct post and reel URLs, the Actor fetches each URL individually.
Instagram pages can change, load differently by region, or sometimes show limited public data. A good practical approach is to start with a small test run, check the results, then scale up. π§ͺ
Built For Low Cost πΈ
This Actor is designed to run cheaply by default:
- β‘ Uses lightweight HTTP requests instead of a full browser
- π§ Uses 512 MB memory by default
- π§΅ Keeps default concurrency conservative
- π« Keeps media downloads off by default
- π¬ Keeps comments off by default
- π Keeps Apify Proxy off by default
- π Keeps optional enrichment fields off unless you enable them
For the lowest cost, keep these settings:
{"commentsMode": "none","downloadMedia": false,"includeTaggedUsers": false,"includeCoauthors": false,"includeMusicInfo": false,"proxyConfiguration": { "useApifyProxy": false }}
Turn on proxy, media downloads, comments preview, or extra enrichment only when you need them. Those options can increase runtime, storage, or platform usage. π‘
Integrations π
Because results are stored in Apify datasets and key-value stores, you can connect them to many tools:
- π Google Sheets
- π Google Drive
- π¬ Slack
- π§© Make
- β‘ Zapier
- π n8n
- ποΈ Airbyte
- π BI dashboards
- π§ AI agents and RAG workflows
- π§βπ» Your own app through the Apify API
API Usage π¨βπ»
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('YOUR_USERNAME/instagram-post-scraper-ultra').call({startUrls: [{ url: 'https://www.instagram.com/natgeo/' }],resultsLimit: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("YOUR_USERNAME/instagram-post-scraper-ultra").call(run_input={"startUrls": [{"url": "https://www.instagram.com/natgeo/"}],"resultsLimit": 10,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Tips For Best Results β¨
- π§ͺ Start with a small test run before scraping many profiles
- π Use direct post or reel URLs when you only need specific posts
- π
Use
onlyPostsNewerThanfor monitoring fresh content - π Use
pinnedPostHandling: "date_filter"when old pinned posts should not appear in new-post monitoring - πΈ Keep comments, media downloads, proxy, and extra enrichment off unless needed
- π₯ Download results as CSV or Excel if you want to work in spreadsheets
- π§ Check
RUN_SUMMARYwhen a source fails or returns fewer results than expected
Limitations β οΈ
Instagram can limit or change what is visible publicly. This Actor is built to be transparent when that happens.
Things to know:
- π Private accounts are not supported
- π Instagram login is not supported
- π Stories are not supported
- #οΈβ£ Hashtag pages are not supported
- π Location pages are not supported
- π¬ Full comment crawling is not the goal of this Actor
- β³ Media URLs from Instagram can expire
- β€οΈ Some likes, comments, views, or other metrics may be hidden or unavailable
- π§© Instagram page structure can change, which may affect extraction
When data is unavailable, the Actor uses null values or clear scrape status fields instead of silently making up data. β
FAQ π
Can I scrape private Instagram accounts? π
No. This Actor only works with public Instagram content.
Do I need an Instagram account? π
No. The Actor is designed for public pages and does not ask for Instagram credentials.
Can it scrape reels? π¬
Yes. Add reel URLs directly, or use profile inputs and keep includeReels enabled.
Can it scrape carousel posts? πΌοΈ
Yes. Carousel media is returned in the media array when Instagram exposes it publicly.
Can it scrape comments? π¬
It can include limited public comment preview data when available, but it is not a full comments crawler. For deep comment extraction, use a dedicated comments scraper.
Why are some fields empty or null? π³οΈ
Instagram does not always show every metric or field publicly. Hidden or unavailable values are returned as null so you can clearly tell what was not available.
Can I download images or videos? πΎ
Yes. Enable downloadMedia and choose mediaDownloadTypes. Keep it off if you want the cheapest and fastest runs.
Can I get only new posts? π
Yes. Use onlyPostsNewerThan, for example 1 day, 12 hours, or 2026-01-31.
Why did I get fewer results than requested? π§
Possible reasons include date filters, duplicate posts, pinned post handling, unavailable public data, Instagram page changes, or profile content limits.
Legal And Privacy Notice βοΈ
This Actor is intended for publicly available Instagram data only. Public web data can still include personal data, so you are responsible for using the results lawfully and ethically.
Do not use this Actor to bypass privacy controls, access private content, collect login-only data, or violate applicable laws, contracts, privacy rules, GDPR, or platform terms. If you are unsure whether your use case is allowed, consult a qualified legal professional. π§ββοΈ
Support π
If something does not work as expected, include these details when asking for help:
- π Run ID
- π Instagram URL or username used
- βοΈ Input settings
- π
RUN_SUMMARY - β οΈ Failure reason from the dataset or summary
- π Whether proxy was enabled
- πΎ Whether media download was enabled
- π¬ Whether comments mode was enabled
Clear details make issues much faster to diagnose. β