# Instagram Full Profile Scraper (`goat255/instagram-full-profile-scraper`) Actor

One call gets it all - profile, recent posts, current stories, highlights, and items inside each highlight. Tunable knobs for posts, stories, highlights, and items per highlight. Built for cold-outreach research and lead enrichment.

- **URL**: https://apify.com/goat255/instagram-full-profile-scraper.md
- **Developed by:** [Goutam Soni](https://apify.com/goat255) (community)
- **Categories:** Social media, Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 28 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $25.00 / 1,000 full profiles

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

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

## What's an Apify Actor?

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 Full Profile Scraper Goat - Profile, Posts, Stories & Highlights in One Call

The all-in-one Instagram scraper. **One call per username** gets you profile data, recent posts, current 24-hour stories, highlight reels, and every item inside each highlight. Perfect for cold-outreach research, CRM enrichment, influencer discovery, and brand monitoring on Instagram - no API key, no login, no cookies.

### What this Instagram Full Profile Scraper does

For every Instagram username you provide, this actor runs the full pipeline and returns a single rich record containing:

1. **Profile** - bio, follower/following counts, public email, public phone, business category, location, verified badge.
2. **Posts** - last N posts with captions, like/comment counts, partnership flags, tagged users, location, media URLs.
3. **Stories** - the current 24-hour story tray (images and videos).
4. **Highlights** - every highlight reel with titles, cover images, item counts.
5. **Highlight items** - every photo/video inside each highlight (configurable depth).

Multi-source failover and rotating residential proxies keep the pipeline running through Instagram's rate limits. Replace 4 separate scrapers and 4 separate runs with **one record per prospect**.

### Why use the Instagram Full Profile Scraper

- **One clean record per prospect** - profile, posts, stories and highlights nested in a single tidy object, ready to drop straight into a spreadsheet or CRM.
- **Predictable pricing** - flat charge per username regardless of how much data is pulled inside.
- **No login, no cookies, no API key** - works on every public Instagram profile.
- **Configurable depth** - tune posts, stories, highlights, and items independently to balance cost vs. completeness.
- **Multi-source failover** - if one upstream source rate-limits, the actor falls back to another automatically.
- **Residential proxies** built in.
- **Public emails + phones** for business profiles extracted automatically.

### What data you get per Instagram username

```json
{
  "username": "example_user",
  "userId": "000000000",
  "profile": {
    "fullName": "Example Account",
    "biography": "...",
    "followerCount": 1000000,
    "followingCount": 100,
    "isVerified": true,
    "publicEmail": "...",
    "category": "Example Category",
    "profilePicUrlHd": "https://..."
  },
  "postsCount": 12,
  "storiesCount": 4,
  "highlightsCount": 5,
  "posts": [
    { "shortcode": "...", "caption": "...", "likeCount": 12345,
      "commentCount": 67, "mediaType": "image", "displayUrl": "https://..." }
  ],
  "stories": [
    { "id": "...", "mediaType": "video", "takenAt": 1714032018,
      "expiringAt": 1714118418, "imageUrl": "...", "videoUrl": "..." }
  ],
  "highlights": [
    { "highlightId": "highlight:...", "title": "Wildlife", "mediaCount": 12,
      "coverImageUrl": "...",
      "items": [ { "imageUrl": "...", "videoUrl": "..." } ] }
  ]
}
```

### How to use the Instagram Full Profile Scraper

1. Click **Try for free** on the actor page.
2. Enter Instagram **usernames** in `usernames` (URLs, @handles, or plain usernames - all accepted).
3. Tune the scope knobs:
   - `postsPerUser` - default 12 (0 = skip posts entirely)
   - `storiesPerUser` - default 0 (all current stories). `-1` = skip
   - `highlightsPerUser` - default 5. `-1` = all
   - `itemsPerHighlight` - default 10. `-1` = all inside each highlight
4. Tune `concurrency` (default 3) and `delayBetweenRequests` (default 1s).
5. Click **Save & start**. Download JSON / CSV / Excel / XML / HTML.

### Input parameters

| Field | Default | Description |
|---|---|---|
| `usernames` | - | Public Instagram usernames, @handles, or profile URLs |
| `postsPerUser` | `12` | Recent posts to fetch. `0` = skip posts |
| `storiesPerUser` | `0` | Stories from the 24h tray. `0` = all current. `-1` = skip |
| `highlightsPerUser` | `5` | How many highlights to include. `0` = skip. `-1` = all |
| `itemsPerHighlight` | `10` | Items inside each highlight. `0` = covers only. `-1` = all |
| `concurrency` | `3` | Usernames processed in parallel |
| `delayBetweenRequests` | `1.0` | Seconds between sub-requests within one username |
| `proxyConfiguration` | residential | Apify proxy settings |

### Top use cases

- **Cold outreach research** - one record per prospect, every field a researcher needs for personalization (recent posts, highlight topics, contact info).
- **CRM lead enrichment** - append Instagram profile + content + contact data to your CRM in bulk.
- **Influencer discovery and vetting** - partnership history (`isPaidPartnership` on posts), engagement rate inputs, content mix.
- **Brand monitoring** - daily snapshot per tracked handle with everything they posted today.
- **OSINT / investigations** - comprehensive profile snapshot at a point in time.
- **Sales prospecting** - find business profiles in a category with email + phone + recent activity to evaluate fit.
- **Recruiting** - source candidates with creator profiles in target categories and check Threads link.

### Integrations

#### Apify API

```bash
curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=json"
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("goat255/instagram-full-profile-scraper").call(run_input={
    "usernames": ["example_user_1", "example_user_2", "example_user_3"],
    "postsPerUser": 12,
    "highlightsPerUser": 5,
    "itemsPerHighlight": 10,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    p = item["profile"]
    print(f"@{item['username']}: {p['followerCount']} followers, {item['postsCount']} posts, {item['highlightsCount']} highlights")
    if p.get("publicEmail"): print(f"  contact: {p['publicEmail']}")
```

#### No-code integrations

Send results to Google Sheets, Slack, Zapier, Make, HubSpot, S3, or any webhook via [Apify Integrations](https://docs.apify.com/platform/integrations).

### Pricing

Pay-per-event, **flat per-username pricing**. One charge per username covers profile + posts + stories + highlights regardless of how much data is pulled.

| Event | Price (tiered by Apify plan) |
|---|---|
| Full profile scraped (primary) | $0.025 - $0.035 |

Apify Diamond/Platinum/Gold subscribers pay $0.025 per profile; Bronze, Silver, and Free tiers pay slightly more. Apify's $5 platform free credit applies on first use.

### FAQ

#### Why is this more expensive than the regular profile scraper?

This actor returns 4-5x more data per username (profile + posts + stories + highlights + inner items). Use this one when you need a complete dossier per prospect. Use the [Instagram Profile Scraper](https://apify.com/goat255/instagram-profile-scraper) when you only need basic profile data.

#### Can I scrape private Instagram accounts?

Profile metadata may be returned for private accounts, but posts/stories/highlights will be empty.

#### How is the price calculated?

Per username, not per item. Scraping a profile with 50 posts and 10 highlights costs the same as one with 5 posts and 0 highlights.

#### How do I limit cost?

Set `postsPerUser`, `storiesPerUser`, `highlightsPerUser`, and `itemsPerHighlight` to small values - or `0` / `-1` to skip a section entirely.

#### What's the difference between Stories and Highlights?

Stories = current 24-hour tray (disappear after 24h). Highlights = permanently saved story collections shown on the profile below the bio.

#### Will Instagram block this?

Multi-source failover + rotating residential proxies handle rate limits automatically.

#### Does it work for Instagram Reels?

Reels appear inside the `posts` array with `mediaType: "video"` and `videoUrl` populated.

### Related Apify actors

- 📝 [Instagram Posts Scraper](https://apify.com/goat255/instagram-posts-scraper) - posts only, cheaper per item.
- 👤 [Instagram Profile Scraper](https://apify.com/goat255/instagram-profile-scraper) - profile data only, cheapest.
- 📷 [Instagram Stories & Highlights Scraper](https://apify.com/goat255/instagram-stories-highlights-scraper) - stories and highlights only.

### Support

Open an issue on the actor page if something breaks or a field's missing. Reviews are read and replied to.

### Privacy

To improve our actors we collect anonymized usage telemetry (run stats and input patterns). No personal account data is collected.

# Actor input Schema

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

Public Instagram usernames or profile URLs. Mix formats freely: acmecompany, @acmecompany, https://instagram.com/acmecompany.

## `postsPerUser` (type: `integer`):

Number of recent posts to scrape. Use 0 to skip posts entirely. Pages are fetched as needed.

## `storiesPerUser` (type: `integer`):

How many of the user's currently-active stories to capture. 0 = all current stories. -1 = skip stories entirely.

## `highlightsPerUser` (type: `integer`):

How many highlight reels to fetch metadata for. 0 = skip highlights entirely. -1 = all highlights.

## `itemsPerHighlight` (type: `integer`):

How many items inside each highlight to fetch. 0 = covers only (no inner expansion). -1 = all items in each highlight.

## `concurrency` (type: `integer`):

Number of usernames processed in parallel. Each username's internal pipeline runs sequentially.

## `delayBetweenRequests` (type: `number`):

Seconds to wait between requests inside a single username pipeline.

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

Required. Instagram blocks datacenter addresses, so this Actor cannot return anything with the proxy switched off and will stop the run immediately with no results charged. Leave Apify Proxy enabled with the RESIDENTIAL group, which is the default below.

## Actor input object example

```json
{
  "usernames": [
    "acmecompany"
  ],
  "postsPerUser": 12,
  "storiesPerUser": 0,
  "highlightsPerUser": 5,
  "itemsPerHighlight": 10,
  "concurrency": 3,
  "delayBetweenRequests": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "usernames": [
        "acmecompany"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("goat255/instagram-full-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": ["acmecompany"] }

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,goat255/instagram-full-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/l9A2nQOOOxgtx93oc/builds/abdsyPHYTmfDVMaVD/openapi.json
