# Social Media Growth Analyzer — Social Blade Alternative (`khadinakbar/socialblade-alternative`) Actor

Analyze Instagram, TikTok, and YouTube audience metrics. Supply earlier snapshots to calculate growth, compare same-platform profiles within a run, and optionally export labeled projections alongside current profile data.

- **URL**: https://apify.com/khadinakbar/socialblade-alternative.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, Automation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 social profile snapshots

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/actors/running/actors-in-store.md#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 Media Growth Analyzer — Social Blade Alternative

Analyze Instagram, TikTok, and YouTube audience metrics. Supply earlier snapshots to calculate growth, compare same-platform profiles within a run, and optionally export labeled projections alongside current profile data. For creator agencies, each dataset row is one profile snapshot with any valid baseline comparison and same-platform run ranking.

### Workflow: put the results to work

Collect the creator roster once, then supply those rows as baselineSnapshots in a later run. Use stable profile keys to compare audience and content changes under the same definitions. Within-run ranks cover only the selected same-platform profiles, and optional projections are linear calculations rather than forecasts.

### What you get

- Current followers or YouTube subscribers, following count, content count, and available lifetime views or likes.
- A stable `profileKey` and `snapshotAt` for joining scheduled runs into a time series.
- Audience, content, and lifetime-engagement changes when you provide an earlier Actor row.
- Average audience change per day and audience growth percentage.
- Audience rank and audience share among same-platform profiles in this run.
- An optional 30-day linear audience projection with the calculation method attached.
- JSON, CSV, Excel, API, webhook, schedule, and MCP-friendly output through Apify.

### Quick start

Provide one to 100 public profile URLs or tagged handles:

```json
{
  "profileUrls": [
    "https://www.instagram.com/natgeo/",
    "https://www.tiktok.com/@natgeo",
    "youtube:@Apify"
  ],
  "maxProfiles": 3
}
```

Supported inputs are Instagram profile URLs, TikTok `@handle` URLs, YouTube `@handle` URLs, YouTube `/channel/CHANNEL_ID` URLs, and tagged handles such as `instagram:@natgeo`. Duplicate profiles are removed.

### Track growth between runs

Copy a previous dataset row into `baselineSnapshots`. The Actor matches it by `profileKey` and calculates change only when the earlier timestamp and required counts are valid.

```json
{
  "profileUrls": ["youtube:@Apify"],
  "maxProfiles": 1,
  "baselineSnapshots": [
    {
      "profileKey": "youtube:apify",
      "platform": "youtube",
      "handle": "Apify",
      "audienceCount": 100000,
      "contentCount": 300,
      "lifetimeEngagementCount": 5000000,
      "snapshotAt": "2026-08-01T12:00:00.000Z"
    }
  ],
  "includeProjections": true
}
```

For repeated tracking, save the profile list as an Apify task and run it on a schedule. Store each dataset result in your spreadsheet or warehouse, then pass the previous row back as the next baseline.

### Workflow: from creator roster to growth report

A creator agency starts with the public profile URLs for a campaign roster. It runs the Actor after onboarding the creators, exports the resulting rows to its reporting table, and schedules the same input for the next reporting date. On the next run, the agency passes the earlier rows as `baselineSnapshots`. The Actor then calculates each creator's observed growth and same-platform rank, so the team can decide which profiles need a closer campaign review and feed the structured result into its client report.

### Output

One row represents one profile at one collection time:

```json
{
  "recordType": "social-profile-snapshot",
  "profileKey": "youtube:apify",
  "platform": "youtube",
  "profileUrl": "https://www.youtube.com/@Apify",
  "handle": "Apify",
  "displayName": "Apify",
  "audienceCount": 102500,
  "contentCount": 308,
  "lifetimeEngagementCount": 5180000,
  "comparisonStatus": "compared",
  "baselineSnapshotAt": "2026-08-01T12:00:00.000Z",
  "daysSinceBaseline": 30,
  "audienceChange": 2500,
  "audienceGrowthPercent": 2.5,
  "averageAudienceChangePerDay": 83.3333,
  "contentChange": 8,
  "lifetimeEngagementChange": 180000,
  "audienceRankInRun": 1,
  "rankScope": "same-platform-profiles-in-this-run",
  "projectedAudience30Days": 105000,
  "projectionMethod": "linear-from-baseline",
  "snapshotAt": "2026-08-31T12:00:00.000Z"
}
```

