SFOLN

Catalogue / Social media data

Threads Profile Scraper

sfoln/threads-profile-lookup · Social media, Lead generation, Automation On request

Scrape public Threads profiles by handle or URL with no login: user ID, full name, bio, follower count, verified and private flags, profile picture and bio links, one JSON record per profile. $4 per 1,000 profiles; unknown handles are free unless the provider billed the lookup.

About

What it does

Threads Profile Scraper looks up public Threads profiles in bulk and returns one normalized record per profile: handle, user ID, profile URL, full name, bio, follower count, verified / private / Threads-only flags, HD profile picture and bio links. It's built for influencer discovery, social listening, lead enrichment and AI agents.

Price

Price per delivered record

EventPricePer 1,000Charged for
Threads profile
threads-profile-looked-up
$0.004$4 / 1,000Charged once per Threads profile whose data was returned. Profiles that do not exist and failed requests are not charged, unless the provider billed the lookup.

Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.

Run

Call it from code, an agent or the Console

This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com

curl · synchronous run, rows in the response
curl -X POST "https://api.apify.com/v2/actors/sfoln~threads-profile-lookup/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"handles":["zuck"]}'
mcp.json · hosted Apify MCP server
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/threads-profile-lookup"
    }
  }
}
asynchronous run · for large batches
POST https://api.apify.com/v2/actors/sfoln~threads-profile-lookup/runs?maxTotalChargeUsd=1
GET  https://api.apify.com/v2/actor-runs/{runId}            # until status is SUCCEEDED
GET  https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json

Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Look up the Threads profiles of zuck and mosseri and compare their follower counts, bios and bio links.

Input

Input fields

Paste Threads handles or profile URLs, one per line. Each profile produces one dataset record.

FieldTypeDefaultMeaning
handles *arrayrequiredThreads profiles
Handles (with or without @) or profile URLs such as https://www.threads.com/@zuck. Duplicates are removed. Accounts on the Apify free plan can process up to 10 profiles per run.
cacheMaxAgestring"off"Accept cached results
Allow results the data source fetched within this window instead of a live fetch. Faster; follower counts may be up to N days old when enabled. Price is the same. Default: off (always live). One of "off", "1d", "7d", "30d".
maxProfilesinteger1000Max profiles
Safety cap on the number of profiles processed in this run. Range 1–10000.
concurrencyinteger4Concurrency
How many profiles are fetched in parallel (1–8). Range 1–8.
includeRawbooleanfalseInclude raw upstream response
Attach the unmodified provider payload to each record.
Example input
{
  "handles": [
    "zuck"
  ]
}

Output

One record per input item

Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.

FieldTypeMeaning
inputstring | objectInput
The handle or profile URL as provided.
handlestring | nullHandle
userIdstring | nullUser ID
profileUrlstring | nullProfile URL
fullNamestring | nullFull name
biostring | nullBio
followersnumber | nullFollowers
isVerifiedboolean | nullVerified
isPrivateboolean | nullPrivate
isThreadsOnlyUserboolean | nullThreads-only user
profilePicUrlstring | nullProfile picture
linksarrayBio links
cachedbooleanCached
statusstringStatus
ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"
chargedbooleanCharged
chargedEventstringCharged event
errorobjectError
sourcestringSource
fetchedAtstringFetched at
Example record
{
  "input": "sportsillustrated",
  "handle": "sportsillustrated",
  "userId": "63496592589",
  "profileUrl": "https://www.threads.com/@sportsillustrated",
  "fullName": "Sports Illustrated",
  "bio": "Sports, sports and more sports.",
  "followers": 551296,
  "isVerified": true,
  "isPrivate": false,
  "isThreadsOnlyUser": false,
  "profilePicUrl": "https://scontent.cdninstagram.com/…jpg",
  "links": [
    "https://lnk.bio/sportsillustrated"
  ],
  "cached": false,
  "status": "ok",
  "charged": true,
  "chargedEvent": "threads-profile-looked-up",
  "source": "scrapecreators",
  "fetchedAt": "2026-10-14T10:00:00.000Z"
}

Machine-readable

This page for agents