# instagram profile scraper pro (`qaseemiqbal/instagram-profile-scraper-pro`) Actor

Extract clean public Instagram profile data from usernames, profile URLs, or profile IDs. Get followers, bio, links, public contact clues, business signals, and profile status in a ready-to-download dataset.

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

## Pricing

from $2.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.

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 Profile Scraper Pro 🚀📸

Turn public Instagram profiles into clean, organized data in minutes. ✨

**Instagram Profile Scraper Pro** helps you collect public profile information from Instagram usernames, profile links, numeric profile IDs, or an existing Apify dataset. Add a list of profiles, run the Actor, and get structured results you can download, analyze, send to Google Sheets, connect to automations, or use in your own apps. 📊⚡

> This Actor is built for **public Instagram profile data only**. It does not log in, use cookies, bypass private accounts, or collect hidden/private information. 🔒✅

### What does Instagram Profile Scraper Pro do? 👤

This Actor extracts useful public information from Instagram profile pages, including:

- 👤 Username, profile URL, profile ID, and full name
- 📝 Bio text and profile category
- 📈 Followers, following, and post counts
- ✅ Verification and privacy status
- 🏢 Business/professional account signals
- 🔗 Website links and public bio links
- 📬 Public contact clues such as listed emails, phone numbers, domains, mailto links, or WhatsApp links
- 🖼️ Profile picture URLs
- 🎞️ Optional latest public post/video previews
- 👥 Optional related or suggested profiles
- 🕵️ Optional public "About this profile" metadata, when available
- 🔁 Optional change detection against a previous dataset
- 🧾 Clear status records for profiles that are missing, blocked, private, skipped, or unavailable

In short: give it Instagram profiles, and it gives you clean profile intelligence. 🎯

### Why use this Instagram profile scraper? 💡

Instagram profiles contain useful public signals for many teams and workflows. This Actor is especially helpful for:

- 🛍️ **Brand research** - understand public brand accounts, websites, categories, and audience size
- 🤝 **Influencer discovery** - collect public creator profile details and follower counts
- 📊 **Market research** - compare public profiles in a niche, region, or industry
- 🧲 **Lead research** - find public websites, domains, and listed contact clues
- 🕵️ **Competitor monitoring** - track changes in public profile data over time
- 🧰 **No-code automation** - send profile data into Google Sheets, Make, Zapier, Airbyte, n8n, or webhooks
- 🧪 **Data enrichment** - enrich a list of Instagram handles from another Apify Actor or your own dataset

### Quick start 🚦

You do not need to code. 🧡

1. 📝 Open the Actor on Apify.
2. 👤 Enter one or more Instagram usernames, profile URLs, or profile IDs.
3. ⚙️ Keep the default settings for the cheapest quick run.
4. ▶️ Click **Start**.
5. 📥 Download your results as JSON, CSV, Excel, XML, RSS, or HTML.

Example inputs you can paste:

