# Instagram User ID Profile Scraper (`instagram-scraper/instagram-user-id-profile-scraper`) Actor

Scrape public Instagram profile data by user ID, including profile stats, bio, external links, account flags, and optional post previews.

- **URL**: https://apify.com/instagram-scraper/instagram-user-id-profile-scraper.md
- **Developed by:** [Instagram Scraper](https://apify.com/instagram-scraper) (community)
- **Categories:** Lead generation, Social media
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Instagram User ID Profile Scraper

<a href="https://www.apify.com/instagram-scraper/instagram-user-id-profile-scraper"><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-user-id-profile-scraper" height="20" alt="Actor Stats"></a>

Scrape **Instagram profile data** and **profile statistics** from public Instagram pages with an Apify Actor.

This actor is optimized for **profiles (not full post feeds)**. It returns normalized profile fields
(identity, stats, account flags), keeps additional raw Instagram profile metadata when available, and can
optionally enrich output with `latest_posts`, `related_profiles`, and a linked `fb_profile`.

***

### What this actor does

- Accept **Instagram user IDs** as input
- Return profile identity, follower/following counts, profile flags, bio, links, and media fields
- Keep extra raw Instagram profile metadata when it is present in the public payload
- Optionally enrich output with `latest_posts[]` previews and `related_profiles[]`
- Optionally scrape one linked Facebook profile into `fb_profile`

### Before you run

- Input must be `userIds`. This actor does **not** take Instagram usernames or profile URLs as the main input.
- It works best for **public profiles**. Private or restricted profiles may return partial data or `ig_status: "not_found"`.
- It is focused on **profiles**, not full post or reel scraping. If you need complete post, reel, hashtag, or tagged-post data, use a dedicated actor.
- `skipLatestPosts` and `skipRelatedProfiles` default to `true` to reduce extra requests and speed up runs.
- `post_count` may be approximate because it is parsed from Instagram's public HTML `og:description` tag when available.

### Quick start (Apify Console)

1. Add one or more values to `userIds` (for example `25025320`).
2. Leave optional enrichments skipped unless you need them: `skipLatestPosts: true`, `skipRelatedProfiles: true`.
3. Click **Run** and open the **Dataset** tab to view or export results.

Invalid or malformed user IDs are still emitted to the dataset with `ig_status: "invalid_input"`, `userId`,
and a reminder `message` (`"Invalid Instagram user ID"`). They omit `crawled_at` because they are rejected
before scraping continues.

This also makes the actor usable as an **Instagram profile scraping API**, because datasets can be consumed
programmatically via Apify's API.

### Input

Configure these fields in the Actor's **Input** tab in the Apify Console:

#### `userIds` (required)

A list of Instagram user IDs you want to scrape. Each value must contain only digits, and the input length is not limited.

Examples:

- `25025320`
- `17841400000000001`

#### `scrapeFacebookProfile` (optional)

When enabled, the actor looks for one Facebook profile URL in this order: `external_url`, `bio_links`,
`fb_profile_biolink`, `biography`, then `full_name`. In the current public payload model, `bio_links`
is usually the main place where profile links are exposed.

The nested `fb_profile` payload includes `url`, `status`, `message`, `bio`, `profile_name`, `page_id`,
`followers`, `following`, `is_business_page_active`, `category_name`, and `profile_type` when available.

#### `skipLatestPosts` (optional, default: `true`)

Skips building `latest_posts[]`.

If `latest_posts` is not required for your use case, keeping this enabled helps speed up scraping.

#### `skipPostCount` (optional, default: `false`)

Skips building `post_count` from the extra profile HTML request.

If `post_count` is not required for your use case, enabling this helps speed up scraping.

When enabled, `post_count` stays `null` unless Instagram already returned a usable value in the main profile payload.

#### `skipRelatedProfiles` (optional, default: `true`)

Skips building `related_profiles[]`.

If `related_profiles` is not required for your use case, keeping this enabled helps speed up scraping.

When disabled, the actor returns the full `related_profiles` list Instagram exposes.

### Example input

```json
{
  "userIds": ["25025320"],
  "scrapeFacebookProfile": true,
  "skipPostCount": false,
  "skipLatestPosts": false,
  "skipRelatedProfiles": false
}
```

### Example output

Example dataset item when a profile is found. This sample is abridged from a real dataset item generated with
`skipLatestPosts: false` and `skipRelatedProfiles: false`.

```json
{
  "pk": "6590609",
  "id": "6590609",
  "username": "kevinhart4real",
  "full_name": "Kevin Hart",
  "profile_pic_url": "https://scontent-ord5-1.cdninstagram.com/v/t51.2885-19/14515783_1158525867560668_3834942711954145280_a.jpg?...",
  "profile_pic_url_hd": "https://scontent-ord5-1.cdninstagram.com/v/t51.2885-19/14515783_1158525867560668_3834942711954145280_a.jpg?...",
  "biography": "Live Love & Laugh!!! Facebook.com/HartKevin Twitter: Kevinhart4real...",
  "contact_email": null,
  "external_url": "https://www.kevinhartnation.com/",
  "external_url_linkshimmed": "https://l.instagram.com/?u=https%3A%2F%2Fwww.kevinhartnation.com%2F...",
  "bio_links": [
    {
      "image_url": "",
      "is_pinned": false,
      "link_type": "external",
      "lynx_url": "https://l.instagram.com/?u=https%3A%2F%2Fwww.kevinhartnation.com%2F...",
      "media_accent_color_hex": "",
      "media_type": "none",
      "title": "",
      "url": "https://www.kevinhartnation.com/",
      "creation_source": "NONE"
    }
  ],
  "followers": 172275843,
  "following": 1287,
  "post_count": 2122,
  "is_private": false,
  "is_verified": true,
  "text_post_app_badge_label": "kevinhart4real",
  "show_text_post_app_badge": true,
  "has_any_clips": true,
  "is_business": false,
  "is_professional_account": null,
  "category": "Comedian",
  "should_show_category": true,
  "fb_profile": {
    "url": "https://www.facebook.com/HartKevin/",
    "status": "ok",
    "message": null,
    "bio": "Join me for Hartbeat Weekend July 6 - 8th at Resorts World Las Vegas",
    "profile_name": "Kevin Hart",
    "page_id": "100044176822324",
    "followers": 35000000,
    "following": 36,
    "category_name": "Comedian",
    "is_business_page_active": false,
    "profile_type": "Page"
  },
  "latest_posts": [
    {
      "code": "DbElWiWj0a8",
      "pk": "3946443449918506684",
      "id": "3946443449918506684_6590609",
      "ad_id": null,
      "boosted_status": null,
      "boost_unavailable_identifier": null,
      "boost_unavailable_reason": null,
      "caption": "Fly Shit….. 72hrs drops on @Netflix this Friday the 24th…. Mark ya calendars damn it!!!!!!!! Let’s gooooooooooooo",
      "caption_is_edited": false,
      "feed_demotion_control": null,
      "feed_recs_demotion_control": null,
      "inventory_source": null,
      "video_versions": null,
      "is_dash_eligible": null,
      "number_of_qualities": null,
      "image_versions2": {
        "candidates": [ 
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 1560,
            "width": 1170
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "width": 828
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 1440,
            "width": 1080
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 960,
            "width": 720
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 853,
            "width": 640
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 640,
            "width": 480
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 427,
            "width": 320
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 320,
            "width": 240
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 1080,
            "width": 1080
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 750,
            "width": 750
          },
          {
           "url": "https://scontent-atl3-1.cdninst...",
            "width": 640
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 480,
            "width": 480
          },
          {
           "url": "https://scontent-atl3-1.cdninst...",
            "height": 320,
            "width": 320
          },
          {
           "url": "https://scontent-atl3-1.cdninst...",
            "width": 240
          },
          {
            "url": "https://scontent-atl3-1.cdninst...",
            "height": 150,
            "width": 150
          }
        ]
      },
      "sharing_friction_info": {
        "bloks_app_url": null,
        "should_have_sharing_friction": false
      },
      "is_paid_partnership": false,
      "sponsor_tags": null,
      "affiliate_info": null,
      "original_height": 4096,
      "original_width": 3072,
      "organic_tracking_token": "eyJ2ZXJzaW9uIjo1LCJwYXlsb2FkIjp7ImlzX2FuYWx5dGljc190cmFja2VkIjp0cnVlLCJ1dWlkIjoiZGU0YzA2MDExYjU4NGQ0NzgwZGVhYTAxNzk3OTI4NTUzOTQ2NDQzNDQ5OTE4NTA2Njg0In0sInNpZ25hdHVyZSI6IiJ9",
      "link": null,
      "story_cta": null,
      "user": {
        "pk": "6590609",
        "profile_pic_url": "https://scontent-atl3-3.cdninst...",
        "username": "kevinhart4real",
        "is_private": false,
        "is_embeds_disabled": false,
        "is_unpublished": false,
        "is_verified": true,
        "friendship_status": null,
        "latest_besties_reel_media": null,
        "latest_reel_media": null,
        "live_broadcast_visibility": null,
        "live_broadcast_id": null,
        "show_account_transparency_details": true,
        "transparency_product": null,
        "transparency_product_enabled": false,
        "transparency_label": null,
        "ai_agent_owner_username": null,
        "id": "6590609",
        "aigm_account_label_info": null,
        "hd_profile_pic_url_info": {
          "url": "https://scontent-atl3-1.cdninst..."
        },
        "full_name": "Kevin Hart"
      },
      "group": null,
      "coauthor_producers": [],
      "invited_coauthor_producers": [],
      "follow_hashtag_info": null,
      "title": null,
      "comment_count": 428,
      "comments_disabled": null,
      "commenting_disabled_for_viewer": null,
      "like_and_view_counts_disabled": false,
      "has_liked": false,
      "top_likers": null,
      "facepile_top_likers": null,
      "like_count": 27095,
      "preview": null,
      "can_see_insights_as_brand": false,
      "social_context": null,
      "view_count": null,
      "can_reshare": null,
      "can_viewer_reshare": true,
      "ig_media_sharing_disabled": false,
      "photo_of_you": false,
      "product_type": "carousel_container",
      "media_type": 8,
      "media_overlay_info": null,
      "carousel_parent_id": null,
      "carousel_media_count": 8,
      "carousel_media": [
        {
          "id": "3946442671416902182_6590609",
          "pk": "3946442671416902182",
          "accessibility_caption": null,
          "is_dash_eligible": null,
          "media_type": 1,
          "original_height": 4096,
          "original_width": 3072,
          "inventory_source": null,
          "caption": null,
          "user": null,
          "image_versions2": {
            "candidates": [
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 240,
                "width": 240
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 150,
                "width": 150
              }
            ]
          },
          "carousel_parent_id": "3946443449918506684_6590609",
          "sharing_friction_info": {
            "bloks_app_url": null,
            "should_have_sharing_friction": false
          },
          "preview": null,
          "organic_tracking_token": null,
          "saved_collection_ids": null,
          "has_viewer_saved": null,
          "video_versions": null,
          "media_overlay_info": null,
          "code": null,
          "display_uri": "https://scontent-atl3-3.cdninst...",
          "number_of_qualities": null,
          "product_type": "carousel_item",
          "carousel_media": null,
          "taken_at": 1784672740,
          "previous_submitter": null,
          "link": null,
          "story_cta": null,
          "has_liked": null,
          "like_count": null,
          "logging_info_token": null,
          "has_audio": null,
          "clips_metadata": null,
          "tagged_user": []
        },
        {
          "id": "3946442683177624616_6590609",
          "pk": "3946442683177624616",
          "accessibility_caption": null,
          "is_dash_eligible": null,
          "media_type": 1,
          "original_height": 4096,
          "original_width": 3072,
          "inventory_source": null,
          "caption": null,
          "user": null,
          "image_versions2": {
            "candidates": [ 
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 150,
                "width": 150
              }
            ]
          },
          "carousel_parent_id": "3946443449918506684_6590609",
          "sharing_friction_info": {
            "bloks_app_url": null,
            "should_have_sharing_friction": false
          },
          "preview": null,
          "organic_tracking_token": null,
          "saved_collection_ids": null,
          "has_viewer_saved": null,
          "video_versions": null,
          "media_overlay_info": null,
          "code": null,
          "display_uri": "https://scontent-atl3-1.cdninst...",
          "number_of_qualities": null,
          "product_type": "carousel_item",
          "carousel_media": null,
          "taken_at": 1784672740,
          "previous_submitter": null,
          "link": null,
          "story_cta": null,
          "has_liked": null,
          "like_count": null,
          "logging_info_token": null,
          "has_audio": null,
          "clips_metadata": null,
          "tagged_user": []
        },
        {
          "id": "3946442692849693694_6590609",
          "pk": "3946442692849693694",
          "accessibility_caption": null,
          "is_dash_eligible": null,
          "media_type": 1,
          "original_height": 4096,
          "original_width": 3072,
          "inventory_source": null,
          "caption": null,
          "user": null,
          "image_versions2": {
            "candidates": [
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 240,
                "width": 240
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 150,
                "width": 150
              }
            ]
          },
          "carousel_parent_id": "3946443449918506684_6590609",
          "sharing_friction_info": {
            "bloks_app_url": null,
            "should_have_sharing_friction": false
          },
          "preview": null,
          "organic_tracking_token": null,
          "saved_collection_ids": null,
          "has_viewer_saved": null,
          "video_versions": null,
          "media_overlay_info": null,
          "code": null,
          "display_uri": "https://scontent-atl3-3.cdninst...",
          "number_of_qualities": null,
          "product_type": "carousel_item",
          "carousel_media": null,
          "taken_at": 1784672740,
          "previous_submitter": null,
          "link": null,
          "story_cta": null,
          "has_liked": null,
          "like_count": null,
          "logging_info_token": null,
          "has_audio": null,
          "clips_metadata": null,
          "tagged_user": []
        },
        {
          "id": "3946442704258193198_6590609",
          "pk": "3946442704258193198",
          "accessibility_caption": null,
          "is_dash_eligible": null,
          "media_type": 1,
          "original_height": 4096,
          "original_width": 3072,
          "inventory_source": null,
          "caption": null,
          "user": null,
          "image_versions2": {
            "candidates": [ 
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 320,
                "width": 320
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 240,
                "width": 240
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 150,
                "width": 150
              }
            ]
          },
          "carousel_parent_id": "3946443449918506684_6590609",
          "sharing_friction_info": {
            "bloks_app_url": null,
            "should_have_sharing_friction": false
          },
          "preview": null,
          "organic_tracking_token": null,
          "saved_collection_ids": null,
          "has_viewer_saved": null,
          "video_versions": null,
          "media_overlay_info": null,
          "code": null,
          "display_uri": "https://scontent-atl3-3.cdninst...",
          "number_of_qualities": null,
          "product_type": "carousel_item",
          "carousel_media": null,
          "taken_at": 1784672740,
          "previous_submitter": null,
          "link": null,
          "story_cta": null,
          "has_liked": null,
          "like_count": null,
          "logging_info_token": null,
          "has_audio": null,
          "clips_metadata": null,
          "tagged_user": []
        },
        {
          "id": "3946442711959043699_6590609",
          "pk": "3946442711959043699",
          "accessibility_caption": null,
          "is_dash_eligible": null,
          "media_type": 1,
          "original_height": 4096,
          "original_width": 3072,
          "inventory_source": null,
          "caption": null,
          "user": null,
          "image_versions2": {
            "candidates": [ 
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 240,
                "width": 240
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 150,
                "width": 150
              }
            ]
          },
          "carousel_parent_id": "3946443449918506684_6590609",
          "sharing_friction_info": {
            "bloks_app_url": null,
            "should_have_sharing_friction": false
          },
          "preview": null,
          "organic_tracking_token": null,
          "saved_collection_ids": null,
          "has_viewer_saved": null,
          "video_versions": null,
          "media_overlay_info": null,
          "code": null,
          "display_uri": "https://scontent-atl3-3.cdninst...",
          "number_of_qualities": null,
          "product_type": "carousel_item",
          "carousel_media": null,
          "taken_at": 1784672740,
          "previous_submitter": null,
          "link": null,
          "story_cta": null,
          "has_liked": null,
          "like_count": null,
          "logging_info_token": null,
          "has_audio": null,
          "clips_metadata": null,
          "tagged_user": []
        },
        {
          "id": "3946442721027156466_6590609",
          "pk": "3946442721027156466",
          "accessibility_caption": null,
          "is_dash_eligible": null,
          "media_type": 1,
          "original_height": 4096,
          "original_width": 3072,
          "inventory_source": null,
          "caption": null,
          "user": null,
          "image_versions2": {
            "candidates": [ 
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 150,
                "width": 150
              }
            ]
          },
          "carousel_parent_id": "3946443449918506684_6590609",
          "sharing_friction_info": {
            "bloks_app_url": null,
            "should_have_sharing_friction": false
          },
          "preview": null,
          "organic_tracking_token": null,
          "saved_collection_ids": null,
          "has_viewer_saved": null,
          "video_versions": null,
          "media_overlay_info": null,
          "code": null,
          "display_uri": "https://scontent-atl3-3.cdnin...",
          "number_of_qualities": null,
          "product_type": "carousel_item",
          "carousel_media": null,
          "taken_at": 1784672740,
          "previous_submitter": null,
          "link": null,
          "story_cta": null,
          "has_liked": null,
          "like_count": null,
          "logging_info_token": null,
          "has_audio": null,
          "clips_metadata": null,
          "tagged_user": []
        },
        {
          "id": "3946442726949493749_6590609",
          "pk": "3946442726949493749",
          "accessibility_caption": null,
          "is_dash_eligible": null,
          "media_type": 1,
          "original_height": 4096,
          "original_width": 3072,
          "inventory_source": null,
          "caption": null,
          "user": null,
          "image_versions2": {
            "candidates": [
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 4096,
                "width": 3072
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 1720,
                "width": 1290
              },
              {
               "url": "https://scontent-atl3-1.cdninst...",
                "height": 1572,
                "width": 1179
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 1712,
                "width": 1284
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 1560,
                "width": 1170
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 1104,
                "width": 828
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 1440,
                "width": 1080
              },
              {
               "url": "https://scontent-atl3-1.cdninst...",
                "height": 960,
                "width": 720
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 853,
                "width": 640
              },
              {
               "url": "https://scontent-atl3-1.cdninst...",
                "height": 640,
                "width": 480
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "width": 320
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 320,
                "width": 240
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 1080,
                "width": 1080
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 750,
                "width": 750
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 640,
                "width": 640
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 480,
                "width": 480
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 320,
                "width": 320
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 240,
                "width": 240
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 150,
                "width": 150
              }
            ]
          },
          "carousel_parent_id": "3946443449918506684_6590609",
          "sharing_friction_info": {
            "bloks_app_url": null,
            "should_have_sharing_friction": false
          },
          "preview": null,
          "organic_tracking_token": null,
          "saved_collection_ids": null,
          "has_viewer_saved": null,
          "video_versions": null,
          "media_overlay_info": null,
          "code": null,
          "display_uri": "https://scontent-atl3-3.cdnin...",
          "number_of_qualities": null,
          "product_type": "carousel_item",
          "carousel_media": null,
          "taken_at": 1784672740,
          "previous_submitter": null,
          "link": null,
          "story_cta": null,
          "has_liked": null,
          "like_count": null,
          "logging_info_token": null,
          "has_audio": null,
          "clips_metadata": null,
          "tagged_user": []
        },
        {
          "id": "3946442733006014550_6590609",
          "pk": "3946442733006014550",
          "accessibility_caption": null,
          "is_dash_eligible": null,
          "media_type": 1,
          "original_height": 1421,
          "original_width": 1066,
          "inventory_source": null,
          "caption": null,
          "user": null,
          "image_versions2": {
            "candidates": [
              {
               "url": "https://scontent-atl3-1.cdninst...",
                "height": 1421,
                "width": 1066
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 1104,
                "width": 828
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 960,
                "width": 720
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 853,
                "width": 640
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 640,
                "width": 480
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 427,
                "width": 320
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 320,
                "width": 240
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 1066,
                "width": 1066
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 750,
                "width": 750
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 640,
                "width": 640
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 480,
                "width": 480
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 320,
                "width": 320
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 240,
                "width": 240
              },
              {
                "url": "https://scontent-atl3-1.cdninst...",
                "height": 150,
                "width": 150
              }
            ]
          },
          "carousel_parent_id": "3946443449918506684_6590609",
          "sharing_friction_info": {
            "bloks_app_url": null,
            "should_have_sharing_friction": false
          },
          "preview": null,
          "organic_tracking_token": null,
          "saved_collection_ids": null,
          "has_viewer_saved": null,
          "video_versions": null,
          "media_overlay_info": null,
          "code": null,
          "display_uri": "https://scontent-atl3-3.cdn...",
          "number_of_qualities": null,
          "product_type": "carousel_item",
          "carousel_media": null,
          "taken_at": 1784672740,
          "previous_submitter": null,
          "link": null,
          "story_cta": null,
          "has_liked": null,
          "like_count": null,
          "logging_info_token": null,
          "has_audio": null,
          "clips_metadata": null,
          "tagged_user": []
        }
      ],
      "location": null,
      "has_audio": null,
      "is_shared_from_basel": null,
      "clips_metadata": null,
      "clips_attribution_info": null,
      "media_attributions_data": [],
      "wearable_attribution_info": null,
      "ai_label_info": null,
      "accessibility_caption": null,
      "audience": null,
      "display_uri": "https://scontent-atl3-3.cdnin....",
      "media_cropping_info": null,
      "thumbnails": null,
      "timeline_pinned_user_ids": [],
      "upcoming_event": null,
      "media_notes": null,
      "ai_interactive_embodiment_attachment_style_info": null,
      "logging_info_token": null,
      "explore": null,
      "main_feed_carousel_starting_media_id": null,
      "is_seen": null,
      "floating_context_items": null,
      "open_carousel_submission_state": "closed",
      "previous_submitter": null,
      "all_previous_submitters": null,
      "headline": null,
      "hidden_likes_string_variant": -1,
      "fb_like_count": null,
      "crosspost_metadata": null,
      "enable_media_notes_production": false,
      "media_repost_count": null,
      "saved_collection_ids": null,
      "has_viewer_saved": null,
      "owner_id": {
        "pk": "6590609",
        "id": "6590609"
      },
      "fb_comment_count": null,
      "creative_config": null,
      "longform_clip_metadata": null,
      "link_text": null,
      "tagged_user": [],
      "hashtags": [],
      "mentions": [
        "Netflix"
      ],
      "url": "https://www.instagram.com/p/DbElWiWj0a8/",
      "taken_at_timestamp": 1784672741,
      "taken_at": "2026-07-21T22:25:41Z"
    },
  ],
  "related_profiles": [
    {
      "id": "2745711757",
      "username": "media",
      "full_name": "Media",
      "profile_pic_url": "https://scontent-ord5-1.cdninstagram.com/v/t51.2885-19/420640291_1413020776077435_4728172870409909077_n.jpg?...",
      "is_verified": true
    }
  ],
  "ig_status": "ok",
  "crawled_at": "2026-07-20T14:43:27.547Z"
}
```

Example dataset item when a profile is **not found**:

```json
{
  "id": "25025320",
  "userId": "25025320",
  "ig_status": "not_found",
  "message": "Profile not found or restricted",
  "fb_profile": null,
  "crawled_at": "2026-02-06T08:03:20.522Z"
}
```

Here, `ig_status: "not_found"` means Instagram did not return profile data for that user ID because the profile does not exist or access to it is restricted.

### Typical use cases

- Influencer discovery and enrichment using profile stats, verification, and public profile metadata
- Competitor monitoring by tracking profile fields such as followers, following, and post count over time
- Lead enrichment for sales or marketing workflows that need public business profile details
- Content research that only needs a quick preview of latest post captions and engagement

### Key output fields

- Identity: `id`, `pk`, `username`, `full_name`, `url`
- Profile presentation: `biography`, `profile_pic_url`, `profile_pic_url_hd`, `bio_links[]`, `external_url`
- Counts and flags: `followers`, `following`, `post_count`, `is_private`, `is_verified`, `is_business`
- Optional enrichments: `fb_profile`, `latest_posts[]`, `related_profiles[]`
- Scrape status: `ig_status`, `crawled_at`

### Full output field reference

Using this Instagram Profile API, you can extract both normalized fields and additional Instagram profile metadata
(when available on the public profile):

| Category                     | Fields                                                                                                                                                                                                                                                                                       | What you get                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Identity & IDs               | `pk`, `id`, `pk_id`, `username`, `full_name`, `url`                                                                                                                                                                                                                                         | Basic profile identifiers returned by Instagram, plus the canonical profile URL built by the actor.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Profile media & links        | `profile_pic_url`, `profile_pic_url_hd`, `profile_pic_id`, `has_profile_pic`, `profile_pic_genai_tool_info[]`, `biography`, `contact_email`, `bio_links[]`, `external_url`, `external_url_linkshimmed`, `pronouns[]`                                                                   | Profile picture fields (including HD URL mapped from `hd_profile_pic_url_info`), profile bio text, extracted contact email, profile links, and external website fields returned by the profile page enrichment query. `external_url_linkshimmed` is passed through from Instagram's `external_lynx_url` when present. Each `bio_links[]` item may include fields such as `image_url`, `is_pinned`, `link_type`, `lynx_url`, `media_accent_color_hex`, `media_type`, `title`, `url`, and `creation_source`. `profile_pic_genai_tool_info[]` is a raw Instagram array and is often empty.                                                                                                                                                                                      |
| Facebook enrichment          | `fb_profile`                                                                                                                                                                                                                                                                                 | Optional Facebook profile lookup from one detected profile URL in `external_url`, `bio_links`, `fb_profile_biolink`, `biography`, or `full_name` when `scrapeFacebookProfile` is enabled. The nested payload includes `url`, `status`, `message`, `bio`, `profile_type`, `profile_name`, `page_id`, counts, and other status fields when available.                                                                                                                                                                                                                                                                                                                                                                       |
| Counts & activity            | `followers`, `following`, `post_count`, `total_clips_count`, `has_any_clips`, `mutual_followers_count`, `latest_reel_media`, `live_broadcast_visibility`, `live_broadcast_id`                                                                                                          | High-level counts for analysis, monitoring, and profile summaries, plus activity hints exposed by Instagram. For public profiles, `post_count` is parsed from profile-page HTML `og:description` (for example, `<meta property="og:description" content="42M Followers, 1,455 Following, 14K Posts - …">`). Instagram abbreviates counts above ~10k in that tag (`14K`, `1.2M`, and so on), so values are approximate rather than exact. `post_count` is `null` for private profiles (HTML enrichment is skipped) and for public profiles when the tag is missing or unparseable after retries. `has_any_clips` is derived from `total_clips_count` when available. `latest_reel_media`, `live_broadcast_visibility`, and `live_broadcast_id` are raw pass-through fields and are commonly `null`.                                                                                                                                                                                                                                                                                                                              |
| Account flags & capabilities | `is_private`, `is_verified`, `show_text_post_app_badge`, `text_post_app_badge_label`, `is_active_on_text_post_app`, `is_unpublished`, `is_memorialized`, `is_coppa_enforced`, `is_regulated_c18`, `account_type`, `is_business`, `is_professional_account`, `category`, `should_show_category`, `is_embeds_disabled`, `is_cannes`, `has_story_archive` | Visibility, verification, account-type, audience-safety, and account-status fields from the profile page enrichment query. These fields are always emitted on found profiles, using explicit `null` when Instagram does not return a value (except `category`, which may be an empty string).                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Profile context & relationship hints | `linked_fb_info`, `profile_context_links_with_user_ids`, `profile_context_facepile_users`, `supervision_info`, `has_chaining`                                                                                                                                                        | Extra profile-context blocks returned by Instagram for social graph, supervision, or related-surface hints. These are pass-through fields and are often `null` on public profile pages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Business & location          | `address_street`, `city_name`, `zip`                                                                                                                                                                                                                                                         | Optional business/contact location metadata when Instagram exposes it on the public profile. These fields are usually `null` for non-business accounts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Transparency & badges        | `account_badges[]`, `show_account_transparency_details`, `transparency_label`, `transparency_product`, `hide_creator_marketplace_badge`, `is_ring_creator`, `show_ring_award`                                                                                                           | Transparency, badge, and creator-surface metadata exposed by Instagram. These are stable pass-through fields when present; arrays such as `account_badges[]` are emitted as `[]` when empty.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Latest posts                 | `latest_posts[]`                                                                                                                                                                                                                                                                             | Raw latest-post node items from Instagram's current posts response, with only a small set of output-oriented cleanup: `caption` is flattened to `caption.text`, `hashtags` and `mentions` are derived from that caption text, `taken_at` is exposed as the original timestamp via `taken_at_timestamp`, and the human-readable ISO time is emitted as `taken_at`. The actor also adds `url` and `video_duration` when they can be determined from the raw payload. Other nested structures such as `user`, `carousel_media`, `clips_metadata`, `coauthor_producers`, `timeline_pinned_user_ids`, and `video_versions` are preserved when Instagram returns them. |
| Related profiles             | `related_profiles[]`                                                                                                                                                                                                                                                                         | Suggested accounts from the `Accounts you might like` enrichment: `id`, `username`, `full_name`, `is_verified`, `profile_pic_url`. When enabled, the actor returns the full related-profiles list Instagram exposes for that profile. On final enrichment failure, the actor emits `[]` and logs a warning instead of failing the whole profile.                                                                                                                                                                                                                                                                                                                                                                 |
| Scrape metadata              | `crawled_at`, `ig_status`                                                                                                                                                                                                                                                                    | Timestamp of the scrape and a simple status indicator. `ig_status` is `ok` when profile data is returned, `not_found` when the profile does not exist or is restricted, and `invalid_input` when an input user ID is rejected before scraping starts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

Notes:

- Field availability depends on what Instagram returns for a given profile, especially for private accounts.
- Some fields are normalized by the actor (`followers`, `following`), while other raw Instagram profile fields may still be passed through when present.
- Raw Instagram metadata can change over time, so downstream consumers should treat optional fields as non-guaranteed.
- `post_count` is parsed from the public profile page HTML `og:description` meta tag. Instagram abbreviates counts above ~10k in that tag (for example, `14K Posts` instead of an exact number), so values should be treated as approximate. `post_count` is emitted as `null` when: (1) the profile is private because profile HTML enrichment is skipped, or (2) the profile is public but the tag is missing or unparseable after retries.
- `contact_email` is extracted from `biography` or `full_name` when an email address is present on a found profile, and is `null` otherwise.
- `fb_profile` is `null` when the toggle is disabled or no Facebook profile URL is found. If a Facebook lookup fails after retries, the actor returns `fb_profile.status = "error"` or `fb_profile.status = "not_found"` instead of throwing. Successful `fb_profile` payloads include `bio` instead of the older `intro` name.
- `latest_posts[]` is intentionally not normalized into a compatibility schema. Downstream consumers should treat it as the current raw latest-post node shape, aside from the flattened `caption`, the added `hashtags` and `mentions`, the `taken_at_timestamp` plus human-readable `taken_at` pairing, and the added `url` and `video_duration` convenience fields.
- The actor currently requests 10 latest posts for paying users and 5 latest posts for non-paying users when latest-post enrichment is enabled.

### Want to get other details from Instagram?

This actor is optimized for **profiles**. If you want to scrape other Instagram data types, use a dedicated scraper for that job.

Related actors from the
[instagram-scraper](https://apify.com/instagram-scraper):

<table>
  <thead>
    <tr>
      <th align="left">Actor</th>
      <th align="left">Description</th>
      <th align="left" width="220">Stats</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-profile-scraper">Instagram Profile Scraper</a></td>
      <td>Scrape Instagram profile data from usernames, profile URLs, or search-based inputs</td>
      <td width="220"><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-profile-scraper" height="20" alt="Instagram Profile Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/fast-instagram-post-scraper">Fast Instagram Profile Posts Scraper</a></td>
      <td>Scrape post data from Instagram profile pages</td>
      <td width="220"><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/fast-instagram-post-scraper" height="20" alt="Fast Instagram Profile Posts Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-profile-posts-scraper">Instagram Profile Posts Scraper</a></td>
      <td>Extract profile post details such as hashtags, counts, media, and shortcode</td>
      <td width="220"><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-profile-posts-scraper" height="20" alt="Instagram Profile Posts Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-profile-reels-scraper">Fast Instagram Profile Reels Scraper</a></td>
      <td>Scrape public Instagram Reels from profile pages</td>
      <td width="220"><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-profile-reels-scraper" height="20" alt="Fast Instagram Profile Reels Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-tagged-posts-scraper">Instagram Tagged Posts Scraper</a></td>
      <td>Scrape posts from the profile <code>Tagged</code> tab</td>
      <td width="220"><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-tagged-posts-scraper" height="20" alt="Instagram Tagged Posts Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-hashtags-scraper">Instagram Hashtags Posts Scraper</a></td>
      <td>Scrape public Instagram hashtag pages</td>
      <td width="220"><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-hashtags-scraper" height="20" alt="Instagram Hashtags Posts Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-related-profiles">Instagram Related Profiles Scraper</a></td>
      <td>Discover related accounts and recursively expand profile networks</td>
      <td width="220"><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-related-profiles" height="20" alt="Instagram Related Profiles Scraper Actor Stats"></td>
    </tr>
  </tbody>
</table>

***

### Tips & troubleshooting

**Don’t overload the actor.** If you need to scrape large lists, split inputs into batches.

***

### Legal & ethical notice

You are responsible for ensuring your use of this actor complies with:

- Instagram’s Terms of Service
- Applicable laws and regulations (privacy, data protection, etc.)

Only scrape data you have the right to access, and avoid collecting personal data without a lawful basis.

***

# Actor input Schema

## `userIds` (type: `array`):

Insert the Instagram user IDs you want to scrape. Each item must be a string containing only digits.

## `scrapeFacebookProfile` (type: `boolean`):

When enabled, the actor looks for one Facebook profile URL in external\_url, bio\_links, fb\_profile\_biolink, or biography, then fetches fb\_profile.

## `skipPostCount` (type: `boolean`):

Skip post\_count. Enable this to get profile data faster when post count is not required.

## `skipLatestPosts` (type: `boolean`):

Skip latest\_posts. Enable this to get profile data faster when latest posts are not required.

## `skipRelatedProfiles` (type: `boolean`):

Skip related\_profiles. Enable this to get profile data faster when related profiles are not required.

## Actor input object example

```json
{
  "userIds": [
    "6590609"
  ],
  "scrapeFacebookProfile": false,
  "skipPostCount": false,
  "skipLatestPosts": true,
  "skipRelatedProfiles": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "userIds": [
        "6590609"
    ],
    "scrapeFacebookProfile": false,
    "skipPostCount": false,
    "skipLatestPosts": true,
    "skipRelatedProfiles": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("instagram-scraper/instagram-user-id-profile-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "userIds": ["6590609"],
    "scrapeFacebookProfile": False,
    "skipPostCount": False,
    "skipLatestPosts": True,
    "skipRelatedProfiles": True,
}

# Run the Actor and wait for it to finish
run = client.actor("instagram-scraper/instagram-user-id-profile-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "userIds": [
    "6590609"
  ],
  "scrapeFacebookProfile": false,
  "skipPostCount": false,
  "skipLatestPosts": true,
  "skipRelatedProfiles": true
}' |
apify call instagram-scraper/instagram-user-id-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,instagram-scraper/instagram-user-id-profile-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tYh6tIgOHIQSP2Tpf/builds/jWEpIzD9MgH76hdXG/openapi.json
