# Social Profile Intelligence API (`refreshing_pail/social-profile-intelligence`) Actor

Extract normalized public profile data from Instagram, TikTok, X, LinkedIn, Facebook, and YouTube. Get names, bios, audience metrics, profile images, public contact links, and recent posts for lead enrichment, research, monitoring, and AI workflows.

- **URL**: https://apify.com/refreshing\_pail/social-profile-intelligence.md
- **Developed by:** [Michael](https://apify.com/refreshing_pail) (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

Pay per event

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Social Profile Intelligence API

Collect normalized public profile metadata from Instagram, TikTok, X, LinkedIn, Facebook, and YouTube.

The Actor accepts one or more public profile URLs and returns one predictable JSON record for every submitted URL. It is designed for API integrations, lead-enrichment workflows, monitoring, and AI agents.

> This is an unofficial tool and is not affiliated with, endorsed by, or sponsored by Instagram, Meta, TikTok, X, LinkedIn, Google, or YouTube.

### Features

- Supports multiple social platforms
- Processes up to 100 profile URLs per run
- Normalizes platform-specific data into one output format
- Extracts follower, following, and post counts when publicly available
- Returns public profile images and external links when available
- Attempts to collect recent public posts
- Returns structured partial and failed results
- Supports Apify residential and custom proxies
- Produces JSON, JSONL, CSV, Excel, XML, and HTML exports

### Supported platforms

- Instagram
- TikTok
- X/Twitter
- LinkedIn
- Facebook
- YouTube
- Other public profile pages with compatible metadata

Support is best-effort because platforms frequently change their public pages and access restrictions.

### Input

#### `profileUrls`

Required array of public profile URLs.

```json
{
  "profileUrls": [
    "https://www.instagram.com/natgeo/",
    "https://www.youtube.com/@NationalGeographic"
  ]
}
```

Maximum: 100 unique URLs per run.

#### `includeRecentPosts`

Attempt to collect recent publicly visible posts.

Default: `true`

Recent posts may be unavailable when a platform requires authentication or does not include post links in its public page markup.

#### `maxPostsPerProfile`

Maximum recent posts returned for each profile.

Default: `5`\
Minimum: `0`\
Maximum: `20`

#### `includeContactLinks`

Extract publicly displayed external websites, email links, and contact links.

Default: `true`

The Actor does not infer, purchase, or obtain private contact information.

#### `failOnError`

Control batch error handling.

- `false`: return a structured failure record and continue processing.
- `true`: stop when a profile cannot be processed.

Default: `false`

#### `proxyConfiguration`

Proxy settings used to access public pages.

For protected platforms such as Instagram, residential proxies are strongly recommended:

```json
{
  "useApifyProxy": true,
  "apifyProxyGroups": ["RESIDENTIAL"]
}
```

Residential proxy traffic is billed separately according to your Apify plan.

### Complete input example

```json
{
  "profileUrls": [
    "https://www.instagram.com/natgeo/"
  ],
  "includeRecentPosts": true,
  "maxPostsPerProfile": 5,
  "includeContactLinks": true,
  "failOnError": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

### Output

Every submitted URL produces exactly one dataset item.

Important fields include:

| Field | Description |
|---|---|
| `inputIndex` | Position of the URL in the input array |
| `requestUrl` | Original submitted URL |
| `canonicalUrl` | Normalized or redirected profile URL |
| `platform` | Detected social platform |
| `status` | `success`, `partial`, or `failed` |
| `profileType` | Best-effort profile classification |
| `handle` | Public username without `@` |
| `displayName` | Public profile name |
| `bio` | Public biography or description |
| `avatarUrl` | Public profile-image URL |
| `isVerified` | Verification state when available |
| `followersCount` | Public follower or subscriber count |
| `followingCount` | Public following count |
| `postsCount` | Public post or upload count |
| `websiteUrl` | Primary public external website |
| `contactLinks` | Publicly displayed external links |
| `recentPosts` | Best-effort recent public posts |
| `error` | Explanation for partial or failed results |
| `collectedAt` | UTC collection time |

#### Example result

```json
{
  "inputIndex": 0,
  "requestUrl": "https://www.instagram.com/natgeo/",
  "canonicalUrl": "https://www.instagram.com/natgeo/",
  "platform": "instagram",
  "status": "success",
  "profileType": "unknown",
  "handle": "natgeo",
  "displayName": "National Geographic",
  "bio": "269M Followers, 195 Following, 32K Posts",
  "avatarUrl": "https://example-cdn.com/avatar.jpg",
  "category": null,
  "isVerified": null,
  "followersCount": 269000000,
  "followingCount": 195,
  "postsCount": 32000,
  "websiteUrl": null,
  "contactLinks": [],
  "recentPosts": [],
  "error": null,
  "collectedAt": "2026-07-26T17:30:52.156Z"
}
```

### Status values

#### `success`

The profile loaded and useful public metadata was collected.

#### `partial`

The profile returned limited metadata, a login page, or an access challenge. Fields that could still be collected are included.

#### `failed`

The profile could not be loaded. The `error` field explains why.

When `failOnError` is disabled, a failed profile does not prevent other URLs in the batch from being processed.

### Run through the API

Set your personal Apify API token:

```bash
export APIFY_TOKEN="YOUR_APIFY_TOKEN"
```

Call the Actor synchronously:

```bash
curl --fail-with-body \
  --request POST \
  "https://api.apify.com/v2/actors/refreshing_pail~social-profile-intelligence/run-sync-get-dataset-items?clean=true" \
  --header "Authorization: Bearer ${APIFY_TOKEN}" \
  --header "Content-Type: application/json" \
  --data '{
    "profileUrls": [
      "https://www.instagram.com/natgeo/"
    ],
    "includeRecentPosts": true,
    "maxPostsPerProfile": 5,
    "includeContactLinks": true,
    "proxyConfiguration": {
      "useApifyProxy": true,
      "apifyProxyGroups": ["RESIDENTIAL"]
    }
  }' | jq .
