Instagram Post Scraper Ultra avatar

Instagram Post Scraper Ultra

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Instagram Post Scraper Ultra

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

Muhammad Qaseem Iqbal

Maintained by Community

Actor 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 groupWhat you get
πŸ”— SourceOriginal input, input type, profile URL, discovery method
πŸ“ Post detailsPost ID, shortcode, URL, content type, timestamp, pinned/sponsored flags when visible
πŸ‘€ OwnerUsername, full name, user ID, profile URL, profile picture, verified status
❀️ MetricsLikes, comments count, video views, plays, video duration, and availability notes
πŸ’¬ CaptionCaption text, hashtags, mentions, and language field
πŸ–ΌοΈ MediaImage URLs, video URLs, thumbnails, alt text, media position, availability
🏷️ Extra public dataTagged users, coauthors, and music/audio info when enabled and available
🧭 StatusWhether the item succeeded, failed, or was skipped, plus the reason

How To Use It πŸ› οΈ

  1. Add one or more Instagram usernames or URLs. ✍️
  2. Choose how many posts you want from each profile. πŸ”’
  3. Optional: filter by date, content type, or pinned posts. πŸ“…
  4. Optional: turn on extra fields like tagged users, coauthors, music info, or media downloads. βš™οΈ
  5. Click Start. ▢️
  6. Download your results from the Apify dataset as JSON, CSV, Excel, XML, or RSS. πŸ“₯

Supported Inputs βœ…

You can mix these in one run:

  • natgeo
  • @natgeo
  • https://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 βš™οΈ

SettingPlain-English meaning
startUrlsInstagram usernames, profile URLs, post URLs, or reel URLs to scrape
resultsLimitMaximum posts to discover from each profile input
maxTotalResultsOptional total result cap for the whole run
onlyPostsNewerThanKeep only posts newer than a date or relative time, such as 1 day
onlyPostsOlderThanKeep only posts older than a date or relative time
includePostsInclude normal feed posts
includeReelsInclude reels
includeCarouselsInclude carousel posts
commentsModeKeep as none for lowest cost; preview modes only collect limited public comment snippets when available
includeTaggedUsersInclude tagged users when Instagram exposes them publicly
includeCoauthorsInclude public collaborator/coauthor data
includeMusicInfoInclude public music/audio data for reels when available
downloadMediaSave selected media files to Apify key-value store
proxyConfigurationEnable 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 ApifyClient
client = 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().items
print(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 onlyPostsNewerThan for 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_SUMMARY when 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.

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.

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. βœ