

Extract public Instagram post data in bulk by profile URL, including post content, engagement metrics, author information, and media links. Filter by date range and post type. Export to CSV/JSON with one click. No coding required.
Turn any list of public Instagram profile URLs into a clean, structured dataset of Posts — captions, hashtags, engagement, media URLs, and author profile data — in a single run. Choose Posts or Reels per profile, filter by a UTC start date, and export the results in any of 8 formats, without manual scrolling or copy-pasting.
This worker returns one record per Post (or Reel), tagged with its content type, so you can build creator databases, benchmark competitors, or feed downstream BI and automation pipelines from a single run.
post_type per profile to collect either feed Posts or Reels, and keep the two streams cleanly separated by content_type.start_date to keep only content published on or after that date — ideal for time-boxed campaign or reporting snapshots.| 📝 Caption text | 🏷️ Hashtags |
| ❤️ Likes | 💬 Comment count |
| 📅 Publish time (Unix timestamp) | 🔗 Post URL |
| 👤 Author username, profile URL & ID | 👥 Tagged users |
| 🖼️ Photo URLs | 🎞️ Video URLs |
| 🎬 Per-media content (carousel items, image/video URLs, alt text) | 🎵 Audio metadata (artist, title, mute status) |
| ⏯️ Video view & play counts | 🌐 Location name |
| 💬 Latest preview comments | 🔁 Co-author producers |
| 💼 Paid partnership flag & sponsor details | 🖼️ Author profile image |
| ✔️ Author verification & follower count | 📊 Post count for the author |
📌 Content type (Posts / Reels) | 🎞️ Thumbnail |
| 📝 Accessibility caption (alt text) | 🖼️ Number of photos in the post |
Beyond the fields themselves, the worker also provides:
content_type for easy filtering.Each task takes one profile URL row with its own options. The startURLs field is an array of rows; each row is processed as an independent task.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
profile_url | URL | yes | — | Public Instagram profile URL, e.g.https://www.instagram.com/nasa/. |
post_type | String (enum) | yes | Posts | Posts for feed Posts, or Reels for Reels. |
max_results | Integer | yes | 10 | Max successful Post/Reel records to collect for this profile. Non-positive or invalid →10. |
start_date | String (date) | no | "" | Keep content published on or after this UTC date.YYYY-MM-DD recommended. |
profile_urlThe profile URL of a public Instagram account. Only http:// and https:// URLs on instagram.com, www.instagram.com, or m.instagram.com are accepted. Single-segment profile paths are accepted (/nasa/), as are /reels/ and /tagged/ subpages (normalized to the base profile). Reserved Instagram paths (accounts, direct, explore, p, reel, stories, tv, etc.) are rejected. Post, Reel, Hashtag, and Explore URLs are not profile URLs and are rejected.
✅ Recommended:
❌ Not supported (rejected):
post_typeChoose which content type to collect from the profile. One value per task — you cannot mix Posts and Reels in a single row; use separate rows for that.
Posts — feed Posts (photos, carousels). Default.Reels — Reels only.max_resultsCaps the number of successful records returned for the profile. This is a per-profile cap, not a global cap — with 3 profiles and max_results: 10 each, you can get up to 30 records total. Non-positive or non-integer values silently fall back to 10.
✅ Recommended:
start_dateOptional inclusive UTC start date. When set, only content published on or after the start of that calendar day (UTC) is kept. Leave empty to collect from the profile's most recent Posts backwards. YYYY-MM-DD is recommended; MM-DD-YYYY, DD/MM/YYYY, MM/DD/YYYY, and YYYY/MM/DD are also accepted.
Each row is one Post or Reel, written to the CoreClaw result table. The columns cover every field listed above; any extra fields Instagram returns are added automatically.
content_type to separate Posts from Reels, and profile_url to group rows back by source profile.A single successful Post record, captured from a real nasa profile scrape. Every key is a real output column; values are the actual fields Instagram returns (asset URLs shortened for readability).
A few things worth noting in real output: posts_count is often an empty string even when followers is populated — Instagram does not always return a total post count on the profile snapshot, so treat it as best-effort. has_handshake, engagement_score_view, video_view_count, and video_play_count are empty strings on photo Posts because those metrics only apply to video content; on Reels they carry real values. latest_comments is an empty array when the profile's preview comments are not available or have been filtered out by date. post_content carries one entry per media item in a carousel (with dimensions_height/dimensions_width on each item), while photos/videos are flat URL arrays for quick access.
likes, num_comments, video_view_count, video_play_count — the core engagement counters. Use them to compute engagement rates (e.g. likes / followers) and rank a creator's content. engagement_score_view is a placeholder and is empty unless a score has been calculated.
user_posted, user_posted_id, profile_url, profile_image_link, is_verified, followers, posts_count — the author's account-level metadata. A snapshot travels with every Post row, so you can deduplicate down to a single profile record. posts_count may be empty even when followers is present.
photos, videos, post_content, images, videos_duration, thumbnail, photos_number, product_type, content_type, audio. Use content_type to separate Posts from Reels, and post_content for the full per-media breakdown of a carousel (each item carries media_type, image_url/video_url, dimensions_height/dimensions_width, and alt_text). videos_duration pairs each video URL with the duration extracted from its DASH manifest.
description, hashtags, alt_text, tagged_users, coauthor_producers, location. hashtags is an array of #-prefixed strings parsed from the caption; tagged_users carries structured objects (username, full name, verification status, profile picture); coauthor_producers lists co-authors when the Post is a collaboration.
is_paid_partnership and partnership_details. When a Post is marked as a paid partnership, partnership_details carries structured sponsor records (sponsor username, full name, profile picture, verification status).
date_posted records the publish time as a Unix timestamp (UTC seconds), so you can sort Posts chronologically or build a publishing timeline. url is the browser-openable link to the Post on Instagram. shortcode and pk are Instagram's identifiers for the same media.
Provide one or more public Instagram profile URLs (one per row) plus per-profile options. The worker collects the content type you selected for each profile, applies the UTC start-date filter, and writes every Post or Reel as a structured row to the CoreClaw result table.
Yes, but not in the same row. Use separate rows in startURLs — one with post_type: "Posts" and another with post_type: "Reels". Both land in the same output table, and you can separate them later with the content_type column.
Yes. The startURLs field is an array; each row is an independent task with its own profile_url, post_type, max_results, and start_date. All results land in a single output table tagged with the originating profile_url and user_posted.
start_date is an inclusive UTC start date. When set, only content published on or after the start of that calendar day (UTC) is kept. Leave it empty to collect from the profile's most recent Posts backwards. The filter applies to date_posted (the Post's publish timestamp). Note: there is no end-date field — the filter is start-only.
If a profile cannot be loaded or no media matches the filters, the worker emits a single terminal row carrying error and error_code for that profile. Successful records from other profiles in the same run are still returned.
The most direct lever is max_results — set it to only what you need, since collecting more Posts per profile takes longer. Splitting a large profile list across multiple runs also lets the platform process them in parallel.
Yes. Export results in any of 8 formats (CSV, JSON, JSONL, XLSX, XLS, XML, HTML, RSS), receive results via webhook, drive the worker through MCP, or wire it into n8n / Zapier-style automation.
Yes. Run the worker programmatically via the CoreClaw REST API.
The base URL is https://openapi.coreclaw.com, all paths start with /api/v2, and authentication uses Authorization: Bearer YOUR_API_KEY (legacy api-key header and ?token= query still work).
Typical flow:
GET /api/v2/workers/{workerId}/input-schema to get the input schema (or GET /api/v2/workers/{workerId} for full details). workerId is a slug or owner~name path; version defaults to latest.POST /api/v2/workers/{workerId}/runs to start a run, passing is_async. The scraper input goes in input.parameters.custom. You can set callback_url to receive a callback instead of polling.data.run_slug.GET /api/v2/worker-runs/{runId} to check status (use run_slug as {runId}). Read data.status: ready/running → keep polling; succeeded → fetch results; failed → check data.err_msg and logs; aborting → a cancel was requested. Trust status, not row counts or timestamps.GET /api/v2/worker-runs/{runId}/result to fetch results (offset is a row offset from 0, increment offset += limit to paginate; data.count is the total row count), or /result/export to export a file in any of 8 formats.Scraping publicly available data is generally permitted, but how you use it matters. Respect Instagram's Terms of Service, honor intellectual property rights, and avoid republishing personal data in ways that violate privacy or platform rules. This guidance is informational, not legal advice — consult a lawyer for your specific use case.
Found a bug, have a feature request, or want to share how you're using the worker? Reach out to support@coreclaw.com — feedback helps make this worker better.
Explore more popular scrapers from our marketplace
by CoreClaw
Extract public Instagram post data via URLs, including user info, engagement and profile details. One-click CSV/JSON export, batch scraping, no coding needed.
by CoreClaw
Instagram Comment Scraper (by Post URL) extracts comments from Instagram posts and Reels. You can use the scraped comment data for sentiment analysis, audience research, content moderation, and building engagement reports.
by CoreClaw
Enter one or more Reel URLs to extract creator details, hashtags, comments, and engagement metrics from public Instagram Reels, with support for media archiving and structured data output.
by CoreClaw
Extract public Instagram profile data by input username, including usernames, IDs, bios, locations, website URLs, follower counts, and comment counts. Supports data exporting, API integration, and synchronization with third-party tools.