Apify

Run Social Fetch lookups as Apify Store Actors. Paste handles or links, get one dataset row per result, and pay through your Apify account with no Social Fetch API key.

Social Fetch publishes a set of ready-made Actors in the Apify Store under @social-fetch. An Actor is a small program you run in Apify: you give it a list of handles or links, it looks each one up through the Social Fetch API, and it saves the results in a dataset you can download as JSON, CSV or Excel, or send on to another tool.

You pay through your Apify account, per row in the dataset. You don't need a Social Fetch account, API key or credits.

What you'll need

  • An Apify account. Apify's free plan comes with a little monthly usage you can spend on Store Actors, which is enough to try these out.
  • For runs from code or other tools only: your Apify API token, from Settings → API & Integrations in Apify Console.

The Actors

Each Actor runs one Social Fetch API route and writes one dataset row per result.

ActorWhat you give itOne row perMost per run
TikTok Profile ScraperTikTok handles or profile linksProfile1,000 handles
TikTok Profile Videos ScraperOne TikTok handle, how many videos, latest or popularVideo5,000 videos
TikTok Video ScraperTikTok video linksVideo500 links
TikTok Video Comments ScraperTikTok video links, how many comments per videoComment500 links, 5,000 comments
TikTok Transcript ScraperTikTok video linksTranscript500 links
Instagram Profile ScraperInstagram handles or profile linksProfile1,000 handles
Instagram Post ScraperInstagram post or reel linksPost500 links
YouTube Video ScraperYouTube video or Shorts linksVideo500 links

For anything not in this list, such as other platforms, searches or ads, use the Social Fetch API or the n8n and Make integrations, which cover the whole API.

Run your first Actor

This walks through the TikTok Profile Scraper. The other Actors work the same way; only the input changes.

  1. Open the @social-fetch page in the Apify Store and click TikTok Profile Scraper.
The Social Fetch page in the Apify Store, listing its public Actors as cards. The TikTok Profile Scraper card is spotlit and labelled Each Actor fetches one kind of data. Open one to start
Each card is one Actor. Pick the one for the data you want.
  1. On the Actor's page, check the price under Pricing, then click Try for free. Apify asks you to sign in or create an account, then opens the Actor in Apify Console.
The TikTok Profile Scraper page in the Apify Store. Try for free is labelled Opens the Actor in Apify Console, ready to run, and the sidebar price, from $1.98 / 1,000 profile results, is labelled The price per result
The Store page shows the price per result before you run anything.

Before you start, the Input tab on the Store page shows what the Actor asks for. The TikTok Profile Scraper needs only a list of handles.

The Input tab of the TikTok Profile Scraper in the Apify Store, showing its one required field, TikTok handles (handles), described as One or more TikTok usernames (with or without @) or profile URLs. The field is boxed and labelled What you give the Actor: a list of handles or profile links
Every Actor's Input tab lists its fields, so you can see what to prepare before you sign in.
  1. In Apify Console, on the Actor's Input tab, add the handles you want to the TikTok handles list. You can type them with or without @, or paste profile links. The field starts with mrbeast filled in as an example.
  2. Click Start.
Add your handles, then click Start.
  1. When the run shows Succeeded, open its Output tab. The Overview table shows one row per handle with its status, handle, display name, verified badge, followers and likes. Switch to the JSON view to see every field.
  2. Click Export to download the results as JSON, CSV, Excel or another format.
Each handle becomes one row. Export the dataset, or open it from Storage later.

Every run keeps its dataset in your Apify account, under Storage, so you can download it again later.

What a row contains

A row holds the same fields as the API's response for that lookup, plus the input you gave, so you can match rows back to your list. For a TikTok profile it looks like this (shortened):

{
  "inputHandle": "@mrbeast",
  "handle": "mrbeast",
  "lookupStatus": "found",
  "profile": {
    "platform": "tiktok",
    "handle": "mrbeast",
    "displayName": "MrBeast",
    "verified": true,
    "profileUrl": "https://www.tiktok.com/@mrbeast",
    "privateAccount": false
  },
  "metrics": {
    "followers": 127352270,
    "following": 351,
    "likes": 1301821757,
    "posts": 459
  },
  "meta": {
    "requestId": "req_f05c55ed-d134-4f26-9c23-8a49df4810ba",
    "creditsCharged": 1,
    "version": "v1"
  }
}
  • lookupStatus says whether the lookup found anything. not_found means the account or link doesn't exist; private means the profile is private, so only some fields are filled in. These rows are still charged. See Errors for every status.
  • meta.creditsCharged is what the lookup cost on the Social Fetch side, which Social Fetch pays. You pay only Apify's price per row.
  • The Profile Videos and Comments Scrapers put each item under video or comment, next to the handle or inputUrl it came from.

