# Instagram Profile Stats API (`apixyz/instagram-profile-scraper`) Actor

Public profile facts for up to 200 Instagram handles: followers, following, posts, bio, links, verification, account type, category, and business contacts. Direct API first, one optional residential fallback, no login. $1 per 1,000 successful profiles, plus Apify platform usage billed separately.

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

## Pricing

Pay per event + usage

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

Fetch current public facts for up to 200 [Instagram](https://www.instagram.com/) profiles: follower, following, and post counts; bio and links; verification and account type; category; public business contact fields; and profile images. The price is $1 per 1,000 successful profiles plus Apify platform usage. No Instagram login or cookies.

The scope is profile metadata. Post content, comments, follower lists, and Instagram search remain outside this Actor. One profile input produces one paid `OK` row or one uncharged diagnostic row.

### Why this Actor

Each lookup starts at Instagram's public `web_profile_info` endpoint. A residential request is attempted once only when the direct response fails or cannot be parsed. There is no browser startup or media pagination.

Duplicate usernames produce an uncharged diagnostic rather than another network request. Every row includes its input index, access tier, attempt count, and HTTP status. Changed source data becomes `BLOCKED_OR_UNPARSED`, so a parser failure cannot masquerade as an empty profile.

Use it for creator-shortlist enrichment, partner CRM records, competitor dashboards, and scheduled profile snapshots when you already know the handles.

### Input

`usernames` accepts 1 to 200 objects. Each object requires `username`, which can be a bare handle, `@handle`, or full `instagram.com` profile URL. `label` is optional.

```json
{
  "usernames": [
    { "username": "nasa", "label": "Space" },
    { "username": "https://www.instagram.com/natgeo/", "label": "Media" }
  ],
  "maxConcurrency": 3,
  "useResidentialFallback": true
}
````

The hard run limit is 200 profiles and maximum concurrency is 5. These bounds reflect Instagram's aggressive rate limiting; larger lists should be split into separate runs.

### Output

An `OK` row includes:

```json
{
  "inputIndex": 0,
  "username": "nasa",
  "label": "Space",
  "status": "OK",
  "instagramId": "123456",
  "fullName": "NASA",
  "followers": 63000000,
  "following": 76,
  "posts": 4469,
  "bio": "Exploring the universe and our home planet.",
  "externalUrl": "https://www.nasa.gov/",
  "bioLinks": [{ "title": "NASA", "url": "https://www.nasa.gov/" }],
  "isPrivate": false,
  "isVerified": true,
  "isBusinessAccount": true,
  "isProfessionalAccount": true,
  "categoryName": "Science",
  "businessEmail": null,
  "businessPhoneNumber": null,
  "accessTier": "DIRECT_API",
  "attempts": 1,
  "httpStatus": 200,
  "scrapedAt": "2026-07-22T10:00:00.000Z"
}
```

Statuses are `OK`, `NOT_FOUND`, `BLOCKED_OR_UNPARSED`, `FETCH_FAILED`, `INVALID_USERNAME`, `DUPLICATE_INPUT`, or `BUDGET_EXHAUSTED`. Only `OK` is charged. Diagnostics make failed source access visible without pretending that a blocked or changed response means the profile has no data.

Datasets can be downloaded as JSON, CSV, Excel, or XML, or consumed through the Apify API and integrations.

### Pricing and platform usage

The configured price is a $0.005 Actor-start event plus $0.001 per successfully returned profile (`profile-scraped`), or $1 per 1,000 successful profiles.

**Platform usage is charged separately to the customer under the current Apify pricing configuration.** Direct requests use compute, external data transfer, and storage. When residential fallback is used, its proxy traffic is also platform usage. The event price does not include or absorb those charges. Set `useResidentialFallback` to false when minimum cost matters more than fallback coverage.

Only `OK` rows are billed. The Actor validates Apify's returned paid-event count and stops assigning new work when the charge limit is reached.

### Evidence boundary

The public JSON endpoint returned a direct HTTP 200 with the documented profile fields in a local check on 2026-07-22. The sanitized fixture preserves that verified field shape. This does not prove the same access rate from Apify cloud IPs; the residential fallback exists for that reason. Check `OUTPUT_SUMMARY.accessTiers` and the run's platform-usage breakdown after a bounded live deployment test.

### Limits

- Scope is public profile metadata. Private content and authenticated surfaces are excluded.
- Instagram can change or restrict its public endpoint without notice.
- Public contact fields are nullable. Apply the privacy and marketing rules relevant to your use case.
- Each result is a current snapshot. Repeated scheduled runs can supply a time series.

### Troubleshooting

**Why did a profile return `BLOCKED_OR_UNPARSED`?** Instagram returned a successful HTTP response without the profile structure this version recognizes. Check the access tier and HTTP status in that row. A run with this status needs source review; it is not a zero-follower result.

**Why was residential proxy usage charged?** The direct request failed or could not be parsed, and `useResidentialFallback` was enabled. The row's `accessTier` will be `RESIDENTIAL_API`.

**Why is a duplicate handle present in the dataset?** The duplicate row documents which input was skipped and points to the first input index. It creates no second network request or profile event.

**What should I include in a support issue?** Include the Actor run ID, the affected row statuses, and whether the direct or residential tier was used. Remove labels or downstream business data that should remain private.

STYLE AUDIT: passed 2026-07-22 against STYLE.md

# Actor input Schema

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

Add 1 to 200 public Instagram usernames or full profile URLs. A label is optional and is copied to the result.

## `maxConcurrency` (type: `integer`):

Concurrent lookups. Keep the default unless a bounded live run proves a higher value is reliable.

## `useResidentialFallback` (type: `boolean`):

Try one residential-proxy request only when the direct public API request fails or cannot be parsed. Residential traffic is separate Apify platform usage under the current pricing configuration.

## Actor input object example

```json
{
  "usernames": [
    {
      "username": "nasa",
      "label": "NASA"
    }
  ],
  "maxConcurrency": 3,
  "useResidentialFallback": 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": [
        {
            "username": "nasa",
            "label": "NASA"
        }
    ]
};

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

