Instagram Post Details Scraper – Data Export avatar

Instagram Post Details Scraper – Data Export

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Instagram Post Details Scraper – Data Export

Instagram Post Details Scraper – Data Export

Extract public Instagram post details from full URLs. Get images, Reels, carousels, captions, engagement, authors, tags, locations, and direct media URLs.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Extract complete public Instagram post details from a URL. Instagram Post Scraper recognizes image posts, Reels, legacy videos, and carousels, then returns normalized media, caption, author, engagement, location, tags, and collaboration data in one dataset row.

It is the flexible choice when your input list contains different Instagram post types. No Instagram login or cookies are required, and each submitted URL is preserved with an explicit success or failed status.

At a glanceDetails
📥 InputFull Instagram /p/, /reel/, or /tv/ URLs
📤 OutputPost type, media URLs, caption, counts, author, location, carousel children, tags, and sponsors
🔐 Login requiredNo
⚡ ProcessingUp to 5 URLs concurrently with automatic retries
💾 DeliveryOne Apify dataset row per unique post URL

What the Instagram post scraper extracts 🔎

The Actor resolves a public Instagram link and adapts its output to the underlying media type. Single images expose image variants, Reels expose video and playback fields, and carousel posts include an ordered carousel_media array.

The normalized result covers:

  • ID, PK, shortcode, canonical URL, post type, product type, and media type
  • Caption text, caption ID, timestamps, translation flag, and edit flag
  • Likes, comments, views, plays, Instagram plays, Facebook counts, and reposts when available
  • Image, thumbnail, video, duration, dimensions, and accessibility caption
  • Author, location, tagged users, coauthors, and sponsors
  • Image and video variants
  • Carousel child count and ordered child media
  • Audio, comments, hidden-count, partnership, and resharing flags

How to scrape Instagram post details 🚀

  1. Copy full public Instagram post URLs.
  2. Paste them into inputList.
  3. Start the Actor.
  4. Filter the dataset by type, status, author, or engagement fields.
  5. Export or integrate the structured results.
{
"inputList": [
"https://www.instagram.com/p/DcVY5dZm_Pv/",
"https://www.instagram.com/reel/DctPchKOVcw/"
]
}

Bare shortcodes are not accepted. Use the complete Instagram URL so the dataset always retains the original user input.

Post details data fields 📦

Field groupIncluded data
Identityid, pk, code, url, type, product_type, media_type
CaptionText, ID, timestamps, translation and edit state
EngagementLikes, comments, views, plays, Facebook counts, reposts
MediaImage, thumbnail, video, duration, dimensions, variants
RelationshipsAuthor, location, tagged users, coauthors, sponsors
CarouselChild count and complete ordered media array
FlagsAudio, comments disabled, counts hidden, paid partnership, resharing

Complete representative success item:

{
"input": "https://www.instagram.com/reel/DctPchKOVcw/",
"status": "success",
"image_url": "https://instagram.example/reel-cover.jpg",
"url": "https://www.instagram.com/reel/DctPchKOVcw/",
"id": "1234567890123456789_13460080",
"pk": "1234567890123456789",
"code": "DctPchKOVcw",
"type": "reel",
"product_type": "clips",
"media_type": 2,
"caption": "An example public Reel",
"caption_id": "987654321",
"caption_timestamp": 1754006400,
"caption_published_at": "2025-08-01T00:00:00Z",
"caption_has_translation": false,
"caption_is_edited": false,
"published_at": "2025-08-01T00:00:00Z",
"timestamp": 1754006400,
"like_count": 24500,
"comment_count": 410,
"view_count": 340000,
"play_count": 352000,
"instagram_play_count": 350000,
"facebook_like_count": 0,
"facebook_comment_count": 0,
"repost_count": 97,
"thumbnail_url": "https://instagram.example/reel-thumbnail.jpg",
"video_url": "https://instagram.example/reel-video.mp4",
"video_duration": 12.8,
"width": 1080,
"height": 1920,
"accessibility_caption": null,
"has_audio": true,
"comments_disabled": false,
"commenting_disabled_for_viewer": false,
"counts_hidden": false,
"is_paid_partnership": false,
"can_reshare": true,
"author": {
"profile_picture_url": "https://instagram.example/author.jpg",
"profile_picture_url_hd": "https://instagram.example/author-hd.jpg",
"username": "nike",
"name": "Nike",
"id": "13460080",
"pk": "13460080",
"profile_url": "https://www.instagram.com/nike/",
"is_verified": true,
"is_private": false
},
"location": null,
"image_versions": [
{
"url": "https://instagram.example/reel-cover-1080.jpg",
"width": 1080,
"height": 1920
}
],
"video_versions": [
{
"url": "https://instagram.example/reel-video-1080.mp4",
"width": 1080,
"height": 1920,
"type": 101
}
],
"carousel_media_count": 0,
"carousel_media": [],
"tagged_users": [
{
"id": "2002",
"pk": "2002",
"username": "examplecreator",
"name": "Example Creator",
"profile_url": "https://www.instagram.com/examplecreator/",
"profile_picture_url": "https://instagram.example/tagged.jpg",
"is_verified": false,
"position": [0.5, 0.5]
}
],
"coauthors": [
{
"id": "3003",
"pk": "3003",
"username": "partnerbrand",
"name": "Partner Brand",
"profile_url": "https://www.instagram.com/partnerbrand/",
"profile_picture_url": "https://instagram.example/coauthor.jpg",
"is_verified": true
}
],
"sponsors": [
{
"id": "4004",
"pk": "4004",
"username": "sponsorbrand",
"name": "Sponsor Brand",
"profile_url": "https://www.instagram.com/sponsorbrand/",
"is_verified": true
}
]
}

