Threads Profile & Posts Scraper avatar

Threads Profile & Posts Scraper

Pricing

from $0.10 / 1,000 result extracteds

Go to Apify Store
Threads Profile & Posts Scraper

Threads Profile & Posts Scraper

Export public Threads profile metadata, bios, follower counts, avatars, and visible post previews from usernames or profile URLs.

Pricing

from $0.10 / 1,000 result extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape public Threads profile metadata and public post previews from Threads profile URLs or usernames.

What does Threads Profile & Posts Scraper do?

Threads Profile & Posts Scraper helps you collect structured data from public Threads profiles. Provide one or more usernames or profile URLs and the actor returns clean rows with profile metadata such as display name, bio, follower count, thread count, avatar URL, profile URL, and scrape timestamp. When Threads exposes public post previews in logged-out HTML, the actor also saves post rows with post URL, post ID, text preview, media URL array, and engagement fields when visible.

Who is it for?

  • 🧵 Social media analysts tracking public Threads presence
  • 📣 Brand teams monitoring official accounts and creator profiles
  • 📰 Journalists researching public profiles and public conversations
  • 📊 Growth teams comparing follower counts and profile positioning
  • 🤖 Automation builders who need Threads profile data in a dataset, API, or workflow

Why use this actor?

Threads pages are optimized for browsing, not exporting. This actor turns public profile pages into structured data you can download as JSON, CSV, Excel, or access through the Apify API. It accepts simple usernames, supports multiple profiles per run, and includes proxy configuration for reliable production use.

What data can you extract?

FieldDescription
itemTypeprofile or post
profileUrlCanonical Threads profile URL
usernameThreads username without @
displayNamePublic profile display name
bioPublic profile bio text when available
followerCountParsed numeric follower count
threadCountParsed numeric thread count
avatarUrlPublic avatar image URL
postIdPost identifier when a post preview is visible
postUrlPublic post URL when a post preview is visible
textVisible post preview text when available
timestampVisible post timestamp when available
mediaUrlsVisible media URLs when available
replyCountVisible reply count when available
repostCountVisible repost count when available
likeCountVisible like count when available
isReplyWhether the row appears to be a reply
isRepostWhether the row appears to be a repost
sourceUrlFinal fetched URL
scrapedAtISO timestamp for the scrape

How much does it cost to scrape Threads profiles?

The actor uses pay-per-event pricing. A small $0.005 start event is charged once per run, and the result event is charged for each saved profile or post row. Formula-validated result pricing starts at $0.00016209 per result for BRONZE users, with lower prices on higher tiers. Keep first runs small by using the prefilled input and a low post limit.

How to use

  1. Open the actor on Apify.
  2. Add Threads usernames or profile URLs.
  3. Choose the maximum number of visible post previews per profile.
  4. Keep the direct-connection default unless you have a specific proxy requirement.
  5. Start the run.
  6. Download the dataset in JSON, CSV, Excel, XML, or HTML.

Input example

{
"profileUrlsOrUsernames": ["zuck", "https://www.threads.com/@instagram"],
"maxPostsPerProfile": 5,
"proxyConfiguration": {
"useApifyProxy": false
}
}

Output example

{
"itemType": "profile",
"profileUrl": "https://www.threads.com/@zuck",
"username": "zuck",
"displayName": "Mark Zuckerberg",
"bio": "Mostly superintelligence and MMA takes.",
"followerCount": 5600000,
"followerCountText": "5.6M Followers",
"threadCount": 150,
"threadCountText": "150 Threads",
"avatarUrl": "https://...",
"sourceUrl": "https://www.threads.com/@zuck",
"scrapedAt": "2026-06-27T21:53:47.678Z"
}

Supported profile formats

  • zuck
  • @zuck
  • https://www.threads.com/@zuck
  • https://www.threads.net/@zuck

Tips for best results

  • Use public profiles only.
  • Start with 1-5 profiles while testing your workflow.
  • Set maxPostsPerProfile to 0 if you only need profile metadata.
  • Use stable profile URLs for recurring monitoring.
  • Expect Threads to expose different fields for different public pages.

Limits and caveats

Threads controls what is visible to logged-out visitors. Some pages expose only profile metadata, while others may expose post previews. Private, missing, age-restricted, login-gated, or temporarily blocked profiles may return no rows. Engagement counts and timestamps are saved only when visible in public page data.

Integrations

Use the actor with:

  • Google Sheets exports for profile tracking
  • Make or Zapier automations through Apify webhooks
  • BI dashboards that ingest Apify datasets
  • CRM enrichment workflows for public creator lists
  • Scheduled Apify tasks for recurring monitoring

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/threads-profile-posts-scraper').call({
profileUrlsOrUsernames: ['zuck'],
maxPostsPerProfile: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/threads-profile-posts-scraper').call(run_input={
'profileUrlsOrUsernames': ['zuck'],
'maxPostsPerProfile': 5,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~threads-profile-posts-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"profileUrlsOrUsernames":["zuck"],"maxPostsPerProfile":5}'

MCP usage

Connect Apify MCP to tools that support Model Context Protocol and enable this actor with:

https://mcp.apify.com/?tools=fetch_cat/threads-profile-posts-scraper

Claude Code setup:

$claude mcp add apify "https://mcp.apify.com/?tools=fetch_cat/threads-profile-posts-scraper"

MCP server JSON configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=fetch_cat/threads-profile-posts-scraper"
}
}
}

Example prompts:

  • "Scrape the public Threads profile for @zuck and summarize the bio and follower count."
  • "Compare these Threads public profiles and return a table of follower counts."
  • "Run the Threads Profile & Posts Scraper weekly and flag large follower changes."

Scheduling

Create an Apify task with your target usernames and schedule it daily, weekly, or monthly. Scheduled runs are useful for monitoring profile changes over time.

Proxy configuration

The default input uses direct requests to avoid unnecessary proxy cost. If you experience blocks on larger jobs, enable Apify Proxy in the proxy editor and choose a proxy group available in your account.

Data quality

The actor normalizes usernames, canonicalizes Threads URLs to threads.com, parses abbreviated counts such as 5.6M, and adds scrapedAt timestamps so you can track when the data was collected.

FAQ

Why did a profile produce no rows?

The profile may be private, missing, renamed, temporarily unavailable, or redirected to login. Check the profile in a logged-out browser and verify that it is public.

Why are post fields empty?

Threads may not expose post timelines to logged-out visitors for that profile. The actor saves post fields only when public post previews are visible.

Why do counts differ from the app?

Threads may round counts in public metadata and may update app counters faster than public web metadata.

Legality

Only scrape public data you are allowed to access. Respect Threads terms, privacy rights, applicable laws, and reasonable rate limits. Do not use scraped data for spam, harassment, discrimination, or sensitive profiling.

Explore related actors and scrapers by fetch_cat:

Changelog

  • 2026-07-08 (APIA-1458, change) — Updated the default Threads profile input to use Residential proxy so profile examples return results reliably.

  • Initial version: public profile metadata, visible post preview extraction, username and URL inputs, proxy support.

Support

If you need a field that is publicly visible but not returned, open an issue with a sample public profile URL and the field you expected.