# Run the Actor and wait for it to finish
run = client.actor("apixyz/instagram-profile-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": [
    {
      "username": "nasa",
      "label": "NASA"
    }
  ]
}' |
apify call apixyz/instagram-profile-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Profile Stats API",
        "description": "Public profile facts for up to 200 Instagram handles: followers, following, posts, bio, links, verification, account type, category, and business contacts. Direct API first, one optional residential fallback, no login. $1 per 1,000 successful profiles, plus Apify platform usage billed separately.",
        "version": "0.2",
        "x-build-id": "PGoai3fO9UvRBR8RH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apixyz~instagram-profile-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apixyz-instagram-profile-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/apixyz~instagram-profile-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apixyz-instagram-profile-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/apixyz~instagram-profile-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apixyz-instagram-profile-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": "Profiles",
                        "minItems": 1,
                        "maxItems": 200,
                        "type": "array",
                        "description": "Add 1 to 200 public Instagram usernames or full profile URLs. A label is optional and is copied to the result.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "username": {
                                    "title": "Username or profile URL",
                                    "type": "string",
                                    "description": "Examples: nasa, @nasa, or https://www.instagram.com/nasa/",
                                    "editor": "textfield",
                                    "minLength": 1
                                },
                                "label": {
                                    "title": "Label",
                                    "type": "string",
                                    "description": "Optional reference copied to the output.",
                                    "editor": "textfield"
                                }
                            },
                            "required": [
                                "username"
                            ],
                            "additionalProperties": false
                        }
                    },
                    "maxConcurrency": {
                        "title": "Parallel profiles",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Concurrent lookups. Keep the default unless a bounded live run proves a higher value is reliable.",
                        "default": 3
                    },
                    "useResidentialFallback": {
                        "title": "Use residential fallback",
                        "type": "boolean",
                        "description": "Try one residential-proxy request only when the direct public API request fails or cannot be parsed. Residential traffic is separate Apify platform usage under the current pricing configuration.",
                        "default": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
