

Extract public Instagram profile data by input URLs, including usernames, IDs, bios, locations, website URLs, follower counts, and comment counts. Supports data exporting, API integration, and synchronization with third-party tools.
Turn any list of public Instagram profile URLs into a structured dataset of account metadata — username, display name, biography, follower counts, business category, external bio links, recent posts, and related profiles — in a single run. No login required, no manual profile-by-profile lookups.
This worker returns one record per profile, so you can build a creator directory, enrich a CRM, or audit a list of accounts from one input. Each profile also carries its recent posts (captions, hashtags, likes, comments, media URLs) and the related accounts Instagram surfaces alongside it.
related_profiles field to surface accounts Instagram associates with each target, for expansion or lookalike research.| 👤 Account identity (username, display name, Instagram & Facebook IDs) | 🔗 Canonical profile URL |
| 🖼️ Profile picture (standard & HD) | ✅ Verification status |
| 🔒 Private account flag | 🏢 Business & professional account flags |
| 📝 Biography text | #️⃣ Hashtags parsed from the biography |
| 🔗 External bio links (title, URL, redirect URL, link type) | 📧 Email address parsed from the biography |
| 👥 Follower & following counts | 📊 Total post count |
| 🏷️ Business category & profile category | 📍 Business address |
| 📰 Recent posts (caption, hashtags, likes, comments, media URLs) | 🖼️ Post media (display image, video URL, dimensions) |
| 🎞️ Carousel child posts (per-item image/video, shortcode, dimensions) | 📌 Pinned post flag |
| 💬 Comments disabled flag | 🕒 Post publish time (UTC ISO 8601) |
| ✨ Story highlight count | 🎬 IGTV video count |
| 👥 Related profiles (username, name, avatar, verification, privacy) | 📢 Hashtags aggregated from recent posts |
| 🆕 Joined-recently flag | 📡 Broadcast channel flag |
Beyond the fields themselves, the worker also provides:
The worker takes a list of public Instagram profile URLs. The profile_url field is an array of rows; each row contains a url value. Every row is processed as an independent target, and duplicate profiles are deduplicated automatically.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
profile_url | Request list | yes | — | One or more public Instagram profile URLs. Each row is an object with a url value. |
profile_urlA public Instagram profile URL. 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). A bare username (nasa) is also accepted for compatibility. 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):
Each row is one successfully resolved public profile, written to the CoreClaw result table. The columns cover every field listed above; any extra fields Instagram returns are added automatically.
username or profile_url to identify each account.A single real profile record, captured from an actual nasa profile scrape. Every key is a real output column; values are the actual fields Instagram returns (asset URLs shortened for readability, and the posts/latest_posts/related_profiles arrays trimmed to keep the sample legible — a real run returns more entries in each).
A few things worth noting in real output: posts and latest_posts overlap heavily — both carry the profile's recent posts, with latest_posts holding a normalized shape (no legacy image_url/post_hashtags/location fields). A real run returns up to roughly the 12 most recent posts the profile snapshot exposes; if you need deeper history, use a dedicated post scraper. is_pinned appears as an empty string ("") when Instagram does not flag a post as pinned, rather than false. location is an empty object ({}) when a post has no location tag. category_name and business_address are often empty even on business profiles — only business_category_name is reliably populated. email_address is empty unless an email is found in the biography. external_urls may include entries with an empty title or empty lynx_url when Instagram does not provide them.
id, fbid, account, username, profile_name, full_name, profile_url, profile_pic_url, profile_pic_url_hd. id is the Instagram user ID; fbid is the Facebook-linked Instagram ID when available. account and profile_name are legacy aliases of username and full_name respectively. profile_pic_url_hd is the high-definition avatar when Instagram exposes it.
followers, following, posts_count, is_private, is_verified, is_business_account, is_professional_account, is_joined_recently, has_channel. The core counters (followers, following, posts_count) are integers; the rest are boolean flags. has_channel indicates a broadcast channel on the profile.
biography, bio_hashtags, external_urls, email_address, business_category_name, category_name, business_address. bio_hashtags is an array of hashtag strings without the # prefix, parsed from the biography. external_urls is a structured array — each entry carries title, url (the destination), lynx_url (Instagram's redirect wrapper), and link_type. email_address is a pipe-joined string of emails found in the biography, empty when none are present.
posts and latest_posts. Both carry the profile's recent posts as structured objects: id, type (Image, Video, or Sidecar), short_code, caption, hashtags (without #), mentions (without @), url, comments_count, likes_count, timestamp (UTC ISO 8601), dimensions_height/dimensions_width, display_url, images, child_posts (carousel items), product_type, is_pinned, is_comments_disabled, owner_id, alt_text, and video_url. The posts array also carries location and post_hashtags (with #) for each item. Use timestamp to sort chronologically; use type to filter images, videos, and carousels.
highlights_count, highlight_reel_count, igtv_video_count, highlights, post_hashtags, related_profiles. highlight_reel_count is the number of featured story highlight reels; highlights_count is a legacy alias. igtv_video_count is the IGTV/Felix video count. post_hashtags is the deduplicated set of hashtags aggregated across the recent posts. related_profiles lists the accounts Instagram surfaces as related — each with id, full_name, is_private, is_verified, profile_pic_url, and username.
input_url, source_type, detail_type. input_url echoes the exact URL you submitted (useful when you pass /reels/ or /tagged/ subpages and want to trace which input produced the row). source_type and detail_type are always profile.
Provide one or more public Instagram profile URLs (one per row). The worker validates and normalizes each URL to a canonical profile URL, collects the public profile metadata Instagram exposes, and writes one structured row per successfully resolved profile to the CoreClaw result table. Profiles that cannot be loaded are recorded in the run logs and do not produce sparse data rows.
Yes. The profile_url field is an array; each row is an independent target with its own url. Duplicate profiles are deduplicated automatically. All results land in a single output table, each tagged with its input_url and username.
Standard profile URLs (https://www.instagram.com/nasa/), mobile variants (m.instagram.com), /reels/ and /tagged/ subpages (normalized to the base profile), and bare usernames (nasa). Single Post, Reel, Hashtag, Place, and Explore URLs are rejected, as are reserved paths like accounts, direct, explore, p, reel, stories, and tv.
Both. Each profile record carries its recent posts in the posts and latest_posts arrays — captions, hashtags, mentions, likes, comments, media URLs, carousel children, and publish times. These are the posts Instagram exposes in the profile snapshot (roughly the 12 most recent). If you need deeper history or more posts per profile, use a dedicated post scraper.
If a profile is private, deleted, or otherwise cannot be resolved, the worker logs the failure and moves on to the next profile. It does not emit a sparse data row for that profile — only successfully resolved profiles appear in the output table. Other profiles in the same run are unaffected.
Instagram exposes only a subset of profile fields to anonymous requests. Fields commonly left empty include biography, category_name, business_address, email_address, and highlight_reel_count — their presence depends on what the profile publicly exposes. Boolean flags are always populated; string and count fields are best-effort.
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.