```text
nasa
@instagram
https://www.instagram.com/apifytech/
528817151
````

### What can you scrape? 🧾

| Data type | Included? | Notes |
| --- | --- | --- |
| 👤 Basic profile details | ✅ Yes | Username, ID, full name, URL, bio |
| 📈 Public metrics | ✅ Yes | Followers, following, posts, highlights, IGTV/video count when available |
| ✅ Account signals | ✅ Yes | Verified, private, business/professional status |
| 🔗 Public links | ✅ Yes | Website and bio links |
| 📬 Public contact clues | ✅ Yes | Only if publicly listed on the profile or links |
| 🎞️ Latest posts/videos | ⚙️ Optional | Off by default to keep runs cheaper |
| 👥 Related profiles | ⚙️ Optional | Off by default to reduce extra data and cost |
| 🕵️ About-profile data | ⚙️ Optional | Only when publicly available |
| 🔁 Change detection | ⚙️ Optional | Compare against a previous dataset |
| 🔐 Private profile content | ❌ No | Private content is not collected |
| 🍪 Logged-in/cookie-only data | ❌ No | This Actor does not log in |

### Input settings explained ⚙️

The most important setting is **Instagram profiles**. Add usernames, profile URLs, or IDs there. Everything else is optional.

| Setting | Plain-English meaning |
| --- | --- |
| 👤 `profileInputs` | The Instagram profiles you want to scrape |
| 📦 `inputDatasetId` | Read profile names from another Apify dataset |
| 🏷️ `inputDatasetField` | The dataset column that contains the username or URL |
| 🔢 `maxProfiles` | Maximum number of profiles to process |
| 🎞️ `includeLatestPosts` | Add latest public post/reel/carousel previews |
| 👥 `includeRelatedProfiles` | Add related or suggested public profiles |
| 🕵️ `includeAbout` | Add public account-history metadata if Instagram exposes it |
| 🔗 `includeExternalUrls` | Include public websites and bio links |
| 🌐 `resolveExternalUrls` | Follow redirected links to their final destination |
| 📬 `includeContactInfo` | Extract public emails, phones, domains, and messaging links if listed |
| 📄 `outputMode` | Choose compact, full, or split output |
| 🚀 `crawlerMode` | Choose the cheapest HTTP mode or browser fallback |
| 🔁 `maxRequestRetries` | Retry failed profiles if needed |
| 🛡️ `proxyConfiguration` | Optional proxy settings |

### Cheapest recommended settings 💸

The Actor is already configured to run cheaply by default. 🪙

For the lowest-cost runs, keep these defaults:

- ✅ `crawlerMode`: `httpOnly`
- ✅ `proxyConfiguration.useApifyProxy`: `false`
- ✅ `includeLatestPosts`: `false`
- ✅ `includeRelatedProfiles`: `false`
- ✅ `includeAbout`: `false`
- ✅ `resolveExternalUrls`: `false`
- ✅ `outputMode`: `compact`
- ✅ `maxRequestRetries`: `0`
- ✅ Default memory: `1024 MB`

These settings avoid browser startup, proxy charges, optional extra requests, and very large output rows. 🧊

Turn on richer options only when you need more data and are comfortable with the extra runtime cost. ⚡

### Example input: simple profile lookup 🔎

```json
{
  "profileInputs": ["nasa", "@apifytech", "https://www.instagram.com/instagram/"],
  "includeLatestPosts": false,
  "includeRelatedProfiles": false,
  "includeAbout": false,
  "outputMode": "compact"
}
```

### Example input: richer creator research 🌟

```json
{
  "profileInputs": ["nasa", "natgeo", "spacex"],
  "includeLatestPosts": true,
  "maxLatestPostsPerProfile": 12,
  "includeRelatedProfiles": true,
  "maxRelatedProfiles": 20,
  "includeAbout": true,
  "outputMode": "full"
}
```

### Example input: use profiles from another dataset 📦

```json
{
  "inputDatasetId": "DATASET_ID",
  "inputDatasetField": "username",
  "maxProfiles": 1000,
  "includeLatestPosts": false,
  "outputMode": "compact"
}
```

### Example input: monitor profile changes 🔁

```json
{
  "profileInputs": ["nasa", "apifytech"],
  "enableChangeDetection": true,
  "baselineDatasetId": "PREVIOUS_DATASET_ID",
  "outputMode": "compact"
}
```

### Output format 📤

Results are saved to the Actor's default dataset. Each profile becomes one clean record. ✅

Here is a shortened example:

```json
{
  "recordType": "profile",
  "status": "ok",
  "input": {
    "raw": "nasa",
    "normalized": "nasa",
    "type": "username"
  },
  "id": "528817151",
  "username": "nasa",
  "url": "https://www.instagram.com/nasa/",
  "fullName": "NASA",
  "biography": "Making the seemingly impossible, possible.",
  "followersCount": 104421255,
  "followsCount": 91,
  "postsCount": 4817,
  "verified": true,
  "private": false,
  "isBusinessAccount": true,
  "businessCategoryName": "Government Agencies",
  "externalUrl": "https://www.nasa.gov/",
  "latestPostsCount": 0,
  "relatedProfilesCount": 0,
  "publicContact": {
    "emails": [],
    "phones": [],
    "domains": ["nasa.gov"]
  },
  "extraction": {
    "route": "http",
    "httpStatus": 200,
    "retryCount": 0
  },
  "scrapedAt": "2026-06-15T14:22:06.553Z"
}
```

If a profile cannot be scraped, the Actor can still return a clear record explaining what happened. 🧭

Example:

```json
{
  "recordType": "profile",
  "status": "not_found",
  "statusReason": "PROFILE_NOT_FOUND",
  "input": {
    "raw": "missing_profile",
    "normalized": "missing_profile",
    "type": "username"
  },
  "extraction": {
    "route": "http",
    "httpStatus": 404,
    "errorType": "NotFoundError",
    "errorMessage": "Profile not found"
  }
}
```

### Output modes 📚

| Mode | Best for | What you get |
| --- | --- | --- |
| 🧾 `compact` | Spreadsheets, quick exports, lower-cost runs | Main profile fields and counts |
| 🧬 `full` | Detailed analysis | Full nested profile data in one dataset item |
| 🗂️ `split` | Working with posts/related profiles separately | Profile rows plus separate datasets for extra items |

### How many profiles can it scrape? 📏

You can enter a small list or process many profiles from a dataset. The default maximum is `1000` profiles per run, and the input schema allows up to `100000`.

Actual results can vary because Instagram changes often and some profiles may be private, missing, blocked, rate-limited, or unavailable. For the best estimate, run a small test first, then scale up. 🧪

### How much will it cost? 💰

Cost depends on:

- 🔢 Number of profiles
- ⚙️ Whether optional enrichments are enabled
- 🌐 Whether proxies are used
- 🖥️ Whether browser mode is needed
- 🔁 How many retries you allow
- 📦 Size of the output dataset

The default setup is designed to be inexpensive: HTTP-only, no proxy, compact output, no latest posts, no related profiles, no about-profile enrichment, and no retries. 🪙

For the cheapest workflow, start with the defaults, test a small batch, then increase the profile count once you are happy with the result quality. ✅

### During the run 🏃

While the Actor runs, it:

1. 🧹 Cleans and deduplicates your profile inputs
2. 🌐 Visits each public profile
3. 🧠 Extracts available public profile data
4. 📦 Saves results to the dataset
5. 🧾 Saves a run summary to the key-value store

The summary includes counts for succeeded, failed, blocked, skipped, not found, and invalid profiles. 📊

### Integrations 🔌

You can use the results almost anywhere:

- 📊 Google Sheets
- 🧩 Make
- ⚡ Zapier
- 🛠️ n8n
- 🌬️ Airbyte
- 📁 Google Drive
- 🔔 Webhooks
- 🧑‍💻 Apify API
- 🐍 Python
- 🟨 Node.js
- 🗃️ BI tools and dashboards

### Is it legal to scrape Instagram profiles? ⚖️

This Actor is designed to collect only information that is publicly visible. It does not access private profiles, does not log in, does not accept cookies, and does not bypass restrictions. 🔒

That said, public profile data can still include personal data. You are responsible for using the data lawfully and ethically, following applicable privacy laws, platform rules, and your own legal obligations. When in doubt, ask a qualified legal professional. ✅

### Tips for better results 🧠

- ✅ Use clean usernames or full profile URLs
- ✅ Start with a small test run before large jobs
- ✅ Keep default settings for low-cost collection
- ✅ Enable latest posts only when you really need content previews
- ✅ Enable proxy or browser fallback only when success rate matters more than cost
- ✅ Use `compact` output for CSV and spreadsheet workflows
- ✅ Use `full` output when you want the richest single profile record
- ✅ Use `split` output when you plan to analyze profile, post, and related-profile data separately

### Troubleshooting 🛠️

| Problem | What it usually means | What to try |
| --- | --- | --- |
| 🚫 Profile is blocked | Instagram limited access during the run | Lower concurrency, reduce request rate, enable proxy, or retry later |
| 🔒 Profile is private | The account is not public | Private content cannot be scraped |
| ❓ Profile is missing | Username does not exist or changed | Check the username in a browser |
| 🎞️ No latest posts | Latest posts were disabled, unavailable, or blocked | Enable latest posts and try a small test |
| 🧾 Output is too large | Full data or optional enrichments are enabled | Use `compact` mode |
| 🕵️ About data missing | Instagram did not expose it publicly | This is normal for many profiles |

### FAQ 🙋

#### Can I scrape private Instagram profiles? 🔐

No. This Actor only works with public profile information.

#### Do I need Instagram login details? 🍪

No. The Actor does not use Instagram login, cookies, or private session data.

#### Can I scrape latest posts? 🎞️

Yes. Turn on `includeLatestPosts` and choose how many previews to collect with `maxLatestPostsPerProfile`.

#### Can I scrape contact information? 📬

The Actor extracts public contact clues only when they are listed publicly, such as emails in a bio, domains from public links, mailto links, phone numbers, WhatsApp links, or public business contact fields.

#### Can I compare profiles over time? 🔁

Yes. Run the Actor again later and use `enableChangeDetection` with a previous dataset ID.

#### Can I use this with Google Sheets? 📊

Yes. Download results as CSV or Excel, or connect the Actor through Apify integrations, Make, Zapier, n8n, or the Apify API.

#### What happens if a profile fails? 🧭

The Actor can add an error-style dataset item with a clear status such as `not_found`, `blocked`, `failed`, or `skipped`, so you can see what happened instead of wondering why a profile is missing.

### Need help or want a feature? 💬

Use the Actor's **Issues** tab in Apify Console to report bugs, request improvements, or share feedback. Clear examples help a lot: include your input settings, what you expected, and what happened. 🧡

# Actor input Schema

## `profileInputs` (type: `array`):

Usernames, profile URLs, or numeric profile IDs. Examples: `nasa`, `@nasa`, `https://www.instagram.com/nasa/`, `528817151`.

