# Instagram Profile Scraper (`socialdataapi/instagram-profile-scraper`) Actor

Instagram Profile Scraper extracts public Instagram profiles in bulk from usernames or URLs: followers, following, post count, bio, external links, verification status, business category, related profiles and latest posts. No login or cookies. Export to JSON, CSV or Excel, or use via API.

- **URL**: https://apify.com/socialdataapi/instagram-profile-scraper.md
- **Developed by:** [Social Data API](https://apify.com/socialdataapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Instagram Profile Scraper — Bio, Followers, Links and Latest Posts

Instagram Profile Scraper pulls public profile data from Instagram for any username, @handle or profile link. Each result gives the bio, follower and following counts, post count, verified and business badges, bio links, profile photo, the latest posts with likes and comments, and related accounts. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed an influencer marketing pipeline. **No Instagram account or cookies needed.** Start with one creator, then scale to your whole shortlist.

![Instagram Profile Scraper output: bio, followers, post count, verified badge and latest posts as JSON](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/g-instagram-profile-hero.webp)

***

### What data can I extract with Instagram Profile Scraper?

Using this Instagram Profile API, you will be able to extract the following Instagram profile data:

| 👤 Username and full name | 📝 Biography | 👥 Follower count | ➕ Following count |
| --- | --- | --- | --- |
| 📷 Post count (rounded by Instagram for very large accounts) | ✅ Verified badge | 🏢 Business account flag | 🔒 Private account flag |
| 🔗 Main bio link and Instagram-wrapped link | 🧾 All bio links with titles | 🖼️ Profile photo (standard and HD) | 🆔 Account ID and linked Facebook ID |
| 🎞️ Latest posts (up to 12) with caption, hashtags, mentions, likes, comments, time and images | 🧩 Carousel items inside each post | 🤝 Related profiles (if shown) | 📺 IGTV videos and IGTV count (if any) |
| 🌐 Profile URL and your input as a URL | 📅 About section: joined date and country (currently always empty) | | |

***

### How to use Instagram Profile Scraper

Influencer marketers, growth teams and researchers use it as an instagram user data scraper: one clean record per profile from a single run, for as many profiles as they list.

**Copy to your AI assistant:**

```text
Instagram Profile Scraper is an Apify Actor that returns public Instagram profile data as structured JSON: username, full name, biography, follower count, following count, post count, verified and business badges, bio links, and up to 12 latest posts. Use it whenever someone needs Instagram profiles without cookies, a login, or a browser - vetting influencers, building creator lead lists, and benchmarking competitor accounts. Inputs: startUrls (array of strings, profile URLs, usernames or @handles; post, reel and story links are skipped; required), includeAboutSection (boolean, adds an about object with joined date and country, which currently come back null; default false), proxyConfiguration (object, Apify proxy settings; when off or left out, retries use an automatic residential proxy). Each profile gives one row and one row_result event; profiles that are missing or blocked give no row and are not charged. Each profile returns at most 12 latest posts; counts Instagram does not show come back as null.
```

#### Instagram Profile Scraper MCP Server: use these Actors from ChatGPT, Claude or Cursor

Point your AI assistant at Apify's MCP server and it can find and run this Actor on its own through the server's search, add and call actor tools. No glue code, no scraping logic in your prompts.

```bash
claude mcp add --transport http apify "https://mcp.apify.com"
```

#### Step by step

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open Instagram Profile Scraper in the Apify Store.
3. Enter the Instagram profile URL, username or @handle (with or without @), one per line.
4. Click **Start** (or send your API request).
5. Download or stream your results in JSON, CSV or Excel.

#### How to scale Instagram Profile Scraper to bulk

For a bulk Instagram profile lookup, put every profile in the profile list of one run. The Actor works on 16 profiles at a time and saves each result in your input order as soon as it is ready, so you can watch the dataset fill up. Duplicates are removed, and post, reel and story links are skipped with a warning. Each saved profile is one `row_result` event, and profiles that fail are not charged. For recurring checks, save the input as a task and schedule it, or call the Actor in a loop from your own code.

***

### ✨ Features

Instagram Profile Scraper fetches clean, structured profiles from Instagram ⚡. It's ideal for instagram influencer vetting, creator lead lists, competitor benchmarking and audience research.

It extracts, per profile:

- **Follower count** – how many people follow the account
- **Biography** – the bio text, including any contact line the owner wrote
- **Bio links** – the main link plus every titled link, as an instagram bio link extractor would list them
- **Verified and business badges** – an instagram business account checker in the same row
- **Latest posts** – up to 12 posts with caption, likes, comments and time
- **Related profiles** – accounts Instagram suggests next to this one
- **Account ID and Facebook ID** – the identifiers an instagram account info extractor should return

⚡ Reads only public data, with no Instagram account, cookies or browser on your side.

***

### Use cases 💡

- **Influencer marketer** — shortlist creators by follower count, verified badge and bio keywords.
- **Sales team** — scrape instagram profiles of brands, then pull their bio links for outreach.
- **Competitor analyst** — compare post counts and latest-post likes across rival accounts.
- **Agency** — export instagram profile data to csv for weekly client reports.
- **AI engineer** — feed bios and captions into a RAG index for creator search.

Building an AI agent? [Connect Instagram Profile Scraper over MCP](#mcp-integration-for-ai-agents) and let it call the actor on its own.

***

### Why choose this actor?

- **Several profiles in seconds.** A recorded run took 3 profiles (one of them missing) and saved 2 full profiles in 4.2 seconds, with the missing one reported and not charged.
- **The numbers behind each account.** A recorded National Geographic profile came back with 268,448,167 followers, 39 related profiles, 2 bio links and 12 latest posts with likes and comments.
- **23 fields, one row per profile.** Bio, counts, badges, links, photos, posts, carousel items, related profiles and IGTV data arrive in one record, with null where Instagram shows nothing.

***

### ⬇️ Input

![Instagram Profile Scraper input: profile URLs, usernames or handles and the about-section option](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/g-instagram-profile-input.webp)

The Actor takes a list of Instagram profiles: profile URLs, usernames or @handles. The profile list is the only required field.

| Parameter | Required | Type | Description | Example value |
| --- | --- | --- | --- | --- |
| `startUrls` | Yes | array of strings | Profiles to scrape. Accepts `https://www.instagram.com/username/`, `username` or `@username`. Post, reel and story links are skipped; duplicates are removed. | `["https://www.instagram.com/humansofny/", "@natgeo"]` |
| `includeAboutSection` | No | boolean | Adds an `about` object with joined date and country. Instagram shows these only to logged-in visitors, so both are currently null. Default: `false`. | `true` |
| `proxyConfiguration` | No | object (proxy) | Proxy used for retries. Pre-filled as off; off or left out means an automatic residential proxy on retries. Your own Apify proxy groups or proxy URLs are used instead when set. | `{"useApifyProxy": false}` |

Accepted profile formats:

- `https://www.instagram.com/natgeo/`
- `instagram.com/natgeo`
- `natgeo` or `@natgeo`

#### Example input

```json
{
  "startUrls": [
    "https://www.instagram.com/humansofny/",
    "@natgeo",
    "thisuserdoesnotexist_zz9q71",
    "https://www.instagram.com/p/DPwJzEVDbwC/"
  ],
  "includeAboutSection": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

***

### ⬆️ Output

![Instagram Profile Scraper output: one row per profile with counts, links, latest posts and related profiles](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/g-instagram-profile-output.webp)

Every profile is one typed, normalized JSON item with the same schema on every run; profiles that are missing or blocked are logged and produce no item. Export as JSON (default), CSV or Excel.

#### Example output

```json
{
  "inputUrl": "https://www.instagram.com/natgeo",
  "id": "787132",
  "username": "natgeo",
  "url": "https://www.instagram.com/natgeo",
  "fullName": "National Geographic",
  "biography": "Step into wonder and find your inner explorer with National Geographic 🌎",
  "externalUrls": [
    {
      "title": "",
      "lynx_url": "https://l.instagram.com/?u=http%3A%2F%2Fvisitstore.bio%2Fnatgeo&e=AUDJDOzfobNsrLe-fKXcEC9MpoUGI4gRhffufyuiYk-WDTUliQ93GtU39rtX3s7ZfnoCcJQScaVy7Z17TdQyyY45Yxv7dck2R8LwwZy9YYfiarzqBN5DN2JqGpLo0kZmNUSeI2kHoIRf_Adp0rxVeZ98yiM",
      "url": "http://visitstore.bio/natgeo",
      "link_type": "external"
    },
    {
      "title": "Subscribe Here!",
      "lynx_url": "https://l.instagram.com/?u=https%3A%2F%2Fngmdomsubs.nationalgeographic.com%2Fservlet%2FOrdersGateway%3Fcds_mag_code%3DNGM%26cds_page_id%3D283562%26cds_response_key%3DI5FX10002&e=AUBxIye4bUpjNB4ii-y9ljZPqlMeXznEY1Mclk2iRPb9--d-oqvz3QzDe5wOcJb2D-OVqRheEGkDJhqwGKKtuN_8X-urErF_E0EbbZgfPL8X4qOWQjaU2xsoY8Kc8SG_d0s1PCi8IiEkRwLrUsBjrJOTTbc",
      "url": "https://ngmdomsubs.nationalgeographic.com/servlet/OrdersGateway?cds_mag_code=NGM&cds_page_id=283562&cds_response_key=I5FX10002",
      "link_type": "external"
    }
  ],
  "externalUrl": "http://visitstore.bio/natgeo",
  "externalUrlShimmed": "https://l.instagram.com/?u=http%3A%2F%2Fvisitstore.bio%2Fnatgeo&e=AUAwgKHHJPyIXW9hFicCPMlBfjsFZ2UZ15KgJceUKSm9pDqT8b4a0YbG-1XZ7XQ85JeCAUgDmZ3iabYqjZniHV26Fx-f1qJAuy56D-7ZzJzyKKQlGO8OCJIVrBicfAP5BfkJk-6M3VAXZTyALpWvpzadCyI",
  "followersCount": 268448167,
  "followsCount": 194,
  "postsCount": 32000,
  "verified": true,
  "isBusinessAccount": true,
  "private": false,
  "profilePicUrl": "https://scontent.cdninstagram.com/v/t51.82787-19/683576066_18653628823019133_9051036240972105113_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=1&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy40MDAuQzMifQ%3D%3D&_nc_ohc=LCa7rBNh2dYQ7kNvwGWYVRU&_nc_oc=AdrNye9gMXZSLWo4O4U1Txpd5gdih8FviDFJCN1PFlZOU6JMVFLI0BgQI_jme9IPHuQ&_nc_zt=24&_nc_ht=scontent.cdninstagram.com&_nc_gid=C9nar3GoeP7F88LEwCEavw&_nc_ss=7b689&oh=00_AQOONZhczpwwVLsoTF50IkWDKbSxsIN35q9d5GoynaJwaw&oe=6AC93D6B",
  "profilePicUrlHD": "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.82787-19/683576066_18653628823019133_9051036240972105113_n.jpg?stp=dst-jpg_s320x320_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby40MDAuYzIifQ&_nc_ht=instagram.fdac8-1.fna.fbcdn.net&_nc_cat=1&_nc_oc=Q6cZ2gGQOl5fFHstAcn2p9S6PlXKYnPNJA3tNBKyWzMpxRkLw2by6gZc2884sk2XPX_SIoc&_nc_ohc=pU_7LWxLi-QQ7kNvwE_dCUx&_nc_gid=lT4A9ybo_Rw8UsuUlVgWbg&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQPzkH-BByT5voFCl0J8BzvasH36GwZxEIc0WXsKnW4RcA&oe=6AC93D6B&_nc_sid=8b3546",
  "latestPosts": [
    {
      "id": "3999518748855536783",
      "type": "Sidecar",
      "shortCode": "DeBJRyaDIyP",
      "caption": "Presented by @Rolex. When the millionaire who owned the world's largest rhino herd ran out of money, the conservationists who took over responsibility for the herd in 2023 had an audacious idea: split 2,000 southern white rhinos into smaller groups and seed them across Africa. The goal is to protect them from poachers and ensure the species has the best chance of survival. While the plan is working, their mission is far from over. \n\nThrough its partnership with the National Geographic Society and as part of its Perpetual Planet Initiative, #Rolex supports expeditions exploring and protecting remarkable places around the world, a selection of which are featured in #AfricaEarthsWildHome. #PerpetualPlanet\n\nLearn more about this historic plan to save the white rhino at the link in bio.\n\nPhotographs by @brentstirton",
      "hashtags": [
        "Rolex",
        "AfricaEarthsWildHome",
        "PerpetualPlanet"
      ],
      "mentions": [
        "Rolex",
        "brentstirton"
      ],
      "url": "https://www.instagram.com/p/DeBJRyaDIyP/",
      "commentsCount": 320,
      "likesCount": 124271,
      "timestamp": "2026-10-04T01:00:01Z",
      "images": [
        "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.82787-15/830281680_18703676641019133_4340940660944905612_n.jpg?stp=dst-jpg_e35_s1080x1080_sh2.08_tt6&_nc_cat=1&ig_cache_key=Mzk5OTUxODY4OTgyNDg4MzQwNA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMTQzOS5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=dINDg50q700Q7kNvwG05oTZ&_nc_oc=Ado_Fiqov42v2uDASwWw30t3ZlY175KCkf2cTOnispxsXrmSWs8JC3JaBQw4kBd3n6Q&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=instagram.fdac8-1.fna&_nc_gid=3kEhpop20d3mw1J1yFb3_g&_nc_ss=7a3ba&oh=00_AQPplg84NTw9CHFADfsDfGg0thT2eEGnn0bnkuwvGho90A&oe=6AC952F3",
        "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.82787-15/834800738_18703676638019133_4815829723074038505_n.jpg?stp=dst-jpg_e35_s1080x1080_sh2.08_tt6&_nc_cat=1&ig_cache_key=Mzk5OTUxODY4OTA2MTU2MTY5OQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMTQzOS5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=6MOHIqKImKMQ7kNvwH6HBey&_nc_oc=Adq-itaPSjIyovA-oWXtG3F15vLxfJqQT3Sjt92TMrY-Um1mqUpcJopQAd7H4Zh3Lc4&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=instagram.fdac8-1.fna&_nc_gid=3kEhpop20d3mw1J1yFb3_g&_nc_ss=7a3ba&oh=00_AQOWcYxb_fFX4VwMcVMZ34zPtthh0A11-ljPaqczBp_TgA&oe=6AC9584D"
      ],
      "childPosts": [
        {
          "id": "3999518689824883404",
          "type": "Image",
          "shortCode": "DeBJQ7bjELM",
          "caption": "",
          "hashtags": [],
          "mentions": [],
          "url": "https://www.instagram.com/p/DeBJQ7bjELM/",
          "commentsCount": null,
          "likesCount": null,
          "timestamp": "2026-10-04T01:00:01Z",
          "images": [
            "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.82787-15/830281680_18703676641019133_4340940660944905612_n.jpg?stp=dst-jpg_e35_s1080x1080_sh2.08_tt6&_nc_cat=1&ig_cache_key=Mzk5OTUxODY4OTgyNDg4MzQwNA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMTQzOS5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=dINDg50q700Q7kNvwG05oTZ&_nc_oc=Ado_Fiqov42v2uDASwWw30t3ZlY175KCkf2cTOnispxsXrmSWs8JC3JaBQw4kBd3n6Q&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=instagram.fdac8-1.fna&_nc_gid=3kEhpop20d3mw1J1yFb3_g&_nc_ss=7a3ba&oh=00_AQPplg84NTw9CHFADfsDfGg0thT2eEGnn0bnkuwvGho90A&oe=6AC952F3"
          ],
          "childPosts": []
        }
      ]
    }
  ],
  "relatedProfiles": [
    {
      "id": "378353537",
      "full_name": "Animal Planet",
      "is_verified": true,
      "profile_pic_url": "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.2885-19/471307838_1123917355849999_3742640417869698375_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby44MDAuYzIifQ&_nc_ht=instagram.fdac8-1.fna.fbcdn.net&_nc_cat=107&_nc_oc=Q6cZ2gGQOl5fFHstAcn2p9S6PlXKYnPNJA3tNBKyWzMpxRkLw2by6gZc2884sk2XPX_SIoc&_nc_ohc=tR2yFmUD9UEQ7kNvwG4kxWu&_nc_gid=lT4A9ybo_Rw8UsuUlVgWbg&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQMCcPjEbiGI5ZQRqWSriZV2BS3kA9WZgbqTp4bjfNAZXg&oe=6AC92883&_nc_sid=8b3546",
      "username": "animalplanet",
      "is_private": false
    }
  ],
  "latestIgtvVideos": [
    {
      "id": "2971627561827723365",
      "shortCode": "Ck9V4XrgGhl",
      "displayUrl": "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.71878-15/640454960_1583270752953341_8904296709682790794_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=instagram.fdac8-1.fna.fbcdn.net&_nc_cat=105&_nc_oc=Q6cZ2gGQOl5fFHstAcn2p9S6PlXKYnPNJA3tNBKyWzMpxRkLw2by6gZc2884sk2XPX_SIoc&_nc_ohc=Cwo8GRALEnYQ7kNvwHJQOzX&_nc_gid=lT4A9ybo_Rw8UsuUlVgWbg&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQP0YS5Y4Ew5syXSFJZfgZiAh_9QBr6ISbN6y5WIrGHkag&oe=6AC92D3D&_nc_sid=8b3546",
      "dimensions": {
        "height": 1920,
        "width": 1080
      },
      "timestamp": "2022-11-14T22:41:30Z"
    }
  ],
  "igtvVideoCount": 90,
  "fbid": "17841400573960012",
  "about": {
    "joinedDate": null,
    "country": null
  }
}
```

***

### How does it work?

The Actor reads the same public pages and data the Instagram site loads for a logged-out visitor. It makes plain HTTP requests, with no browser, and it never logs in or uses cookies, so it only returns what anyone can see on a public profile. Each profile is first requested directly. When Instagram blocks or slows a request, the Actor waits briefly and tries again, up to three attempts in total, switching to a proxy for the retries. If part of a profile cannot be read, the fields Instagram did show are still returned and the missing ones come back empty. Results are normalized into one stable schema before they are saved, so your code keeps working when Instagram changes its page design. A profile that still fails is logged with a plain reason and skipped, and the rest of the run continues.

***

### How do you integrate Instagram Profile Scraper into your stack?

It works with what you already use: the REST API from any language, MCP for AI agents, and no-code tools.

#### MCP integration for AI agents

Register Apify's hosted MCP server once, and your agent can search the Apify Store, add this Actor and call it with a list of profiles:

```bash
claude mcp add --transport http apify "https://mcp.apify.com"
```

This registers Instagram Profile Scraper as a tool your agent can call directly. It works in Claude Code, Cursor and Windsurf, and the agent gets the same JSON fields described above for every profile it looks up.

#### No-code tools (n8n, Make, LangChain)

In n8n, add the Apify node and choose "Run an Actor", or use the HTTP Request node pointed at the Actor's run-sync endpoint with your Apify token. Map the profile list from an earlier step.

In Make, use the Apify app's "Run an Actor" module, then "Get Dataset Items" to pass each profile to the next module.

In LangChain, install `langchain-apify` and wrap this Actor with `ApifyActorsTool`, so an agent can look up Instagram profiles mid-conversation.

***

### Is it legal to scrape Instagram data?

Scraping publicly available Instagram data is generally lawful when you collect only what any visitor can see. This Actor returns only publicly available data — what any user sees without logging in. Under GDPR, collecting public data is generally permissible, but storing and using it, especially names, bios and photos of identifiable people, must comply with local data-protection law. Instagram's own terms also limit automated access. Consult legal counsel if your use case involves bulk storage of personal data.

***

### Frequently asked questions

#### What fields does Instagram Profile Scraper return?

It returns the username, biography, follower count, following count and post count, plus badges, bio links, latest posts and related profiles. See [the data fields section](#what-data-can-i-extract-with-instagram-profile-scraper) for the full list.

#### Does Instagram Profile Scraper require an Instagram account or login?

No. Only public profile data is extracted, and the input has no login, cookie or session field. No credentials are needed.

#### How fast does Instagram Profile Scraper run?

A recorded run saved 2 profiles and reported 1 missing profile in 4.2 seconds. Data is fetched live on every run, not from a cache.

#### What happens if a profile is private or doesn't exist?

A missing profile is logged as "profile not found or unavailable", produces no item and is not charged. Post, reel and story links are skipped with a warning, and a run with no valid profile at all stops with a clear status message. In code, compare the usernames you sent with the usernames in the dataset to find the ones that failed.

#### Can I scrape multiple Instagram profiles at once?

Yes. Put every profile in the profile list; the Actor works on 16 at a time and saves each one in your input order.

#### Does Instagram Profile Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes — Instagram Profile Scraper is available as an MCP tool through Apify's MCP server. Register it in Claude Code, Cursor or Windsurf with `claude mcp add --transport http apify "https://mcp.apify.com"`. Any agent that can call an HTTP endpoint can use the Apify REST API directly.

#### Does Instagram Profile Scraper return data in a format LLMs can use directly?

Yes. It returns typed, normalized JSON with consistent field names. There is no HTML parsing and no selectors; pass it straight to an LLM, index it into a vector store, or feed it to an agent tool.

#### What happens when Instagram changes its layout or updates its anti-bot system?

The Actor is maintained. When Instagram changes, the Actor is updated, and your calls keep returning the same JSON schema with no changes on your end.

#### Can I use Instagram Profile Scraper without managing proxies or browser infrastructure?

Yes. Retries and the switch to a proxy run on the Actor's side, and no browser is used. You send a list of profiles and get structured JSON back, with no proxy account to set up.

#### Which Instagram profile fields work best for AI training data and RAG indexing?

For RAG, index the biography and the captions of the latest posts. For training data, use the follower count, following count, post count and the verified, business and private flags. Counts are integers and flags are booleans, with null where Instagram shows nothing.

***

### Your feedback

Found a bug or missing a field? Let us know through the Issues tab on this Actor's page. Every report is read, and fixes ship as Instagram changes.

# Actor input Schema

## `startUrls` (type: `array`):

Add one or more Instagram profiles. Accepts a full profile URL (https://www.instagram.com/username/), a bare username or an @handle. Post, reel and story links are skipped, and duplicates are removed. Each profile gives one result. Free plan: up to 20 profiles per run and 200 per month; paid plans have no limit.

## `includeAboutSection` (type: `boolean`):

When on, adds an "about" object with joinedDate and country to each result. Instagram shows these only to logged-in visitors, so both values currently come back null for every profile; the object is still included so your pipeline gets a stable shape.

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

Off (as pre-filled in the form) or left out = automatic residential proxy on retries. Choose Apify proxy groups or add your own proxy URLs to use them for retries instead.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.instagram.com/humansofny/"
  ],
  "includeAboutSection": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped items in the Actor's default dataset.

# 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 = {
    "startUrls": [
        "https://www.instagram.com/humansofny/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("socialdataapi/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 = {
    "startUrls": ["https://www.instagram.com/humansofny/"],
    "proxyConfiguration": { "useApifyProxy": False },
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.instagram.com/humansofny/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call socialdataapi/instagram-profile-scraper --silent --output-dataset

```

## MCP server setup

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

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

## OpenAPI specification

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