For a carousel success row, carousel_media contains ordered children with position, identity, type, media URLs, duration, dimensions, accessibility text, image variants, video variants, product type, timestamps, likes, and tagged users.

A failed row uses the same top-level schema: input is retained, status is failed, and all 45 post-data fields are null. This makes bad inputs visible while avoiding fabricated partial data.

ParameterTypeRequiredRules
inputListarray of stringsYesAt least one full Instagram post, Reel, or TV URL

Supported path forms include /p/SHORTCODE/, /reel/SHORTCODE/, and /tv/SHORTCODE/. The resolved media determines type; the URL path alone is not trusted as the final classification.

Malformed values fail immediately. Duplicate posts are deduplicated through the request queue. A bad item does not stop valid URLs in the same run.

Instagram post scraping use cases 🎯

Unified content ingestion

Process mixed image, carousel, and video links without building a different parser for every content type.

Campaign reporting

Collect public captions, engagement, partnership flags, collaborators, and sponsors for selected posts.

Media and creative analysis

Feed dimensions, media URLs, variants, accessibility text, and post type into classification or review systems.

Content databases

Store canonical post IDs and shortcodes alongside author and publication data for deduplication and later enrichment.

Moderation and compliance review

Export public captions, media references, tags, and relationship metadata for authorized human or automated analysis.

Pricing and billable rows 💰

Check the Actor's Pricing tab for the current pricing model and rate. Store pricing is configurable and is not hard-coded in this documentation.

Under dataset-item pricing:

  • Every successfully parsed post saves one billable success row.
  • Every unique invalid, unavailable, deleted, restricted, or unresolved URL saves one failed row.
  • A carousel remains one row even when it contains many child items.
  • Automatic retry attempts do not create extra dataset rows.

The number of saved rows therefore normally follows the number of unique submitted posts, not the number of media files nested inside them.

Instagram post details API 🔌

Replace $ACTOR_ID with the Actor ID from the API tab and $APIFY_TOKEN with your token.

curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"inputList":["https://www.instagram.com/reel/DctPchKOVcw/"]}'

Use Apify schedules for recurring collection, webhooks for completion events, and dataset integrations for Google Sheets, Make, Zapier, cloud storage, or custom ETL jobs.

Reliability, retries, and limits ⚠️

Up to five post requests run concurrently. Temporary timeouts, throttling, selected HTTP errors, login redirects, and transport failures are retried automatically. Permanent input mistakes and confirmed unavailable responses become failed rows rather than repeatedly consuming the whole run.

Public Instagram content can change or disappear. Private, deleted, age-restricted, region-restricted, or login-gated posts may not be retrievable. Some public fields are optional and legitimately return null, 0, or an empty array.

One failed post should not crash a mixed batch. Infrastructure failures can still fail the whole run, including startup failure, unavailable Apify storage, or an unrecoverable error while saving a dataset item.

Frequently asked questions ❓

Does it support Reels and carousels?

Yes. It normalizes ordinary image posts, Reels, legacy TV videos, and carousel containers.

Do I need the shortcode or the full URL?

Submit the full URL. Bare shortcodes are intentionally not accepted.

Does the Actor download media?

No. It returns public direct media URLs when exposed. Those CDN URLs can expire.

Why is an engagement count null?

Instagram may hide counts or omit specific metrics for a post. Null means the source did not provide a reliable value.

Use a dedicated Actor when you want strict type validation or type-specific fields such as detailed audio metadata. Use this Actor for mixed links and a common schema.

Yes, but JSON preserves nested arrays most faithfully. A later transformation can flatten child items into separate rows if required.

For support, share the run ID, approximate time, and a safe public example URL. Never post tokens, cookies, or proxy credentials.

Use the Actor for lawful collection of public data. Respect copyright, privacy, data-protection, contractual, and platform obligations when storing, analyzing, or redistributing results.