## `inputDatasetId` (type: `string`):

Optional Apify dataset ID to read profile targets from. Leave empty when entering profiles above.

## `inputDatasetField` (type: `string`):

Field name in the input dataset that contains a username, URL, or profile ID.

## `maxProfiles` (type: `integer`):

Maximum number of unique normalized profiles to process.

## `includeAbout` (type: `boolean`):

Fetch account-history metadata such as joined date, country, verification date, and former username count when publicly available. This can increase runtime and cost.

## `includeLatestPosts` (type: `boolean`):

Include recent public post/reel/carousel preview metadata. Disabled by default to keep runs as cheap as possible.

## `maxLatestPostsPerProfile` (type: `integer`):

Maximum number of latest public posts/reels/carousels to include per profile.

## `includeLatestIgtvVideos` (type: `boolean`):

Include latest public IGTV/video preview metadata where available.

## `maxLatestIgtvVideosPerProfile` (type: `integer`):

Maximum number of latest public IGTV/video previews to include per profile. Keep at 0 for the lowest cost.

## `includeRelatedProfiles` (type: `boolean`):

Include related or suggested public profiles where available. Disabled by default to reduce output size and runtime.

## `maxRelatedProfiles` (type: `integer`):

Maximum number of related or suggested profiles to include per profile. Keep at 0 for the lowest cost.