Counts can be `null` when a platform does not make the corresponding metric public. `lifetimeEngagementCount` means an available account-level aggregate of views or likes; it is not a recent-post engagement rate.

| Field | Meaning |
| --- | --- |
| `profileKey` | Stable platform-and-profile key for joining snapshots across runs. |
| `audienceCount` | Current public followers or YouTube subscribers. |
| `audienceChange` | Current audience minus the matched earlier audience. |
| `audienceGrowthPercent` | Audience change divided by the earlier audience. |
| `averageAudienceChangePerDay` | Audience change divided by elapsed days. |
| `audienceRankInRun` | Rank among profiles from the same platform in this run only. |
| `projectedAudience30Days` | Optional straight-line estimate from two supplied observations; never a guarantee. |
| `snapshotAt` | ISO 8601 collection time for freshness and time-series joins. |

The `OUTPUT` record also includes a compact `reportSummary` with profiles returned, comparisons completed, projections created, platform totals, and the largest audience in each platform group.

### Best fit

- Creator agencies tracking a known roster across YouTube, Instagram, and TikTok.
- Brand teams comparing campaign creators or ambassadors.
- Analysts building weekly or monthly growth reports.
- Automations that need structured profile analytics instead of dashboard screenshots.
- AI agents that need a bounded profile-metrics tool with explicit output semantics.

### API and automation

