Instagram Post Details Scraper avatar

Instagram Post Details Scraper

Pricing

from $3.48 / 1,000 item processeds

Go to Apify Store
Instagram Post Details Scraper

Instagram Post Details Scraper

Extract public Instagram post captions, authors, timestamps, media URLs, and visible engagement metrics from direct post URLs.

Pricing

from $3.48 / 1,000 item processeds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

Extract structured metadata from direct public Instagram post URLs. Paste /p/{shortcode}/ links and get normalized post details for reporting, research, enrichment, exports, API workflows, and AI agents.

At a glance

  • Primary job: Turn public Instagram post URLs into clean dataset rows.
  • Input: Direct public Instagram /p/ post URLs.
  • Output: Caption, author, shortcode, timestamp, visible engagement counts, media links, and diagnostics.
  • Best for: Social media analysis, creator research, brand monitoring, compliance review, and content datasets.

Who is this for?

  • Social media analysts tracking public post performance from known URLs.
  • Influencer and creator marketers auditing campaign posts without crawling full profiles.
  • Brand, compliance, and research teams collecting normalized public post records for review.
  • AI and automation builders feeding public post metadata into reports, alerts, or enrichment pipelines.

Use cases

  • Campaign reporting: Export captions, authors, dates, and visible engagement for a curated URL list.
  • Content research: Build datasets from public posts you already know about.
  • Compliance review: Keep reproducible records of public post metadata and capture missing/error diagnostics.
  • Workflow automation: Trigger runs from API, Zapier-like tools, or MCP agents and process the dataset downstream.

Input recipes

  • Small smoke test: Use one public post URL and maxItems: 1.
  • Campaign audit: Paste a list of saved campaign post URLs and export owner, caption, date, likes, and comments.
  • Research dataset: Schedule repeat runs for the same URL list to refresh public metadata over time.

What data can you extract?

FieldDescription
inputUrlOriginal URL from your input.
statussuccess, error, or uncharged duplicate for each input URL.
shortCodeInstagram post shortcode.
postIdStable numeric Instagram media ID when the public page exposes it.
urlNormalized canonical post URL.
ownerUsernamePublic username shown in post metadata.
ownerFullNamePublic display name when visible.
ownerIdPublic Instagram owner ID when exposed.
ownerProfileUrlInstagram profile URL for the owner.
captionPublic post caption when visible.
hashtagsHashtags parsed from the caption.
mentionsMentioned usernames parsed from the caption.
timestampPublic post date/time when visible.
likesCountPublic like count when visible.
commentsCountPublic comment count when visible.
viewsCountPublic view count when visible.
isVideoWhether the post exposes a video URL.
isCarouselWhether the page indicates a carousel/sidecar post.
displayUrlPublic image/display URL when exposed and requested.
videoUrlPublic video URL when exposed and requested.
thumbnailUrlPublic thumbnail URL when exposed and requested.
missingFieldsFields not visible in the public page metadata.
sourceRoutedirect_html or proxy_html, showing which public route produced the row.
attemptsNumber of bounded fetch attempts used.
duplicateOfCanonical URL already handled for a duplicate input.
errorType, errorMessageDiagnostics for invalid, blocked, deleted, or unsupported URLs.
scrapedAtTimestamp when the row was saved.

Input configuration

SettingJSON keyUse it forExample
Post URLsstartUrlsDirect public Instagram /p/{shortcode}/ URLs.https://www.instagram.com/p/DWZitMjgHp1/
Maximum URLsmaxItemsCap how many URLs are processed from the list.3
Include media URLsincludeMediaUrlsInclude public thumbnail/display/video URLs when exposed.true
Proxy configurationproxyConfigurationOptional fallback after direct public HTML is blocked or rate-limited. Proxy traffic adds platform usage cost.Disabled

Example input

{
"startUrls": [
{ "url": "https://www.instagram.com/p/DWZitMjgHp1/" }
],
"maxItems": 1,
"includeMediaUrls": true
}

Example output