## `includeExternalUrls` (type: `boolean`):

Extract public external websites and bio links.

## `resolveExternalUrls` (type: `boolean`):

Follow Instagram-shimmed links to their final destination URL. This adds network requests and may increase runtime.

## `externalUrlTimeoutSecs` (type: `integer`):

Maximum time to spend resolving each external URL.

## `includeContactInfo` (type: `boolean`):

Extract emails, phone numbers, mailto links, WhatsApp links, and business contact fields only when publicly listed.

## `outputMode` (type: `string`):

Choose compact spreadsheet-friendly rows, full nested records, or split datasets for profiles/posts/related profiles. Compact is the cheapest default.

## `pushErrorRecords` (type: `boolean`):

Add a dataset item for profiles that are not found, private, blocked, or failed after retries.

## `enableChangeDetection` (type: `boolean`):

Compare current records to a previous dataset.

## `baselineDatasetId` (type: `string`):

Previous dataset ID used for change detection.

## `crawlerMode` (type: `string`):

HTTP only is the cheapest default. Auto can improve success by using browser fallback, but it may cost more.

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

Maximum number of profiles processed at the same time. Higher values can finish sooner but may increase blocking risk.

## `maxRequestRetries` (type: `integer`):

Maximum retry attempts per profile. The default 0 avoids extra requests and keeps runs cheap.

## `maxRequestsPerMinute` (type: `integer`):

Soft request-rate limit for profile fetching. Lower this if you enable retries, proxy, or browser fallback.

## `requestDelayMillis` (type: `integer`):

Optional per-request delay in milliseconds.

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

Configure Apify Proxy or custom proxy URLs. Disabled by default for the lowest possible cost; enable proxies when success rate matters more than cost.

## `saveRawResponses` (type: `boolean`):

Save sanitized raw profile responses to key-value store for debugging. Avoid enabling in production unless needed.

## `debugLog` (type: `boolean`):

Enable verbose structured logs.

## `failFast` (type: `boolean`):

Stop the run on the first unrecoverable error instead of pushing error records.

## `onlyPublicData` (type: `boolean`):

The Actor is designed to collect only public profile information. Keep enabled.

## Actor input object example

