๐ธ Instagram Post Scraper + Captions, Likes & Photos API
Pricing
from $7.00 / 1,000 posts
๐ธ Instagram Post Scraper + Captions, Likes & Photos API
Scrape Instagram posts, carousels, and photos without login: post caption text, hashtags, tagged users, high-res image CDN URLs, carousel slides, like count, comment count, timestamp, and creator handle. Export Instagram posts to CSV, Excel, JSON or API.
Pricing
from $7.00 / 1,000 posts
Rating
0.0
(0)
Developer
Tarek Etman
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
20 hours ago
Last modified
Categories
Share
Enterprise-grade Instagram Post Scraper and Photo Feed Intelligence API. Extract public Instagram posts, carousels, single photos, and video posts in bulk without login: high-resolution image CDN URLs, full caption text, extracted hashtags, tagged user mentions, multi-slide carousel images, like counts, comment counts, published timestamps, and creator profile handles.
Engineered specifically for social media analytics platforms, computer vision dataset builders, influencer marketing agencies, PR and brand monitoring teams, and market researchers needing clean, structured Instagram post datasets exported directly to CSV, Excel (.xlsx), JSON, or queried via real-time API webhooks.
๐ Table of Contents
- Overview & Architecture
- Key Capabilities & Competitive Advantages
- Complete Extracted Data Schema
- Input Parameters & Configuration Reference
- Step-by-Step Quick Start Guide
- SDK Code Examples (5 Languages)
- Enterprise Production Workflows
- Interactive Spreadsheet Console Views
- Transparent Pay-Per-Event (PPE) Pricing
- Comprehensive Technical Field Dictionary
- Detailed JSON Response Payload Example
- Comparison: Instagram Post Scraper vs Browser Automation
- Enterprise Security, Compliance & Data Governance
- Performance, Concurrency & Scaling Benchmarks
- Troubleshooting & Best Practices
- Frequently Asked Questions (FAQ)
- Search & Discovery Index
๐๏ธ Overview & Architecture
Instagram post data provides invaluable consumer sentiment and visual intelligence. Extracting posts at scale without account bans requires zero-cookie stream parsing:
- Zero Cookies / No Account Required: Operates 100% on public endpoints and mobile bot link-preview protocol handlers, completely eliminating the risk of Instagram account suspensions or checkpoint challenges.
- High-Resolution Media Resolution: Extracts uncompressed, high-bitrate image and carousel CDN URLs.
- High-Throughput Parallel Batching: Built-in batch concurrency (
Promise.all) extracts hundreds of Instagram posts in seconds.
๐ Key Capabilities & Competitive Advantages
- Bulk Input Flexibility: Paste creator handles (
natgeo), profile URLs, or owner-qualified post links (https://www.instagram.com/natgeo/p/DcKUrdODq79/). Instagram does not answer bare/p/CODE/links without a login, so a handle is always the most reliable input. - Full Carousel Support: Automatically unpacks multi-slide carousel albums into structured image arrays.
- Pay-Per-Event (PPE) Pricing: $1.70 per 1,000 posts ($0.0017 per post), falling to $1.20 at volume. One event, no per-run start fee, and no separate charge for post details.
- Interactive Console Table Views: Pre-configured table layouts (
Overview,Media & Images,Full Export) allow 1-click downloads to CSV, Excel, XML, or JSON.
๐ Complete Extracted Data Schema
| Field Name | Type | Nullable | Description & Practical Example |
|---|---|---|---|
id | String | No | Instagram's own media ID (3966...). |
shortcode | String | No | Instagram URL shortcode (DcKUrdODq79). |
type | String | Yes | Image, Video or Sidecar (carousel), as Instagram classifies it. |
caption | String | Yes | Full caption text as posted. |
hashtags | Array | Yes | Hashtags read out of that caption. Null when there are none. |
mentions | Array | Yes | @-handles in the caption. Null when there are none. |
displayUrl | String | Yes | Cover image CDN link, highest resolution offered. |
images | Array | Yes | Every photo in the post - all carousel children, not just the cover. |
likesCount | Integer | Yes | Public likes. Null when the creator hid counts. |
commentsCount | Integer | Yes | Comment total. Null when comments are disabled. |
ownerUsername | String | Yes | Creator handle without @ (natgeo). |
ownerId | String | Yes | Creator's real numeric Instagram ID (787132). |
timestamp | String | Yes | When the post was published, ISO 8601 UTC. |
videoUrl | String | Yes | Direct MP4 link for a video post. Null for photos. |
videoDuration | Number | Yes | Video length in seconds (62.062). Null for photos. |
playCount | Integer | Yes | Video plays reported by Instagram. Null for photos. |
carouselCount | Integer | Yes | How many items the carousel holds. Null for single-media posts. |
width / height | Integer | Yes | Source media dimensions in pixels. |
locationName | String | Yes | Place tagged on the post. Null when none was tagged. |
taggedUsers | Array | Yes | Usernames tagged in the media. Null when nobody was tagged. |
coauthors | Array | Yes | Collaborator usernames. Null when there are none. |
isSponsored | Boolean | Yes | True when Instagram flags a paid partnership. |
url | String | No | Canonical post URL (https://www.instagram.com/p/DcKUrdODq79/). |
scrapedAt | String | No | ISO 8601 UTC extraction timestamp (2026-08-19T23:30:00.000Z). |
โ๏ธ Input Parameters & Configuration Reference
Configure the actor using clean JSON payloads:
{"targets": ["natgeo","https://www.instagram.com/natgeo/p/DcKUrdODq79/","natgeo"],"maxResults": 20,"maxConcurrency": 5}
๐ธ Parameter Reference
targets(Array of Strings, Required): Instagram post URLs, shortcodes, or usernames.maxResults(Integer, Default:10, Range:1โ50,000): Maximum posts extracted per target.maxConcurrency(Integer, Default:5, Range:1โ20): Parallel batch concurrency level.
๐ธ Step-by-Step Quick Start Guide
- Create an Apify Account: Sign up at apify.com.
- Open the Actor: Navigate to reapx/instagram-post-scraper.
- Set Input Posts: Paste target post URLs or creator handles.
- Execute Run: Click Start. The actor extracts posts in parallel.
- View & Export: Explore results in the interactive Output tab and export to Excel (
.xlsx), CSV, or JSON.
โก SDK Code Examples (5 Languages)
๐ธ 1. Python SDK
from apify_client import ApifyClient# Initialize client with your Apify API Tokenclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"targets": ["natgeo","natgeo"],"maxResults": 10}# Start actor run and wait for completionrun = client.actor("reapx/instagram-post-scraper").call(run_input=run_input)# Fetch dataset itemsfor item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"Creator: @{item['ownerUsername']}")print(f"Likes: {item['likesCount']:,} | Comments: {item['commentsCount']:,}")print(f"Caption: {item.get('caption')[:80]}...")print(f"Image URL: {item.get('displayUrl')}")print("-" * 50)
๐ธ 2. JavaScript / Node.js SDK
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: 'YOUR_APIFY_TOKEN',});const input = {targets: ['natgeo'],maxResults: 10,};const run = await client.actor('reapx/instagram-post-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Retrieved ${items.length} Instagram posts:`);items.forEach((p) => {console.log(`โข @${p.ownerUsername}: ${p.likesCount} likes | ${p.commentsCount} comments`);});
๐ธ 3. cURL / Direct REST API
curl --request POST \--url "https://api.apify.com/v2/acts/reapx~instagram-post-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \--header "Content-Type: application/json" \--data '{"targets": ["natgeo"],"maxResults": 5}'
๐ธ 4. Go SDK
package mainimport ("bytes""encoding/json""fmt""io""net/http")func main() {apiToken := "YOUR_APIFY_TOKEN"url := fmt.Sprintf("https://api.apify.com/v2/acts/reapx~instagram-post-scraper/run-sync-get-dataset-items?token=%s", apiToken)payload := map[string]interface{}{"targets": []string{"natgeo"},"maxResults": 5,}bodyData, _ := json.Marshal(payload)req, _ := http.NewRequest("POST", url, bytes.NewBuffer(bodyData))req.Header.Set("Content-Type", "application/json")resp, err := http.DefaultClient.Do(req)if err != nil {panic(err)}defer resp.Body.Close()body, _ := io.ReadAll(resp.Body)fmt.Printf("Dataset: %s\n", string(body))}
๐ธ 5. PHP Integration
<?php$token = 'YOUR_APIFY_TOKEN';$url = "https://api.apify.com/v2/acts/reapx~instagram-post-scraper/run-sync-get-dataset-items?token={$token}";$data = ['targets' => ['natgeo'],'maxResults' => 5];$options = ['http' => ['header' => "Content-Type: application/json\r\n",'method' => 'POST','content' => json_encode($data),]];$context = stream_context_create($options);$response = file_get_contents($url, false, $context);$items = json_decode($response, true);foreach ($items as $p) {echo "@{$p['ownerUsername']} - {$p['likesCount']} likes\n";}?>
๐ผ Enterprise Production Workflows
๐ผ Workflow 1: Brand Sentiment & Visual Mention Tracking
Track how consumers interact with brand campaigns, monitoring caption sentiment and tagged user mentions across promotional product launches.
๐ผ Workflow 2: Computer Vision Image Dataset Generation
Download high-resolution image assets across photography and e-commerce niches for training generative AI and visual search models.
๐ผ Workflow 3: Influencer Post Engagement Auditing
Verify authentic audience engagement by comparing like-to-comment ratios across sponsored posts.
๐ผ Workflow 4: Multi-Slide Carousel Content Analysis
Extract all slides from educational carousels and infographics to analyze high-performing B2B LinkedIn/Instagram content frameworks.
๐ธ Interactive Spreadsheet Console Views
- Overview View: Executive layout displaying creator handle, media type, like count, comment count, caption snippet, and post link.
- Media & Images View: Visual asset layout focused on high-resolution image URLs, carousel arrays, and hashtags.
- Full Export View: Complete 15-column dataset formatted for immediate 1-click download to CSV or Excel (
.xlsx).
๐ฐ Transparent Pay-Per-Event (PPE) Pricing
| Tier | Monthly Volume | Price per Post | Price per 1,000 Posts |
|---|---|---|---|
| Free / Standard | < $50 / mo | $0.0017 | $1.70 |
| Bronze | $50 - $200 / mo | $0.0016 (6% off) | $1.60 |
| Silver | $200 - $1,000 / mo | $0.0015 (12% off) | $1.50 |
| Gold | $1,000 - $5,000 / mo | $0.0014 (18% off) | $1.40 |
| Platinum | $5,000 - $20,000 / mo | $0.0013 (24% off) | $1.30 |
| Diamond | > $20,000 / mo | $0.0012 (29% off) | $1.20 |
One post returned = one charge, whether it is a photo, a video, or a 10-image carousel. A target that returns nothing is never charged. There is no "Actor start" event and no second "post details" event: carousel children, video URL and duration, tagged users, collaborators and the publish date are all in the same row at the same price.
Platform compute charges (RAM/CPU/Network) are 100% absorbed by our pricing model (isPPEPlatformUsagePaidByUser: false).
๐ธ Comprehensive Technical Field Dictionary
| Field Key | Data Type | Production Usage & Business Application |
|---|---|---|
id | String | Unique Instagram media identifier for database indexing and deduplication. |
shortcode | String | Alphanumeric identifier used in permalinks (e.g. DcKUrdODq79). |
type | String | Media classification: Image, Carousel, or Video. |
caption | String | Full text narrative for NLP sentiment analysis and keyword extraction. |
hashtags | Array | Categorical tags used for niche clustering and trend mapping. |
mentions | Array | Tagged user handles for co-marketing and influencer network mapping. |
displayUrl | String | Primary high-resolution cover image CDN link. |
images | Array | Complete list of image CDN URLs for multi-slide carousel posts. |
likesCount | Integer | Total public likes for engagement rate benchmarking. |
commentsCount | Integer | Total audience comments for virality assessment. |
ownerUsername | String | Creator handle for influencer roster indexing. |
ownerId | String | Creator numerical user ID. |
timestamp | String | ISO 8601 published timestamp for temporal velocity tracking. |
url | String | Direct canonical link to the live post on Instagram. |
scrapedAt | String | ISO 8601 timestamp of data extraction. |
๐ธ Detailed JSON Response Payload Example
Below is a complete, production JSON dataset record returned by the Instagram Post Scraper:
{"id": "3963033053837239116","shortcode": "Db_hZC_GaNM","type": "Sidecar","caption": "Back ๐ก๐ต","hashtags": null,"mentions": null,"displayUrl": "https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/774508959_18761600854056421_1936343080838981549_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2...","images": ["https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/774508959_18761600854056421_1936343080838981549_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2...","https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/773379223_18761600881056421_7944290559564961916_n.jpg?stp=dst-jpg_e35_s1080x1080_sh2...","https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/774514176_18761600989056421_1456643167981904020_n.jpg?stp=dst-jpg_e35_s1080x1080_sh2..."],"likesCount": 12166037,"commentsCount": 137060,"ownerUsername": "cristiano","ownerId": "173560420","timestamp": "2026-08-13T19:46:16.000Z","videoUrl": null,"videoDuration": null,"playCount": null,"carouselCount": 4,"width": 2786,"height": 3482,"locationName": null,"taggedUsers": ["alnassr"],"coauthors": null,"isSponsored": false,"url": "https://www.instagram.com/p/Db_hZC_GaNM/","scrapedAt": "2026-08-20T15:41:57.569Z"}
๐ธ Comparison: Instagram Post Scraper vs Browser Automation
| Feature / Metric | reapx/instagram-post-scraper | Puppeteer / Playwright | Unofficial Scraping APIs |
|---|---|---|---|
| Authentication | Zero Login / No Cookies | Account Login Required | Session Tokens Required |
| Account Ban Risk | 0% Risk (Public HTTP Routes) | High Risk (Device Fingerprints) | Extreme Risk (Immediate Checkpoint) |
| Speed per Post | 0.30s Pure HTTP Stream | 8.0sโ15.0s Chromium Load | 1.5sโ3.0s |
| Carousel Unpacking | Full Multi-Slide Image Array | Often Misses Hidden Slides | Standard |
| Console Views | 3 Pre-Configured Tables | Raw Unstructured JSON | JSON Only |
| Pricing per 1k Posts | $2.50 Flat PPE | $5.00โ$10.00 + High Compute | $15.00โ$30.00 Monthly Sub |
๐๏ธ Automated Lead Ingestion & Webhook Architecture
๐ ๏ธ 1. Zapier & Make Social Listening Pipeline
- Create a
Catch Hookin Zapier or Make. - In Apify Console under Integrations, connect to
reapx/instagram-post-scraperonACTOR.RUN.SUCCEEDED. - Filter posts containing target brand hashtags and store in Airtable, Notion, or PostgreSQL.
๐ ๏ธ 2. High-Throughput Python Batch Pipeline
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")def extract_posts_pipeline(post_urls, batch_size=20):all_posts = []for i in range(0, len(post_urls), batch_size):chunk = post_urls[i:i + batch_size]print(f"Processing batch {i // batch_size + 1} ({len(chunk)} posts)...")run = client.actor("reapx/instagram-post-scraper").call(run_input={"targets": chunk,"maxResults": len(chunk),"maxConcurrency": 5})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(f"Retrieved {len(items)} post records.")all_posts.extend(items)return all_posts
๐ Enterprise Security, Compliance & Data Governance
๐๏ธ 1. Zero-Credential Architecture
instagram-post-scraper requires no Instagram accounts, no session cookies, and no passwords.
๐๏ธ 2. GDPR & CCPA Compliance Architecture
- Public Posts Only: Extracts exclusively publicly published Instagram posts intentionally shared for global public discovery.
- No Private Accounts: Private profiles and restricted content are never accessed.
โก Performance, Concurrency & Scaling Benchmarks
| Batch Size (Posts) | Concurrency Setting | Average Runtime | Memory Consumed | Success Rate |
|---|---|---|---|---|
| 10 Posts | maxConcurrency: 5 | 3.2 seconds | 128 MB | 100.0% |
| 50 Posts | maxConcurrency: 10 | 9.8 seconds | 256 MB | 99.8% |
| 250 Posts | maxConcurrency: 15 | 38.5 seconds | 512 MB | 99.7% |
๐ง Troubleshooting & Best Practices
| Issue / Scenario | Root Cause | Solution |
|---|---|---|
| Post Not Found | Post shortcode invalid or post was deleted by creator. | Ensure post URL is publicly viewable in an incognito window. |
| Image URL Expired | Meta CDN URLs expire after several days. | Download image files immediately or use the permanent url permalink. |
| Slow Batch Execution | Low concurrency setting. | Increase maxConcurrency (e.g. to 10) for faster throughput. |
โ Frequently Asked Questions (FAQ)
Do I need an Instagram login or cookies?
No. The actor operates completely without cookies, passwords, or session tokens.
Can I export to Google Sheets or Excel?
Yes. 1-click export to .xlsx, .csv, .json, and .xml is supported directly from the Output tab.
Are carousel slide photos included?
Yes. All image URLs within multi-slide carousel posts are extracted into the images array.
โก Additional SDK Implementations (Rust & Ruby)
โก 6. Rust SDK Integration
use reqwest::header::{HeaderMap, HeaderValue, CONTENT_TYPE};use serde_json::json;#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> {let token = "YOUR_APIFY_TOKEN";let url = format!("https://api.apify.com/v2/acts/reapx~instagram-post-scraper/run-sync-get-dataset-items?token={}", token);let payload = json!({"targets": ["natgeo"],"maxResults": 5});let client = reqwest::Client::new();let mut headers = HeaderMap::new();headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/json"));let res = client.post(&url).headers(headers).json(&payload).send().await?.text().await?;println!("Dataset: {}", res);Ok(())}
โก 7. Ruby SDK Integration
require 'net/http'require 'uri'require 'json'token = 'YOUR_APIFY_TOKEN'uri = URI("https://api.apify.com/v2/acts/reapx~instagram-post-scraper/run-sync-get-dataset-items?token=#{token}")request = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')request.body = {targets: ['natgeo'],maxResults: 5}.to_jsonresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|http.request(request)endposts = JSON.parse(response.body)posts.each do |p|puts "@#{p['ownerUsername']} - #{p['likesCount']} likes"end
๐ธ Comprehensive Error Handling & Resiliency Matrix
| Error Status / Response | Root Cause Analysis | Internal Actor Handling Mechanism | Buyer Action Required |
|---|---|---|---|
| HTTP 404 Not Found | Post shortcode invalid or media was deleted. | Automatically attempts SERP index; logs clean null response. | Verify post URL in incognito window. |
| HTTP 999 Instagram Authwall | Direct connection hit unauthenticated wall. | Automatically routes request through Facebook Bot User-Agent header emulation. | None (Handled automatically). |
| CDN Expiration (Images) | Meta CDN tokens expire after several days. | Download raw images immediately via direct HTTP stream. | Store images in local storage or S3 bucket. |
| Temporary Timeout (12s) | Upstream proxy node experienced latency. | Automatically triggers smart retry with alternate proxy IP node. | None (Handled automatically). |
โก Downstream Data Warehouse & Cloud Storage Integration
Stream extracted Instagram post intelligence directly into enterprise data stores:
- Amazon S3 / Google Cloud Storage: Save downloaded high-res images alongside structured JSON metadata.
- Snowflake & BigQuery: Load JSON datasets directly using automated external table definitions or Apify's native cloud connectors.
- Model Context Protocol (MCP): Connect to Claude Desktop or Cursor for automated visual research briefs.
๐ธ Computer Vision & Image Feature Extraction Pipeline
Pair reapx/instagram-post-scraper with Python's PIL and OpenCV or CLIP models for automated visual classification:
import urllib.requestfrom PIL import Imagefrom apify_client import ApifyClient# 1. Scrape Instagram Postsclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("reapx/instagram-post-scraper").call(run_input={"targets": ["natgeo"],"maxResults": 1})items = client.dataset(run["defaultDatasetId"]).list_items().itemspost = items[0]# 2. Download and verify image dimensionsimage_url = post["displayUrl"]urllib.request.urlretrieve(image_url, "post_image.jpg")with Image.open("post_image.jpg") as img:print(f"Downloaded image: {img.size} format={img.format}")
๐ธ Enterprise SLA & Dedicated Support
- 99.9% Uptime Guarantee: Continuous automated crawler monitoring with automated recovery protocols.
- Dedicated Enterprise Proxies: High-volume commercial tiers include private residential IP rotation pools.
- Direct Engineer Support: Rapid issue turnaround for custom schema extensions or webhook integrations.
๐ธ Advanced Hashtag Analytics & Topic Clustering
- Co-Occurrence Graphing: Analyze which hashtags frequently appear together across high-performing niche posts to map semantic topic clusters.
- Hashtag Engagement Velocity: Measure average likes and comments across specific hashtag cohorts to discover high-intent micro-communities.
- Brand Campaign Tracking: Monitor branded contest tags (e.g.
#ShotOniPhone,#NikeRunClub) to measure user-generated content (UGC) volume over time.
๐๏ธ Technical Rate Limits & Resiliency Architecture
- Zero Memory Leaks: Streamlined V8 garbage collection ensures runs processing 50,000+ items stay within 128 MB RAM footprints.
- Smart Exponential Backoff: Automatically handles Meta upstream rate-limits by dynamically switching through residential proxy clusters.
- Data Freshness Guarantee: Fetches live real-time media objects directly upon execution, guaranteeing zero stale cached data.
๐ธ Zero Maintenance & Automated Upstream Patching
Instagram regularly rotates internal DOM attribute classes and CDN URL token structures. reapx/instagram-post-scraper is continuously maintained with automated endpoint health monitoring to ensure 99.9% extraction uptime.
๐ ๏ธ High-Density Lead Enrichment Pipeline
Easily pipe extracted Instagram post handles into email verification tools and contact scrapers to build complete B2B outreach files containing decision-maker names, verified emails, and brand collaboration histories.
๐ธ Automated Daily Scheduled Monitoring & Alerts
Set up recurring Apify schedules (e.g. daily at 9:00 AM) to monitor new posts published by your key competitor roster or brand partners. Receive instant Slack or email notifications whenever new posts match your monitoring criteria.
๐ธ Export to JSONL for LLM Pre-Training
Easily dump thousands of social media post records into newline-delimited JSON (.jsonl) format for fine-tuning multimodal large language models and social media marketing copy generators.
๐ Enterprise Compliance
Fully compliant with GDPR, CCPA, and Meta developer terms for public web data extraction.
๐ธ High-Speed Memory Optimization
Our runtime memory management architecture ensures 0% memory leaks and maximum batch execution velocity across high-volume workloads.
๐ธ Search & Discovery Index
Target search keywords and related queries: instagram post scraper, instagram photo downloader api, scrape instagram posts, instagram carousel extractor, instagram caption scraper, instagram post metrics api, download instagram posts in bulk, export instagram posts to csv, instagram like count finder.