# Instagram Account Scraper (`xtracto/instagram-account-scraper`) Actor

Get Instagram profile data — followers, following, posts count, bio, avatar, verified status — without login. HTTP-only.

- **URL**: https://apify.com/xtracto/instagram-account-scraper.md
- **Developed by:** [Farhan Febrian Nauval](https://apify.com/xtracto) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Account Scraper

Extract public profile data from any Instagram account in bulk — username, full name, bio, follower / following / posts count, profile picture, verified status, business category, and link in bio — in a clean structured JSON output.

### Why use this actor

- **No account / no login required** — just give it an Instagram username or profile URL.
- **No API key needed** — Instagram's Graph API is gated behind app review; this actor returns the same data the public web profile shows.
- **Rich detail** — full name, bio, followers, following, posts count, profile picture (HD), verified badge, professional/business flags, business category, and the external link in bio.
- **Bulk input** — pass a list of usernames or URLs in one run; one clean dataset row per profile.
- **Automatic retries** — transient failures retry with exponential backoff; private, deactivated, or non-existent accounts surface as `_error: "not_found"` / `_error: "login_required"` so you can triage failures.
- **Stable JSON output** suitable for pipelines, spreadsheets, and databases — every row carries `_input`, `_source`, `_scrapedAt` envelope fields so you can join results back to your input list.

### How it works

1. You provide a list of Instagram usernames (e.g. `instagram`) or full profile URLs (e.g. `https://www.instagram.com/instagram/`).
2. The actor fetches each profile the same way Instagram's web app does and assembles a flat JSON record with bio, counts, and verification flags.
3. Results stream into your dataset, ready to download as JSON, CSV, or Excel.

You do not need to manage scrapers, browsers, or rotating IPs — all handled internally.

### Input

```json
{
  "usernames": [
    "instagram",
    "cristiano"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["DATACENTER"]
  }
}
````

| Field | Type | Description |
|---|---|---|
| `usernames` | array | List of Instagram usernames or full profile URLs to scrape. Both `instagram` and `https://www.instagram.com/instagram/` are accepted. `@handle` form is also supported. |
| `proxyConfiguration` | object | Apify Proxy settings. Datacenter works for most account lookups; switch to `RESIDENTIAL` only if you see persistent rate-limit errors on very large runs. |

### Output

Input: `instagram`

```json
{
  "_input": "instagram",
  "_source": "S1-primary",
  "_scrapedAt": "2026-05-18T10:53:24.880672+00:00",
  "id": "25025320",
  "fbid": "17841400039600391",
  "eimu_id": "117943452927407",
  "username": "instagram",
  "full_name": "Instagram",
  "biography": "Discover what's new on Instagram 🔎✨",
  "external_url": "http://help.instagram.com/",
  "bio_links": [
    { "title": "", "url": "http://help.instagram.com", "link_type": "external" },
    { "title": "Close Friends Only Podcast with KATSEYE", "url": "https://youtu.be/dkXpIRUBfyg", "link_type": "external" }
  ],
  "edge_followed_by": { "count": 685807483 },
  "edge_follow": { "count": 196 },
  "edge_owner_to_timeline_media": { "count": 8439 },
  "highlight_reel_count": 15,
  "is_verified": true,
  "is_private": false,
  "is_business_account": false,
  "is_professional_account": true,
  "is_joined_recently": false,
  "business_category_name": null,
  "category_name": null,
  "category_enum": null,
  "business_email": null,
  "business_phone_number": null,
  "business_address_json": null,
  "has_clips": true,
  "has_channel": false,
  "has_guides": false,
  "pronouns": [],
  "profile_pic_url": "https://instagram.fcgk52-1.fna.fbcdn.net/v/t51.82787-19/550891366_18667771684001321_...jpg",
  "profile_pic_url_hd": "https://instagram.fcgk52-1.fna.fbcdn.net/v/t51.82787-19/550891366_18667771684001321_...jpg"
}
```

> The raw payload also includes recent timeline media edges (`edge_owner_to_timeline_media.edges`, `edge_felix_video_timeline.edges`, etc.). They are preserved for advanced users but truncated above for readability — for a full post-by-post feed use the **Instagram Account Posts** or **Instagram Account Reels** actor instead.

| Field | Type | Description |
|---|---|---|
| `_input` | string | The username or URL exactly as you supplied it. Use this to join results back to your input list. |
| `_source` | string | Internal tag for the path used to fetch the record. `S1-primary` means the fastest, richest path; values starting with `S2-` indicate a fallback was used. |
| `_scrapedAt` | string | ISO-8601 UTC timestamp when the record was scraped. |
| `id` | string | Instagram's stable numeric user ID. Survives username changes — use it as your join key. |
| `fbid` | string | Instagram's IGID (often referred to as the "FBID"). Stable across name changes. |
| `eimu_id` | string | Instagram's encrypted media-unit ID for the account. |
| `username` | string | URL slug for the profile (e.g. `instagram`). |
| `full_name` | string | Display name as shown on the profile header. |
| `biography` | string | Free-text bio (can contain emoji and line breaks). Empty string if not set. |
| `external_url` | string | The single link displayed in the profile header. `null` if not set. |
| `bio_links` | array | List of link-in-bio entries (creators can configure multiple). Each item has `title`, `url`, and `link_type`. |
| `edge_followed_by.count` | integer | Follower count. |
| `edge_follow.count` | integer | Following count (how many accounts this profile follows). |
| `edge_owner_to_timeline_media.count` | integer | Total number of public posts on the grid. |
| `highlight_reel_count` | integer | Number of story highlights pinned to the profile. |
| `is_verified` | boolean | `true` if the profile carries Instagram's verified badge. |
| `is_private` | boolean | `true` if the account is set to private. Private accounts return public-only fields (counts, bio, avatar) and no timeline media. |
| `is_business_account` | boolean | `true` if the profile is a legacy business account. |
| `is_professional_account` | boolean | `true` if the profile is a Creator or Business account. |
| `is_joined_recently` | boolean | `true` if Instagram considers the account newly created. |
| `business_category_name` | string | Free-text category set by business accounts (e.g. "Personal Goods & General Merchandise Stores"). `null` for personal accounts. |
| `category_name` | string | Sub-category label (creator-set). |
| `category_enum` | string | Internal category enum string (`null` for personal). |
| `business_email` | string | Public business contact email, if the creator opted to display one. |
| `business_phone_number` | string | Public business phone, if displayed. |
| `business_address_json` | string | JSON-encoded business address, if displayed. |
| `has_clips` | boolean | `true` if the profile has posted Reels. |
| `has_channel` | boolean | `true` if the profile has a broadcast channel. |
| `has_guides` | boolean | `true` if the profile has published Guides. |
| `pronouns` | array | Pronouns the creator chose to display (e.g. `["she", "her"]`). |
| `profile_pic_url` | string | Thumbnail-size profile picture URL (~150x150). |
| `profile_pic_url_hd` | string | Higher-resolution profile picture URL (~320x320). |

#### Error envelope

Private, deactivated, login-walled, or non-existent accounts return a structured error instead of crashing the run:

```json
{
  "_input": "this-handle-does-not-exist-xyz",
  "_source": "S1-primary",
  "_scrapedAt": "2026-05-18T10:53:25.118402+00:00",
  "_error": "not_found",
  "_errorDetail": "NotFound: user does not exist"
}
```

Possible `_error` values:

| Value | Meaning |
|---|---|
| `not_found` | Username does not exist or has been deactivated. |
| `login_required` | Instagram refused to serve the profile anonymously (typical for accounts under reach limits or in certain regions). |
| `fetch_failed` | A transient network / upstream error after retries. |

Filter on `_error` to triage failed rows.

### Pricing

This actor is billed per result: **$6.00 per 1,000 profiles**. Each successful profile = 1 result. Errors (`not_found`, `login_required`, `fetch_failed`) are not billed.

### Other Sosmed Actors

| Platform | Actor | Best for |
|---|---|---|
| Instagram | [Instagram Account Posts Scraper](https://apify.com/xtracto/instagram-account-posts-scraper) | Full post grid for a profile |
| Instagram | [Instagram Account Reels Scraper](https://apify.com/xtracto/instagram-account-reels-scraper) | All Reels for a profile |
| Instagram | [Instagram Post Detail Scraper](https://apify.com/xtracto/instagram-post-detail-scraper) | Caption, likes, comments for one URL |
| Threads | [Threads Account Scraper](https://apify.com/xtracto/threads-account-scraper) | Profile data for a Threads handle |
| Twitter / X | [X Account Scraper](https://apify.com/xtracto/x-account-scraper) | Profile + tweet counts for any handle |
| Facebook | [Facebook Page Scraper](https://apify.com/xtracto/facebook-page) | Public Facebook Page metadata |
| Bluesky | [Bluesky Account Scraper](https://apify.com/xtracto/bluesky-account-scraper) | atproto profile + counters |

Browse the full catalog at [apify.com/xtracto](https://apify.com/xtracto).

### Notes

- Instagram applies aggressive rate limiting to anonymous lookups. For batches over a few hundred accounts, expect the actor to slow down between requests; the run will still complete, just over a longer wall-clock time.
- **Private accounts** return only the public-facing fields (counts, bio, avatar, verified flag) — the grid (`edge_owner_to_timeline_media.edges`) will be empty. Use the Account Posts actor with an authenticated session if you need private content (not supported here).
- **Follower counts are rounded** by Instagram for very large accounts (over ~10K). The number you see in `edge_followed_by.count` reflects what Instagram exposes publicly, which may differ from the live internal value by up to a few thousand.
- **Link in bio**: Instagram now supports multiple links per profile. The legacy single link sits in `external_url`; the full list is in `bio_links`.
- The `id` field is the most reliable identifier — usernames can change but `id` does not.
- Newly-created accounts may take a few hours before they appear in public lookups.

# Actor input Schema

## `usernames` (type: `array`):

List of Instagram usernames or full profile URLs to scrape. Both `instagram` and `https://www.instagram.com/instagram/` are accepted. `@handle` form is also supported.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. Datacenter proxy works for account-level scraping. Switch to `RESIDENTIAL` only if you see persistent rate-limit errors on very large runs.

## Actor input object example

```json
{
  "usernames": [
    "nasa",
    "natgeo"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "usernames": [
        "nasa",
        "natgeo"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/instagram-account-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 = { "usernames": [
        "nasa",
        "natgeo",
    ] }

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

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

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

```

## CLI example

```bash
echo '{
  "usernames": [
    "nasa",
    "natgeo"
  ]
}' |
apify call xtracto/instagram-account-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=xtracto/instagram-account-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Account Scraper",
        "description": "Get Instagram profile data — followers, following, posts count, bio, avatar, verified status — without login. HTTP-only.",
        "version": "1.0",
        "x-build-id": "dnKe7q2g0AUuWF7fs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~instagram-account-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-instagram-account-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/xtracto~instagram-account-scraper/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-instagram-account-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/xtracto~instagram-account-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-instagram-account-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "usernames"
                ],
                "properties": {
                    "usernames": {
                        "title": "Instagram usernames or profile URLs",
                        "type": "array",
                        "description": "List of Instagram usernames or full profile URLs to scrape. Both `instagram` and `https://www.instagram.com/instagram/` are accepted. `@handle` form is also supported.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. Datacenter proxy works for account-level scraping. Switch to `RESIDENTIAL` only if you see persistent rate-limit errors on very large runs.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