```json
{
  "profileInputs": [
    "nasa",
    "instagram"
  ],
  "inputDatasetId": "",
  "inputDatasetField": "username",
  "maxProfiles": 1000,
  "includeAbout": false,
  "includeLatestPosts": false,
  "maxLatestPostsPerProfile": 0,
  "includeLatestIgtvVideos": false,
  "maxLatestIgtvVideosPerProfile": 0,
  "includeRelatedProfiles": false,
  "maxRelatedProfiles": 0,
  "includeExternalUrls": true,
  "resolveExternalUrls": false,
  "externalUrlTimeoutSecs": 8,
  "includeContactInfo": true,
  "outputMode": "compact",
  "pushErrorRecords": true,
  "enableChangeDetection": false,
  "baselineDatasetId": "",
  "crawlerMode": "httpOnly",
  "maxConcurrency": 10,
  "maxRequestRetries": 0,
  "maxRequestsPerMinute": 600,
  "requestDelayMillis": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "saveRawResponses": false,
  "debugLog": false,
  "failFast": false,
  "onlyPublicData": true
}
```

# Actor output Schema

## `profiles` (type: `string`):

Main dataset containing one profile result or error record per normalized input.

## `runSummary` (type: `string`):

Run-level summary stored in the default key-value store.

## `failedRequests` (type: `string`):

Optional failed-request diagnostics.

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