The API reference describes every field for each route.

What it costs

Every Actor has the same price, set in Apify:

  • $1.98 per 1,000 rows in the dataset (each row costs $0.00198).
  • $0.00005 each time a run starts.

Apify's own platform usage, such as compute and storage, is included. The options that do more work, Use AI fallback on the Transcript Scraper and Download media on the Video Scraper, cost the same per row. The Actor's Pricing tab in the Store always shows the current price.

The Pricing tab of the TikTok Profile Scraper in the Apify Store, scrolled to the All events table. The Profile result row, $1.98 per 1,000 on every Apify plan, is boxed and labelled One charge per row in your results. Below it are Actor Start at $0.00005 and Platform costs: Included
You pay per row, on every Apify plan. The start fee is a fraction of a cent.

What you're charged for:

  • Each row, including not_found and private rows: the lookup ran and returned an answer.
  • Not an input that fails, such as a link that isn't a TikTok video. The Actor skips it, writes a line in the run's Log and saves no row, so it costs nothing.

To keep a run's cost down, set Max videos or Max comments per video on the Actors that list many items; the run never saves more rows than that. You can also set a maximum cost per run in Apify's run options. When a run reaches it, the Actor stops and keeps the rows it has.

Run Actors from code, schedules and other tools

Anything that can start an Apify Actor can start these: Apify Schedules (to run the same list every day or week, for example to follow follower counts), Apify's integrations with Make, Zapier and n8n, webhooks, the Apify API and the apify-client library. All of them need your Apify API token.

Your Apify API token is under Settings → API & Integrations. Keep it secret, like a password.

With JavaScript, start a run, wait for it to finish and read the rows:

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor("social-fetch/tiktok-profile-scraper").call({
  handles: ["mrbeast", "nike"],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Or with one HTTP request that runs the Actor and returns the rows when it finishes:

curl -X POST \
  "https://api.apify.com/v2/actors/social-fetch~tiktok-profile-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "handles": ["mrbeast", "nike"] }'

Each Actor's API tab in the Store has the same examples for Python, the Apify CLI and more, with the Actor's own input.

If you'd rather call Social Fetch directly, every Actor's route is also in the REST API, paid with Social Fetch credits instead of Apify.

Troubleshooting

Skipped <input>: … No dataset row was written, so this input is not charged. in the run log. That handle or link couldn't be looked up, usually because it isn't in the form the Actor expects (a TikTok video link given to an Instagram Actor, or a profile link where a video link is needed). The rest of the run carries on. Fix the input and run it again.

The run failed with No dataset items were produced. Every input was skipped, or the list had nothing usable in it. Read the Log tab for the Skipped line on each input. For the Profile Videos Scraper, it also means the profile has no public videos.

The run failed with No handles provided. or No URLs provided. The input list is empty. Add at least one handle or link.

The run failed with Too many items. Max 1000 handles. (or Max 500 URLs.) The list is longer than one run allows. Split it across several runs.

The run failed with Rate limited. Retry later. or Service temporarily unavailable. The Social Fetch API is busy or briefly down. Rows saved before the error stay in the dataset. Wait a little, then run the rest again. If it keeps happening, or the message says to contact support, contact support with the run's ID.

A row says not_found or private. The lookup worked: the account doesn't exist, the link is wrong or deleted, or the profile is private. The row is charged. Check the spelling of the handle or open the link in a browser.

The run cost more than expected. You pay per row, and some Actors save many rows per input: the Profile Videos Scraper saves one per video and the Comments Scraper one per comment. Lower Max videos or Max comments per video, or set a maximum cost per run.

A request from code fails with an authentication error. The Apify API token is missing, mistyped or deleted. Copy it again from Settings → API & Integrations in Apify Console.

Next steps

On this page