```

For large batches or runs lasting longer than five minutes, use the asynchronous Actor run endpoint instead.

### Data availability

The Actor only collects information made publicly available by the target platform.

Some fields may be `null` or empty because:

- The platform does not expose the field publicly.
- Authentication is required.
- The profile is private, restricted, deleted, or unavailable.
- The platform returned an access challenge.
- Public page markup changed.
- Recent posts were not present in the anonymous page response.

An empty value does not necessarily mean the underlying profile has no value for that field.

### Proxy considerations

Social platforms commonly block cloud and datacenter IP addresses. Residential proxies generally provide better reliability but incur traffic costs.

The Actor blocks unnecessary media and font requests where possible to reduce bandwidth. Proxy success is not guaranteed because target platforms continuously change their anti-automation systems.

### Responsible use

Use this Actor only for lawful purposes and public information.

You are responsible for:

- Following applicable privacy and data-protection laws
- Respecting website terms and access restrictions
- Avoiding excessive request rates
- Securing exported data
- Obtaining any consent required for your use case
- Avoiding spam, harassment, surveillance, or discriminatory profiling

Do not use this Actor to access private accounts, bypass authentication, or collect sensitive personal information.

### Support

If a supported platform stops returning expected fields:

1. Confirm that the profile is publicly accessible.
2. Retry with residential proxies.
3. Review the result’s `status` and `error` fields.
4. Open an issue from the Actor’s Apify Store page with a reproducible public URL.

Do not include API tokens, credentials, or private personal information in support requests.

# Actor input Schema

## `profileUrls` (type: `array`):

Public Instagram, TikTok, X, LinkedIn, Facebook, or YouTube profile URLs. Supply direct profile URLs rather than search pages or individual post URLs.

## `includeRecentPosts` (type: `boolean`):

Collect a limited number of recent publicly visible posts for each profile.

## `maxPostsPerProfile` (type: `integer`):

Maximum number of recent posts to return for each profile. Ignored when recent-post collection is disabled.

## `includeContactLinks` (type: `boolean`):

Extract publicly displayed website, mailto, and other external contact links. This does not infer or obtain private contact information.

## `failOnError` (type: `boolean`):

When disabled, failed profiles are returned with status 'failed' while the remaining URLs continue processing.

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

Proxy settings used to retrieve public pages. Residential proxies may improve reliability on protected websites.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.instagram.com/natgeo/"
  ],
  "includeRecentPosts": true,
  "maxPostsPerProfile": 5,
  "includeContactLinks": true,
  "failOnError": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Full machine-readable profile records, including recent posts, status, and errors.

## `overview` (type: `string`):

Compact view containing the most useful profile fields.

# 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 = {
    "profileUrls": [
        "https://www.instagram.com/natgeo/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("refreshing_pail/social-profile-intelligence").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 = { "profileUrls": ["https://www.instagram.com/natgeo/"] }

# Run the Actor and wait for it to finish
run = client.actor("refreshing_pail/social-profile-intelligence").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 '{
  "profileUrls": [
    "https://www.instagram.com/natgeo/"
  ]
}' |
apify call refreshing_pail/social-profile-intelligence --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/FA095W8TfoOkgW25j/builds/pbk0Z9swhr7RQiY6J/openapi.json
