Instagram Master Scraper — Profiles, Posts & Content
Pricing
Pay per usage
Instagram Master Scraper — Profiles, Posts & Content
Verified 99.4% Success. BULK scrape complete Instagram data in one workflow: full profiles, all posts, reels, and detailed metadata including comments, tags, and alt text. Supports multiple profiles, content limits, concurrency, intelligent polling, and cost-controlled progressive data collection.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Transcript Downloader
Actor stats
0
Bookmarked
5
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Instagram Profile, Posts & Reels Scraper
Scrape complete Instagram data in one workflow: full profiles, all posts, reels, and detailed metadata including comments, tags, audio, and alt text. Supports multiple profiles, content limits, concurrency, intelligent polling, and cost-controlled progressive data collection.
📚 API Documentation
For complete API reference, endpoint details, and advanced usage examples, visit our official documentation:
Transcript Downloader API Documentation
Get Your API Key • API Pricing
✨ Features
🎯 Progressive Data Collection
- Level 1: Profile Data - Get basic profile information including followers, bio, and profile image
- Level 2: Posts & Reels List - Fetch all posts and reels with partial metadata
- Level 3: Detailed Metadata - Get complete metadata including comments, tagged users, audio info, and more
🔥 Key Capabilities
- Multiple Profiles - Process multiple Instagram profiles in one run
- Flexible Control - Choose exactly what data you need
- Cost Management - Content limits help control API costs
- Concurrent Processing - Fast data retrieval with configurable concurrency
- Webhook Support - Receive results via webhook instead of polling
- Intelligent Polling - Automatic handling of pending requests
- Comprehensive Error Handling - Detailed error reporting for failed requests
- Structured Output - Clean, organized data ready for analysis
📊 What You Can Extract
Profile Data:
- Username, full name, biography
- Followers, following counts
- Total posts count
- Profile image, verification status
- External URL, category
- List ID for fetching posts
Posts & Reels (Partial Metadata):
- Post/Reel URLs and IDs
- Captions and hashtags
- Like and comment counts
- Post dates and types
- Thumbnail images
- Video URLs (for reels)
Detailed Metadata:
- Complete engagement metrics
- Latest comments with user info
- Tagged users and locations
- Audio/music information
- Coauthor and partnership details
- Carousel content (multiple photos/videos)
- Accessibility alt text
- And much more!
📥 Input Configuration
Required Parameters
| Parameter | Type | Description |
|---|---|---|
profileUrls | Array | Instagram profile URLs (e.g., https://www.instagram.com/username/) |
apiToken | String | Your Transcript Downloader API token (from dashboard.transcriptdownloader.com) |
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
includePostsList | Boolean | true | Fetch all posts and reels from the profile |
includeDetailedMetadata | Boolean | false | Get complete metadata for each post/reel |
contentLimit | Integer | 50 | Maximum number of posts/reels to fetch detailed metadata for (0 = unlimited) |
waitForCompletion | Boolean | true | Wait for pending data to be processed |
maxWaitTime | Integer | 20 | Maximum wait time in minutes for data processing |
pollingInterval | Integer | 30 | Polling interval in seconds for pending requests |
maxConcurrency | Integer | 3 | Maximum concurrent API requests |
includeWebhook | String | - | Webhook URL to receive results when each processing step completes. Must be publicly reachable and accept POST requests |
Example Input
{"profileUrls": ["https://www.instagram.com/instagram/","https://www.instagram.com/natgeo/"],"apiToken": "your-api-token-here","includePostsList": true,"includeDetailedMetadata": true,"contentLimit": 20,"waitForCompletion": true,"maxWaitTime": 20,"pollingInterval": 30,"maxConcurrency": 3}
📤 Output Format
The actor outputs one record per profile with the following structure:
{"profileUrl": "https://www.instagram.com/instagram/","status": "success","profileData": {"account": "instagram","full_name": "Instagram","biography": "Discover what's new on Instagram","followers": 600000000,"following": 120,"posts_count": 7500,"profile_image": "https://...","is_verified": true,"external_url": "https://about.instagram.com","category": "App Page","list_id": "01K7TQ6X1K3C4Z3VA1TFB1J7G4","cost": "1.000"},"listId": "01K7TQ6X1K3C4Z3VA1TFB1J7G4","posts": [{"id": 123,"url": "https://www.instagram.com/p/ABC123/","caption": "Post caption","likes": 50000,"comments": 1200,"date_posted": "2025-10-15T10:30:00Z","content_type": "post","image_url": "https://...","user_posted": "instagram"}],"reels": [{"id": 124,"url": "https://www.instagram.com/reel/XYZ789/","description": "Reel description","likes": 100000,"views": 5000000,"date_posted": "2025-10-14T15:00:00Z","content_type": "reel","video_url": "https://...","thumbnail": "https://...","user_posted": "instagram"}],"detailedContent": [{"status": "success","type": "post","url": "https://www.instagram.com/p/ABC123/","caption": "Detailed caption","likes": 50000,"comments": 1200,"latest_comments": [{"comment": "Great post!","user_commenting": "user123","likes": 50}],"tagged_users": [{"username": "tagged_user","full_name": "Tagged User"}],"location": {"name": "New York, NY"},"hashtags": ["#instagram", "#photography"]}],"summary": {"totalPosts": 45,"totalReels": 15,"detailedContentCount": 20,"profileCost": "1.000","listCost": "12.500","contentCost": "0.500","totalCost": "14.000","processingTime": "125.3s"},"errors": []}
💰 Cost Management
The Instagram Scraper helps you manage API costs effectively:
Cost Structure
- Profile Scraping: ~1.000 credit per profile
- List Scraping: ~12.500 credits per profile (all posts/reels)
- Content Metadata: ~0.025 credits per post/reel
Cost Control Strategies
1. Basic Profile Only (Lowest Cost)
{"includePostsList": false,"includeDetailedMetadata": false}
Cost: ~1.000 credit per profile
2. Profile + Posts List (Medium Cost)
{"includePostsList": true,"includeDetailedMetadata": false}
Cost: ~13.500 credits per profile
3. Profile + Limited Detailed Content (Controlled Cost)
{"includePostsList": true,"includeDetailedMetadata": true,"contentLimit": 20}
Cost: ~14.000 credits per profile (13.500 + 20 × 0.025)
4. Complete Data (Full Cost)
{"includePostsList": true,"includeDetailedMetadata": true,"contentLimit": 0}
Cost: Varies by profile size (13.500 + [number of posts] × 0.025)
🚀 Use Cases
Marketing & Brand Analysis
- Track competitor profiles and content strategy
- Analyze engagement trends across posts
- Monitor brand mentions and tagged content
- Research influencer content performance
Content Research
- Discover trending hashtags and topics
- Study successful content formats
- Analyze posting patterns and timing
- Research visual content trends
Social Media Management
- Audit client Instagram profiles
- Export content for reporting
- Track campaign performance
- Analyze audience engagement
Data Analysis & Research
- Academic research on social media
- Sentiment analysis on comments
- Network analysis of tagged users
- Temporal analysis of posting behavior
⚙️ How It Works
The Instagram Scraper orchestrates a three-step process:
Step 1: Profile Scraping
- Fetches basic profile information
- Obtains the
list_idneeded for posts/reels - Handles pending requests with polling
- Validates profile existence
Step 2: Posts & Reels List (Optional)
- Uses
list_idfrom profile data - Fetches all posts and reels
- Returns partial metadata for each item
- Separates posts and reels for easy filtering
Step 3: Detailed Metadata (Optional)
- Fetches complete metadata for each post/reel
- Processes in concurrent batches
- Respects content limit
- Includes comments, tags, audio, and more
Intelligent Features
- Automatic Polling: Handles long-running API requests
- Error Recovery: Retries failed requests with exponential backoff
- Rate Limiting: Respects API limits with delays
- Concurrent Processing: Speeds up bulk operations
- Progress Tracking: Detailed logging throughout execution
🔄 Data Flow
Profile URLs↓Profile API → Get list_id + Profile Data↓[If includePostsList]↓List API → Get all Posts & Reels↓[If includeDetailedMetadata]↓Content API (batched) → Get Detailed Metadata↓Combined Output
⚠️ Rate Limiting & Performance
API Rate Limits
| Scope | Limit | Window |
|---|---|---|
| Per User (API Token) | 90 requests | 1 minute |
| Per IP (unauthenticated) | 90 requests | 1 minute |
When rate limits are exceeded, the API returns 429 Too Many Requests. The actor handles this automatically with built-in retry logic.
Processing Times
This actor calls three different API operations, each with different processing characteristics:
| Operation | Typical Duration | Maximum Wait | Recommended Poll Interval |
|---|---|---|---|
| Profile Fetch | 5-30 seconds | 60 minutes | 30 seconds |
| Posts/Reels List | 3-60 minutes | 3 hours | 180 seconds |
| Content Metadata | 5-60 seconds | 60 minutes | 30 seconds |
- Profile only: Usually instant (< 5 seconds)
- With posts list: 3-5 minutes for first request (cached afterwards within 30-minute window)
- With detailed metadata: Varies by content limit (~1-2 seconds per item)
Retry Behavior
The actor automatically retries on transient errors (429, 500, 503) with exponential backoff (base delay 1s, max delay 60s, up to 5 attempts). It does not retry on client errors (401, 403, 404) since those require user action.
Response Headers
The API returns rate limit headers you can monitor in logs:
| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests allowed in window |
X-RateLimit-Remaining | Requests remaining in current window |
Retry-After | Seconds to wait before retrying (on 429) |
🔔 Webhook Support
Instead of polling, you can receive results automatically via webhook. Pass a publicly reachable URL in the includeWebhook field, and the API will POST results directly to your server as each processing step completes.
How It Works
This actor calls up to three different API endpoints. The webhook URL is sent with each initial request (not during polling). You'll receive separate webhooks as each step finishes:
| Step | Endpoint | X-Webhook-Endpoint | Fires when |
|---|---|---|---|
| Profile | /instagram/profile | instagram/profile | Profile fetch completes or fails |
| List | /instagram/list | instagram/list | Posts list completes (one webhook for posts, one for reels) |
| Content | /instagram/content | instagram/content | Each content metadata fetch completes or fails |
Webhook Headers
Each delivery includes these custom headers:
| Header | Description |
|---|---|
X-Webhook-Endpoint | Which API step triggered this webhook |
X-Webhook-Original-Status | HTTP status code of the result (e.g. 200) |
X-Webhook-Download-Id | The download record ID |
Example with Webhook
{"profileUrls": ["https://www.instagram.com/instagram/"],"apiToken": "your-token","includePostsList": true,"includeDetailedMetadata": true,"contentLimit": 20,"waitForCompletion": false,"includeWebhook": "https://your-domain.com/webhook"}
Tip: When using webhooks, you can set
waitForCompletion: falseso the actor returns immediately. Your webhook URL will receive results from each step as they complete.
Important Notes
- The URL must be publicly reachable (no localhost or private IPs)
- Your endpoint must accept POST requests and return a
2xxstatus - You'll receive multiple webhooks per profile (one per step that runs)
- For the list step, two webhooks fire — one for posts, one for reels
- Failed deliveries are retried up to 3 times (at 10s, 30s, and 60s intervals)
- Test your webhook URL first using the API test endpoint
🛠️ Best Practices
Performance Optimization
- Use Content Limits: Set
contentLimitto avoid fetching metadata for hundreds of posts - Adjust Concurrency: Increase
maxConcurrencyfor faster processing of multiple items - Sequential Profiles: The actor processes profiles sequentially to respect rate limits
- Polling Intervals: The API recommends 30 seconds for profile/content and 180 seconds for list operations
- Use Webhooks: Set
includeWebhookwithwaitForCompletion: falseto avoid long actor runtimes
Cost Optimization
- Start Small: Test with
includeDetailedMetadata: falsefirst - Use Limits: Set reasonable
contentLimitvalues (20-50 posts) - Target Specific Content: Combine with post-processing to filter desired content
Reliability
- Enable Waiting: Keep
waitForCompletion: truefor complete data - Adjust Timeouts: Increase
maxWaitTimefor large profiles - Monitor Errors: Check the
errorsarray in output for failed items
📊 Output Examples
Basic Profile Only
Perfect for quick profile checks and follower tracking:
{"profileUrl": "https://www.instagram.com/username/","status": "success","profileData": {"account": "username","followers": 150000,"posts_count": 250},"summary": {"totalCost": "1.000"}}
Profile + Posts List
Great for content analysis and trend research:
{"profileUrl": "https://www.instagram.com/username/","status": "success","profileData": { ... },"posts": [45 posts with partial metadata],"reels": [15 reels with partial metadata],"summary": {"totalPosts": 45,"totalReels": 15,"totalCost": "13.500"}}
Complete Data Collection
Ideal for deep analysis and research:
{"profileUrl": "https://www.instagram.com/username/","status": "success","profileData": { ... },"posts": [45 posts],"reels": [15 reels],"detailedContent": [20 posts/reels with complete metadata],"summary": {"totalPosts": 45,"totalReels": 15,"detailedContentCount": 20,"totalCost": "14.000"}}
⚠️ Important Notes
API Requirements
- API Token Required: Get your token from Transcript Downloader Dashboard
- Credits Needed: Ensure sufficient credits in your account
Data Freshness
- Profile data is fetched in real-time
- Lists may be cached for recent requests (30-minute window)
- Detailed content is always fetched fresh
Error Handling
- Failed items are tracked in the
errorsarray - Partial success is indicated by
status: "partial" - Individual content failures don't stop the entire run
🔗 Related Actors
Looking for more granular control? Check out our specialized actors:
- Instagram Profile Scraper: Profile data only
- Instagram Posts & Reels List Scraper: List scraping with list_id
- Instagram Post & Reel Metadata Scraper: Detailed metadata for specific URLs
🙋 Support
Need help? Visit Transcript Downloader Support. We respond within 24 business hours.
For technical issues with this actor, check the run logs for detailed error messages.
Made with ❤️ by Transcript Downloader | Website | API Dashboard