Start a run through the Apify API:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/khadinakbar~socialblade-alternative/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profileUrls":["https://www.youtube.com/@Apify"],"maxProfiles":1}'
```

Read the default dataset URL returned by the run for analytics rows. Use `OUTPUT` for the terminal outcome and compact report summary, and `RUN_SUMMARY` for lifecycle and charge reconciliation.

#### Agent prompt

> Analyze these public Instagram, TikTok, and YouTube profiles. Return current audience metrics, changes from the supplied earlier snapshots, same-platform ranks within this run, collection times, and the terminal outcome.

The agent should read the default dataset for the profile rows and `OUTPUT` for the terminal outcome and compact summary. The tool's scope is known-profile analytics; discovery of new creators is a separate upstream workflow.

### How it compares with Social Blade

This Actor covers a focused Social Blade-style workflow: current public profile analytics, buyer-owned scheduled history, two-snapshot growth calculations, batch comparison, and automation-ready output.

Social Blade remains the better choice when you need its broader dashboard, global databases, long historical series already collected by Social Blade, global ranks, grades, top lists, live-count experiences, or estimated earnings. This Actor does not invent those fields.

| Decision | This Actor | Social Blade |
| --- | --- | --- |
| Starting point | Your known Instagram, TikTok, or YouTube profiles | Its supported website and product surfaces |
| Current metrics | Structured rows for automation and exports | Dashboard and documented API responses |
| Growth history | You own the snapshots; compare an earlier Actor row | Broader pre-collected historical features are available in Social Blade products |
| Ranking | Explicitly limited to same-platform profiles in this run | Broader ranking products are part of Social Blade |
| Projections | Optional linear estimate from two supplied observations | Broader projection experiences are available in Social Blade products |
| Billing and same-job cost | Pay per event for each persisted analytics row; use the live Pricing tab for current cost | Uses its own product and API pricing models |
| Effective efficiency | One bounded API run returns usable rows for a supplied roster and downstream automation | Its suite supports a broader dashboard-led research workflow |
| Integrations and automation | Apify API, schedules, webhooks, dataset exports, and MCP workflows | Website products and a documented Business API |
| Bounded scope | Replaces the known-profile tracking and comparison workflow | Broader suite features remain the better fit for global research |
| Best fit | Scheduled roster monitoring, API workflows, and custom reports | Historical discovery, global comparisons, and dashboard-led research |

### Data quality and responsible use

The Actor accepts public profile identities, not social-account passwords, cookies, or login details. Every terminal path writes `OUTPUT` and `RUN_SUMMARY` with one of `COMPLETE`, `PARTIAL`, `VALID_EMPTY`, `INVALID_INPUT`, `UPSTREAM_FAILED`, or `CONFIG_ERROR`.

Growth calculations are made only from the counts and timestamps present in two snapshots. Projections require at least one elapsed day and are labeled `linear-from-baseline`. Run-local ranks are never presented as global platform ranks. Use this Actor only for public data you are authorized to collect and process under applicable laws and platform terms.

### Builder's note

I built the comparison layer around an earlier Actor row because current public profile totals and historical analytics are different evidence. I found that a stable `profileKey`, explicit collection time, and transparent two-point math produce a more useful automation contract than expanding the row into grades or global ranks. My goal is to make every derived number reproducible from fields in the same dataset.

### Pricing and run costs

This Actor uses **Pay per event plus Apify platform usage**. The [Pricing tab](https://apify.com/khadinakbar/socialblade-alternative/pricing) lists the current event rates and billing terms.

| Event | Billing unit | When it applies |
|---|---|---|
| `apify-actor-start` | Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
| `social-profile-snapshot` | Social profile snapshot | Charged for each validated, normalized public profile snapshot saved to the dataset. |

Run cost combines the charged events and Apify platform usage. Review the run charge limit and requested result count before starting.

### Independent alternative

This Actor provides the specific workflow described above. It is not affiliated with or endorsed by Social Blade; the named product and its trademarks belong to their respective owners.

### Connect an AI agent

Use the [Apify MCP configurator](https://mcp.apify.com) to choose an available client connection. Inspect this Actor’s current input schema and required credentials before running it.

# Actor input Schema

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

Add 1–100 public profile URLs or tagged handles. Examples: instagram:@natgeo, tiktok:@natgeo, youtube:@Apify, or a YouTube /channel/ URL. Duplicate profiles are removed. Post, Reel, video, private-profile, and login URLs are not accepted.

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

Set the hard maximum number of analytics rows saved and charged in this run. Use 1 for one profile or up to 100 for a roster. Defaults to the number of unique valid profiles, capped at 100.

## `baselineSnapshots` (type: `array`):

Optional. Paste earlier dataset rows from this Actor to calculate audience, content, and lifetime-engagement changes. Rows match by profileKey. The newest valid earlier row for each profile is used; malformed rows are ignored and reported.

## `includeProjections` (type: `boolean`):

Optional. When a matching baseline is at least one day older, estimate the audience count 30 days from now using the straight-line daily change between the two snapshots. This is a labeled projection, not a guarantee.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.instagram.com/natgeo/",
    "https://www.tiktok.com/@natgeo",
    "youtube:@Apify"
  ],
  "maxProfiles": 25,
  "baselineSnapshots": [],
  "includeProjections": false
}
```

# Actor output Schema

## `analytics` (type: `string`):

Tracking-ready profile analytics rows in the default dataset.

## `output` (type: `string`):

Terminal outcome, row counters, compact report summary, and warnings.

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

Detailed lifecycle and charge diagnostics for this run.

# 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.youtube.com/@Apify"
    ],
    "maxProfiles": 1,
    "includeProjections": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/socialblade-alternative").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.youtube.com/@Apify"],
    "maxProfiles": 1,
    "includeProjections": False,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/socialblade-alternative").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 '{
  "profileUrls": [
    "https://www.youtube.com/@Apify"
  ],
  "maxProfiles": 1,
  "includeProjections": false
}' |
apify call khadinakbar/socialblade-alternative --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,khadinakbar/socialblade-alternative"
        }
    }
}
```

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/HzY4dr9s68oVhvnjH/builds/yYufzgzR5Ko2Qjhtd/openapi.json