// Run the Actor and wait for it to finish
const run = await client.actor("qaseemiqbal/instagram-profile-scraper-pro").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 = { "profileInputs": [
        "nasa",
        "instagram",
    ] }

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "instagram profile scraper pro",
        "description": "Extract clean public Instagram profile data from usernames, profile URLs, or profile IDs. Get followers, bio, links, public contact clues, business signals, and profile status in a ready-to-download dataset.",
        "version": "1.0",
        "x-build-id": "7yt67jAaTsUIy8xnv"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/qaseemiqbal~instagram-profile-scraper-pro/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-qaseemiqbal-instagram-profile-scraper-pro",
                "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/qaseemiqbal~instagram-profile-scraper-pro/runs": {
            "post": {
                "operationId": "runs-sync-qaseemiqbal-instagram-profile-scraper-pro",
                "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/qaseemiqbal~instagram-profile-scraper-pro/run-sync": {
            "post": {
                "operationId": "run-sync-qaseemiqbal-instagram-profile-scraper-pro",
                "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",
                "properties": {
                    "profileInputs": {
                        "title": "Instagram profiles",
                        "type": "array",
                        "description": "Usernames, profile URLs, or numeric profile IDs. Examples: `nasa`, `@nasa`, `https://www.instagram.com/nasa/`, `528817151`.",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 300
                        },
                        "default": [
                            "nasa"
                        ]
                    },
                    "inputDatasetId": {
                        "title": "Input dataset ID",
                        "type": "string",
                        "description": "Optional Apify dataset ID to read profile targets from. Leave empty when entering profiles above.",
                        "default": ""
                    },
                    "inputDatasetField": {
                        "title": "Input dataset field",
                        "type": "string",
                        "description": "Field name in the input dataset that contains a username, URL, or profile ID.",
                        "default": "username"
                    },
                    "maxProfiles": {
                        "title": "Maximum profiles",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of unique normalized profiles to process.",
                        "default": 1000
                    },
                    "includeAbout": {
                        "title": "Include About profile metadata",
                        "type": "boolean",
                        "description": "Fetch account-history metadata such as joined date, country, verification date, and former username count when publicly available. This can increase runtime and cost.",
                        "default": false
                    },
                    "includeLatestPosts": {
                        "title": "Include latest posts",
                        "type": "boolean",
                        "description": "Include recent public post/reel/carousel preview metadata. Disabled by default to keep runs as cheap as possible.",
                        "default": false
                    },
                    "maxLatestPostsPerProfile": {
                        "title": "Maximum latest posts per profile",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of latest public posts/reels/carousels to include per profile.",
                        "default": 0
                    },
                    "includeLatestIgtvVideos": {
                        "title": "Include latest IGTV/videos",
                        "type": "boolean",
                        "description": "Include latest public IGTV/video preview metadata where available.",
                        "default": false
                    },
                    "maxLatestIgtvVideosPerProfile": {
                        "title": "Maximum IGTV/videos per profile",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of latest public IGTV/video previews to include per profile. Keep at 0 for the lowest cost.",
                        "default": 0
                    },
                    "includeRelatedProfiles": {
                        "title": "Include related profiles",
                        "type": "boolean",
                        "description": "Include related or suggested public profiles where available. Disabled by default to reduce output size and runtime.",
                        "default": false
                    },
                    "maxRelatedProfiles": {
                        "title": "Maximum related profiles",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of related or suggested profiles to include per profile. Keep at 0 for the lowest cost.",
                        "default": 0
                    },
                    "includeExternalUrls": {
                        "title": "Include external URLs",
                        "type": "boolean",
                        "description": "Extract public external websites and bio links.",
                        "default": true
                    },
                    "resolveExternalUrls": {
                        "title": "Resolve external URLs",
                        "type": "boolean",
                        "description": "Follow Instagram-shimmed links to their final destination URL. This adds network requests and may increase runtime.",
                        "default": false
                    },
                    "externalUrlTimeoutSecs": {
                        "title": "External URL timeout",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Maximum time to spend resolving each external URL.",
                        "default": 8
                    },
                    "includeContactInfo": {
                        "title": "Extract public contact info",
                        "type": "boolean",
                        "description": "Extract emails, phone numbers, mailto links, WhatsApp links, and business contact fields only when publicly listed.",
                        "default": true
                    },
                    "outputMode": {
                        "title": "Output mode",
                        "enum": [
                            "compact",
                            "full",
                            "split"
                        ],
                        "type": "string",
                        "description": "Choose compact spreadsheet-friendly rows, full nested records, or split datasets for profiles/posts/related profiles. Compact is the cheapest default.",
                        "default": "compact"
                    },
                    "pushErrorRecords": {
                        "title": "Push error records",
                        "type": "boolean",
                        "description": "Add a dataset item for profiles that are not found, private, blocked, or failed after retries.",
                        "default": true
                    },
                    "enableChangeDetection": {
                        "title": "Enable change detection",
                        "type": "boolean",
                        "description": "Compare current records to a previous dataset.",
                        "default": false
                    },
                    "baselineDatasetId": {
                        "title": "Baseline dataset ID",
                        "type": "string",
                        "description": "Previous dataset ID used for change detection.",
                        "default": ""
                    },
                    "crawlerMode": {
                        "title": "Crawler mode",
                        "enum": [
                            "auto",
                            "httpOnly",
                            "browserOnly"
                        ],
                        "type": "string",
                        "description": "HTTP only is the cheapest default. Auto can improve success by using browser fallback, but it may cost more.",
                        "default": "httpOnly"
                    },
                    "maxConcurrency": {
                        "title": "Maximum concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of profiles processed at the same time. Higher values can finish sooner but may increase blocking risk.",
                        "default": 10
                    },
                    "maxRequestRetries": {
                        "title": "Maximum request retries",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum retry attempts per profile. The default 0 avoids extra requests and keeps runs cheap.",
                        "default": 0
                    },
                    "maxRequestsPerMinute": {
                        "title": "Maximum requests per minute",
                        "minimum": 1,
                        "maximum": 6000,
                        "type": "integer",
                        "description": "Soft request-rate limit for profile fetching. Lower this if you enable retries, proxy, or browser fallback.",
                        "default": 600
                    },
                    "requestDelayMillis": {
                        "title": "Delay between requests",
                        "minimum": 0,
                        "maximum": 60000,
                        "type": "integer",
                        "description": "Optional per-request delay in milliseconds.",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Configure Apify Proxy or custom proxy URLs. Disabled by default for the lowest possible cost; enable proxies when success rate matters more than cost.",
                        "default": {
                            "useApifyProxy": false
                        }
                    },
                    "saveRawResponses": {
                        "title": "Save raw responses",
                        "type": "boolean",
                        "description": "Save sanitized raw profile responses to key-value store for debugging. Avoid enabling in production unless needed.",
                        "default": false
                    },
                    "debugLog": {
                        "title": "Debug logging",
                        "type": "boolean",
                        "description": "Enable verbose structured logs.",
                        "default": false
                    },
                    "failFast": {
                        "title": "Fail fast",
                        "type": "boolean",
                        "description": "Stop the run on the first unrecoverable error instead of pushing error records.",
                        "default": false
                    },
                    "onlyPublicData": {
                        "title": "Only collect public data",
                        "type": "boolean",
                        "description": "The Actor is designed to collect only public profile information. Keep enabled.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