{
"inputUrl": "https://www.instagram.com/p/DWZitMjgHp1/",
"status": "success",
"shortCode": "DWZitMjgHp1",
"url": "https://www.instagram.com/p/DWZitMjgHp1/",
"type": "post",
"ownerUsername": "cristiano",
"ownerFullName": "Cristiano Ronaldo",
"ownerProfileUrl": "https://www.instagram.com/cristiano/",
"caption": "On the ball ⚽️",
"hashtags": [],
"mentions": [],
"timestamp": "2026-03-27T00:00:00.000Z",
"likesCount": 3000000,
"commentsCount": 28000,
"isVideo": false,
"isCarousel": false,
"missingFields": [],
"scrapedAt": "2026-07-15T08:49:40.909Z"
}

Pricing

EventFreeBronzeSilverGoldPlatinumDiamondCharged when
Run start$0.005$0.005$0.005$0.005$0.005$0.005Once when the Actor starts.
Item processed$0.006665$0.0057957$0.0045206$0.0034774$0.0023183$0.0016228Each successful post detail row is saved.

Tips for best results

  • Use direct post links: This Actor is for /p/{shortcode}/ URLs, not profile, hashtag, search, or comment URLs.
  • Start small: Test 1-3 URLs before running larger batches.
  • Expect missing fields: Instagram may hide likes, comments, dates, or media URLs on some public posts. Missing public fields are listed in missingFields.
  • Keep the direct default first: Public post HTML is fetched without proxy cost. Configure Apify Proxy only if your workload is repeatedly blocked or rate-limited; the Actor will use it on the final bounded retry.
  • Duplicates are safe: Repeated shortcodes produce an uncharged duplicate diagnostic row instead of repeated network work or item charges.

API usage

Node.js:

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/instagram-post-details-scraper").call({
startUrls: [{ url: "https://www.instagram.com/p/DWZitMjgHp1/" }],
maxItems: 1,
includeMediaUrls: true
});
console.log(run.defaultDatasetId);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/instagram-post-details-scraper").call(run_input={
"startUrls": [{ "url": "https://www.instagram.com/p/DWZitMjgHp1/" }],
"maxItems": 1,
"includeMediaUrls": True,
})
print(run["defaultDatasetId"])

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~instagram-post-details-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.instagram.com/p/DWZitMjgHp1/"}],"maxItems":1,"includeMediaUrls":true}'

MCP and AI agents

Use this Actor from MCP-compatible tools through the official Apify MCP Server.

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/instagram-post-details-scraper"
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/instagram-post-details-scraper"
}
}
}

Example prompt: "Run Instagram Post Details Scraper for these public post URLs and summarize captions, owners, and visible engagement."

Limits and caveats

  • Public direct Instagram post URLs only. Private, deleted, age-gated, login-only, profile, hashtag, search, follower, liker, DM, and comment-thread data are out of scope.
  • Visible public metrics can be hidden or rounded by Instagram.
  • Instagram may throttle large or frequent runs. The Actor retries transient failures within a shared deadline and can use a customer-configured proxy as a fallback.
  • Error and duplicate rows are saved but are not charged as item events. Successful rows are saved and charged atomically.
  • RUN_SUMMARY records result, route, charge, and pending counts. RUN_CHECKPOINT records completed shortcodes and pending inputs when the Actor approaches its shutdown reserve.

Legality and responsible use

Process only public data that you are allowed to access. Follow Instagram's terms, Apify's terms, and applicable laws. Do not use this Actor for private account data, login-only data, or personal data misuse.

FAQ

Does it scrape comments or likers?

No. V1 returns post-level public metadata only. Comment threads, likers, followers, and private account analytics are not included.

Why are some fields empty?

Instagram does not expose every field for every public post. The Actor leaves unavailable fields empty and lists them in missingFields instead of guessing.

Can I export results?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.

Does the Actor require an Instagram account?

No. It works with supported public post URLs and does not accept Instagram login details, cookies, or account tokens. A configured proxy is only a network fallback and does not unlock private or login-only posts.

Support

Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or run URL, input JSON, expected output, actual output, and one reproducible public URL.