Instagram Post Details Scraper
Pricing
from $3.48 / 1,000 item processeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
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?
| Field | Description |
|---|---|
inputUrl | Original URL from your input. |
status | success, error, or uncharged duplicate for each input URL. |
shortCode | Instagram post shortcode. |
postId | Stable numeric Instagram media ID when the public page exposes it. |
url | Normalized canonical post URL. |
ownerUsername | Public username shown in post metadata. |
ownerFullName | Public display name when visible. |
ownerId | Public Instagram owner ID when exposed. |
ownerProfileUrl | Instagram profile URL for the owner. |
caption | Public post caption when visible. |
hashtags | Hashtags parsed from the caption. |
mentions | Mentioned usernames parsed from the caption. |
timestamp | Public post date/time when visible. |
likesCount | Public like count when visible. |
commentsCount | Public comment count when visible. |
viewsCount | Public view count when visible. |
isVideo | Whether the post exposes a video URL. |
isCarousel | Whether the page indicates a carousel/sidecar post. |
displayUrl | Public image/display URL when exposed and requested. |
videoUrl | Public video URL when exposed and requested. |
thumbnailUrl | Public thumbnail URL when exposed and requested. |
missingFields | Fields not visible in the public page metadata. |
sourceRoute | direct_html or proxy_html, showing which public route produced the row. |
attempts | Number of bounded fetch attempts used. |
duplicateOf | Canonical URL already handled for a duplicate input. |
errorType, errorMessage | Diagnostics for invalid, blocked, deleted, or unsupported URLs. |
scrapedAt | Timestamp when the row was saved. |
Input configuration
| Setting | JSON key | Use it for | Example |
|---|---|---|---|
| Post URLs | startUrls | Direct public Instagram /p/{shortcode}/ URLs. | https://www.instagram.com/p/DWZitMjgHp1/ |
| Maximum URLs | maxItems | Cap how many URLs are processed from the list. | 3 |
| Include media URLs | includeMediaUrls | Include public thumbnail/display/video URLs when exposed. | true |
| Proxy configuration | proxyConfiguration | Optional 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
| Event | Free | Bronze | Silver | Gold | Platinum | Diamond | Charged when |
|---|---|---|---|---|---|---|---|
| Run start | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | Once when the Actor starts. |
| Item processed | $0.006665 | $0.0057957 | $0.0045206 | $0.0034774 | $0.0023183 | $0.0016228 | Each 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
duplicatediagnostic 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 ApifyClientclient = 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_SUMMARYrecords result, route, charge, and pending counts.RUN_CHECKPOINTrecords 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.
Related actors
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.