Instagram Posts/Reels Scraper - No Cookies
Pricing
from $1.50 / 1,000 results
Instagram Posts/Reels Scraper - No Cookies
The Instagram Posts & Reels Scraper extracts posts, reels, and carousel media from any public instagram profile — no login or cookies required. Simply provide a username, select your scrape type, and receive clean, structured JSON data for every post or reel.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Q_Alpha
Actor stats
0
Bookmarked
52
Total users
52
Monthly active users
3 days ago
Last modified
Categories
Share
Instagram Posts & Reels Scraper
📌 Overview
The Instagram Posts & Reels Scraper extracts posts, reels, and carousel media from any public Instagram profile — no login or cookies required. Simply provide a username, select your scrape type, and receive clean, structured JSON data for every post or reel.
🚀 Features
- No authentication required — works with public profiles only ✅
- Flexible scraping — extract posts (feed content) or reels (short-form videos)
- Rich metadata — captures captions, engagement metrics, location data, and more
- Carousel support — handles multi-image and multi-video posts
- Pagination — scrape hundreds or thousands of items
- Resume capability — use cursor to continue from where you left off (paid users)
- Two output modes — clean (essential fields) or extended (full details)
- Free tier available — try before you subscribe
🔧 How It Works
- Enter a public Instagram username
- Choose scrape type:
posts(feed content) orreels(short videos) - Set a max items limit (optional, default: 12)
- Select output mode:
cleanorextended(optional, default: clean) - Optionally provide a cursor to resume a previous scrape
- The scraper fetches pages of results and returns structured JSON
- Paid users receive a final cursor record to resume in future runs
📥 Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
username | String | ✅ Yes | — | Public Instagram username to scrape (without the @ symbol) |
scrape_type | String | ✅ Yes | posts | Either "posts" (feed content) or "reels" (short-form videos) |
max_items | Integer | ❌ No | 12 | Maximum number of posts or reels to return (minimum: 12) |
output_mode | String | ❌ No | clean | Either "clean" (essential fields) or "extended" (full metadata) |
cursor | String | ❌ No | — | Pagination cursor from a previous run to resume scraping from that point |
Example Input
{"username": "qoqsik1","scrape_type": "reels","max_items": 50,"output_mode": "clean"}
📤 Output Data Structure
Each item in the dataset represents one post or reel from the target profile.
👤 Common Fields (Both Clean & Extended)
| Field | Type | Description |
|---|---|---|
id | String | Unique Instagram media ID |
shortcode | String | Instagram shortcode (used in post URLs) |
url | String | Direct link to the post on Instagram |
taken_at | Integer | Unix timestamp of when the post was created |
scraped_at | String | ISO 8601 timestamp of when the post was scraped |
product_type | String | clips (reels), carousel_container (multi-image), or other |
media_type | String | video (reel/video), carousel, or image |
author | Object | Profile information of the post creator |
caption | String | Post caption/description text |
hashtags | Array | List of hashtags in the caption |
mentions | Array | List of @mentioned usernames in the caption |
caption_is_edited | Boolean | Whether the caption has been edited since posting |
carousel_media_count | Integer | Number of items in carousel (null if single post) |
like_count | Integer | Total number of likes |
comment_count | Integer | Total number of comments |
play_count | Integer | Total video plays (for reels/videos) |
ig_play_count | Integer | Instagram platform plays |
reshare_count | Integer | Number of times reshared |
media_repost_count | Integer | Number of reposts |
is_paid_partnership | Boolean | Whether the post is a paid partnership/sponsored |
can_viewer_reshare | Boolean | Whether viewers can reshare this post |
location | Object | Location metadata (if tagged) |
👤 Author Object
| Field | Type | Description |
|---|---|---|
id | String | Instagram user ID of the post creator |
username | String | Username of the post creator |
full_name | String | Display name of the post creator |
is_verified | Boolean | Whether the account is Instagram verified |
is_private | Boolean | Whether the account is private |
follower_count | Integer | Number of followers at scrape time |
account_type | String | Account type: personal, business, or creator |
🎬 Audio Object (Extended Mode)
| Field | Type | Description |
|---|---|---|
title | String | Audio track title (if applicable) |
artist | Array | Artist name(s) |
type | String | original_sounds or music library |
is_explicit | Boolean | Whether audio contains explicit content |
original_audio_title | String | Title of original audio track |
is_trending | Boolean | Whether the audio is trending |
📍 Location Object
| Field | Type | Description |
|---|---|---|
name | String | Location name |
short_name | String | Abbreviated location name |
address | String | Full address (if available) |
city | String | City name |
lat | Float | Latitude coordinate |
lng | Float | Longitude coordinate |
external_source | String | Source (typically facebook_places) |
has_viewer_saved | Boolean | Whether viewer has saved this location |
📦 Example Output Item (Clean Mode)
{"id": "3857585607866680160","shortcode": "DWI5awHjYNg","url": "https://www.instagram.com/reel/DWI5awHjYNg/","taken_at": 1774080143,"scraped_at": "2026-04-11T18:08:40.784130+00:00","product_type": "clips","media_type": "video","author": {"id": "56114511320","username": "qoqsik1","full_name": "Oksana S","is_verified": true,"is_private": false,"follower_count": 2759534,"account_type": "business"},"caption": "Language barrier is super funny sometimes 😹","hashtags": [],"mentions": [],"caption_is_edited": false,"carousel_media_count": null,"like_count": 265642,"comment_count": 1037,"play_count": 9279118,"ig_play_count": 9279118,"reshare_count": 20970,"media_repost_count": 2576,"is_paid_partnership": false,"can_viewer_reshare": true,"location": {"name": "Warsaw, Poland","short_name": "Warsaw","lat": 52.25,"lng": 21,"address": "","city": "","external_source": "facebook_places","has_viewer_saved": false}}
📦 Example Output Item (Extended Mode)
{"id": "3857585607866680160","shortcode": "DWI5awHjYNg","url": "https://www.instagram.com/reel/DWI5awHjYNg/","taken_at": 1774080143,"scraped_at": "2026-04-11T18:08:40.784130+00:00","product_type": "clips","media_type": "video","author": {"id": "56114511320","username": "qoqsik1","full_name": "Oksana S","is_verified": true,"is_private": false,"follower_count": 2759534,"account_type": "business"},"caption": "Language barrier is super funny sometimes 😹","hashtags": [],"mentions": [],"caption_is_edited": false,"carousel_media_count": null,"like_count": 265642,"comment_count": 1037,"play_count": 9279118,"ig_play_count": 9279118,"fb_play_count": null,"fb_comment_count": null,"reshare_count": 20970,"media_repost_count": 2576,"like_and_view_counts_disabled": false,"share_count_disabled": false,"video_url": "https://scontent-lax3-1.cdninstagram.com/o1/v/t16/f2/m69/...","thumbnail_url": "https://scontent-lax7-1.cdninstagram.com/v/t51.82787-15/...","duration_seconds": 15.23,"original_width": 720,"original_height": 1280,"has_audio": true,"audio": {"title": null,"artist": [],"type": "original_sounds","is_explicit": false,"original_audio_title": "Original audio","is_trending": null},"is_paid_partnership": false,"commerciality_status": null,"can_viewer_reshare": true,"location": {"name": "Warsaw, Poland","short_name": "Warsaw","address": "","city": "","external_source": "facebook_places","lat": 52.25,"lng": 21,"has_viewer_saved": false},"usertags": null,"coauthor_producers": []}
🔖 Final Cursor Record (paid users only)
The last record in the dataset contains pagination metadata:
{"cursor": "QVFCNkNFMEF0U3dtbjkxRDhwNi1ibFlNWHE3bEVpaUI3YlVwdXZNb1Y5Ul9hZHM3aDdDVUdsSldkNHEybXhFa1U2SjZQdzFvVHJmeUxvSURJRnVUb3FYZA==","total_scraped": 12}
Use this cursor in a future run to resume from where you left off.
🔁 Resuming a Scrape
Paid users can resume an interrupted scrape by pasting the cursor from the final dataset record:
- Run the scraper and note the
cursorvalue from the final record - Start a new run with the same username and your target
scrape_type - Paste the cursor in the Resume Cursor field
- The scraper will continue from that exact point
Example: If you scraped 50 reels but want 200 total, run again with max_items: 200 and the cursor from your first run.
💳 Free vs Paid
| Feature | Free | Paid |
|---|---|---|
| Max items per run | ~12 | Up to max_items |
| Output modes | Clean | Clean + Extended |
| Cursor returned | ❌ | ✅ |
| Resume support | ❌ | ✅ |
| Video URLs & metadata | Limited | Full |
Free users will see the message:
🔒 Upgrade your subscription to scrape more posts/reels.
⚙️ Notes & Limitations
Scope
- Only public profiles can be scraped — private accounts cannot be accessed
- Scrapes only publicly visible content — no private stories or restricted posts
Performance
- The Actor will retry failed requests up to 3 times automatically
max_itemsdefaults to12if not provided; free tier is capped at ~12 items- Pagination is handled automatically — set
max_itemshigher to fetch more
Data Integrity
play_countreflects video views; may be null for image-only postslocationis null if not tagged on the postcarousel_media_countis null for single-image or single-video posts- Deleted or restricted posts may be skipped during scraping
Scrape Type Differences
Posts (posts)
- Returns carousel posts (multi-image), static images, and regular videos from the feed
- Includes all engagement metrics
- Suitable for content analysis and archival
Reels (reels)
- Returns short-form vertical videos (Instagram Reels)
- Includes video duration, resolution, and audio metadata
- Suitable for trend analysis and content strategy
🧠 Use Cases
- Content auditing — analyze historical posts and performance trends
- Influencer profiling — research creator content strategy and engagement patterns
- Competitor analysis — monitor competitor post frequency and messaging
- Content research — discover trending topics, hashtags, and formats
- Data archival — backup public Instagram content for reference
- Audience insights — understand content performance across different post types
- Engagement benchmarking — compare your posts against industry standards
💡 SEO Keywords
- Instagram Posts Scraper
- Instagram Reels Extractor
- Scrape Instagram Feed
- Instagram Content Analyzer
- Instagram Data Extraction API
- No-Login Instagram Scraper
- Instagram JSON Export
- Reel Downloader
- Instagram Analytics Tool
🔐 Data & Privacy
This scraper accesses only publicly available data — content visible to any visitor on Instagram's website without authentication. The developer assumes no liability for misuse or violation of Instagram's Terms of Service.
❓ FAQ
Q: Can I scrape private accounts?
A: No. This scraper only works with public profiles. Private account content is not accessible without following and explicit permission.
Q: How many items can I scrape?
A: Free users are limited to ~12 items per run. Paid users can set max_items to any value (performance may vary on very large datasets).
Q: What's the difference between "Clean" and "Extended" mode?
A: Clean mode returns essential fields (captions, likes, comments, author info). Extended mode includes video URLs, all resolutions, full audio metadata, and raw API fields for advanced integrations.
Q: Can I get video downloads?
A: Extended mode provides video_url fields that point directly to Instagram's CDN. These are public, temporary links. Use them programmatically to download, but respect copyright and Instagram's ToS.
Q: How do I resume a scrape?
A: Copy the cursor value from the final record of your previous run and paste it into the Resume Cursor field. This is a paid feature only.
Q: Why are some fields null?
A: Fields may be null if not applicable to that post type (e.g., play_count for image posts, location if not tagged, carousel_media_count for single media).
Q: What if Instagram rate-limits me?
A: The scraper retries automatically up to 3 times. Very large scrapes may need to be split into multiple runs with cursor-based resumption.
🚀 Getting Started
- Enter username: Type a public Instagram username (e.g.,
qoqsik1) - Choose scrape type: Select
postsfor feed content orreelsfor short videos - Set max items: Enter your desired limit (default: 12)
- Pick output mode: Choose
clean(recommended) orextended - Run: Click start and wait for the dataset
- Export: Download as JSON, CSV, or integrate via API
📧 Support & Feedback
For issues, feature requests, or feedback, contact support or use the feedback form. Your input helps improve the scraper!
🚀 Start scraping Instagram posts and reels — fast, clean, structured data without cookies!