Instagram Stories Scraper
Pricing
$23.00/month + usage
Instagram Stories Scraper
A Scraper that downloads Instagram stories from multiple users with comprehensive metadata extraction.
Pricing
$23.00/month + usage
Rating
0.0
(0)
Developer

Deepanshu Sharma
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Instagram Story Scraper
A powerful Actor that scrapes Instagram stories from one or multiple users. Each story is downloaded and tracked as a separate record with comprehensive metadata including download status, URLs, and media information.
Features
- π Secure Authentication - Uses Instagram session ID for reliable access
- π± Multi-User Support - Scrape stories from multiple Instagram accounts in one run
- π Individual Story Records - Each story gets its own detailed record in the output
- π₯ Media Support - Downloads both photos and videos
- π Rich Metadata - Captures posting time, media type, file size, URLs, and more
- π Multiple Download Methods - Uses fallback methods to ensure successful downloads
- βοΈ Flexible Configuration - Control story limits, delays, and targeting
- π Organized Storage - Files saved with timestamps and indexed naming
Input Configuration
The actor accepts the following input parameters:
{"session_id": "YOUR_INSTAGRAM_SESSION_ID","usernames": ["username1", "username2", "username3"],"delay_between_requests": 2,"story_limit": "all","latest_only": false}
Input Fields
| Field | Type | Required | Description |
|---|---|---|---|
session_id | String | β Yes | Your Instagram session ID from browser cookies |
usernames | Array/String | β Yes | Instagram username(s) to scrape. Can be a single string or array of usernames |
username | String | No | Alternative field for single username (backward compatibility) |
delay_between_requests | Number | No | Delay in seconds between requests (default: 2) |
story_limit | Number/String | No | Number of stories to download per user, or "all" (default: "all") |
latest_only | Boolean | No | Download only the latest story from each user (default: false) |
Getting Your Session ID
- Log into Instagram in your browser
- Open Developer Tools (F12)
- Go to Application/Storage β Cookies β instagram.com
- Find and copy the value of
sessionidcookie
β οΈ Important: Keep your session ID secure and don't share it publicly.
Output Format
The actor outputs one record for each story scraped. Each record contains:
{"username": "cryptodaily","user_id": "60586511690","scraping_timestamp": "2025-12-14T09:42:27.268488","status": "completed","story_index": 1,"story_id": "3786688183573256768","media_type": "video","posted_date": "2025-12-13","posted_time": "12:20:28 UTC","posted_datetime": "2025-12-13T12:20:28+00:00","download_status": "success","filename": "story_1_20251213_122028.mp4","file_size": 262808,"photo_url": null,"photo_info": {},"video_url": "https://...","video_info": {"video_url": "https://...","thumbnail_url": "https://...","duration": 5.014999866485596,"resolution": null},"error_message": null}
Output Fields
| Field | Type | Description |
|---|---|---|
username | String | Instagram username |
user_id | String | Instagram user ID |
scraping_timestamp | String | ISO timestamp when scraping occurred |
status | String | Overall status: "completed", "error", "processing", "no_stories", "user_not_found" |
story_index | Number | Index of story for this user (1-based) |
story_id | String | Instagram story ID |
media_type | String | Type of media: "photo" or "video" |
posted_date | String | Date story was posted (YYYY-MM-DD) |
posted_time | String | Time story was posted (HH:MM:SS UTC) |
posted_datetime | String | ISO datetime when story was posted |
download_status | String | Download status: "success", "failed", "no_stories" |
filename | String | Name of downloaded file |
file_size | Number | Size of downloaded file in bytes |
photo_url | String | Direct URL to photo (if photo) |
photo_info | Object | Additional photo metadata (resolution, thumbnail) |
video_url | String | Direct URL to video (if video) |
video_info | Object | Video metadata (duration, thumbnail, resolution) |
error_message | String | Error description if download failed |
Usage Examples
Single User - All Stories
{"session_id": "your_session_id_here","usernames": ["cryptodaily"]}
Multiple Users - Latest Story Only
{"session_id": "your_session_id_here","usernames": ["user1", "user2", "user3"],"latest_only": true}
Limited Stories with Custom Delay
{"session_id": "your_session_id_here","usernames": ["techblogger"],"story_limit": 5,"delay_between_requests": 3}
Downloaded Files
Files are organized in the following structure:
downloads/βββ username/βββ stories/βββ story_1_20251213_122028.mp4βββ story_2_20251214_063947.mp4βββ ...
File naming format: story_{index}_{YYYYMMDD_HHMMSS}.{ext}
Rate Limiting
To avoid Instagram rate limits:
- Default delay of 2 seconds between requests
- Configurable delay via
delay_between_requests - Stories are processed sequentially
- Delay applied between users when scraping multiple accounts
Error Handling
The actor handles various error scenarios:
- User Not Found: Returns record with
status: "user_not_found" - No Active Stories: Returns record with
status: "no_stories" - Private Account: Records error if you don't follow the user
- Download Failures: Uses multiple fallback methods
- Authentication Issues: Fails gracefully with clear error messages
Limitations
- β° Stories are only available for 24 hours on Instagram
- π Can only scrape stories from public accounts or accounts you follow
- π Instagram API rate limits apply
- π Session ID expires and needs to be refreshed periodically
Support
For issues or questions:
- Check that your session ID is valid and not expired
- Ensure usernames are correct (without @ symbol is fine)
- Review the error messages in the output records
- Increase
delay_between_requestsif hitting rate limits
Privacy & Ethics
- Only scrape content you have permission to access
- Respect Instagram's Terms of Service
- Don't use for harassment or unauthorized data collection
- Keep session IDs secure