Threads Scraper $1/1k Posts Likes Replies Bio & Followers avatar

Threads Scraper $1/1k Posts Likes Replies Bio & Followers

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Threads Scraper $1/1k Posts Likes Replies Bio & Followers

Threads Scraper $1/1k Posts Likes Replies Bio & Followers

Extract Threads (Meta) profiles & posts: likes, replies, reposts, bio, followers, profile pic, post images. $1/1K. Perfect for social media analytics.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

deusex machine

deusex machine

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

2

Monthly active users

2 days ago

Last modified

Categories

Share

Threads Scraper — Extract Posts, Profiles, Likes, Replies & Reposts from Meta Threads

Useful? Leave a review — it takes 10 seconds and is the single biggest thing that helps other social-media researchers find this Threads scraper.

A reliable Threads scraper for Meta's Threads platform that pulls posts, profile metadata, follower counts, engagement stats (likes, replies, reposts) and author handles from any public Threads profile. No Threads login, no Meta API token, no Instagram linking required — just clean JSON or CSV output. Built for social-listening teams, influencer-marketing platforms, brand-monitoring dashboards, content researchers, trend analysts, growth marketers and anyone doing Threads competitive analysis at scale.

What this Threads scraper does

Given a list of Threads usernames (like zuck, instagram, mosseri, or any public handle) and an optional post cap, this scraper navigates each profile page, waits for lazy-loaded content, scrolls to pull the long tail of posts, and returns two kinds of records: a profile record for each account and a post record for each post it finds.

Every run pulls fresh data — engagement counts change by the minute on active accounts, so the scraper hits Threads live each time. Export the dataset as JSON, CSV, Excel, or XML directly from the Apify console or via the Apify API.

Why choose this Threads scraper

Threads doesn't have a public API for developers, and Meta hasn't exposed Threads data through the Instagram Graph API either. That leaves three options: build your own Puppeteer stack (expensive to maintain against frequent DOM changes), pay for an enterprise social-listening suite, or use this scraper. This Threads scraper handles the browser stealth setup, proxy rotation, scroll automation, DOM parsing and multiple fallback selectors so you don't have to.

Data fields the Threads scraper extracts

Profile records (type: "profile")

FieldTypeDescription
usernamestringThreads handle without the @
displayNamestringProfile display name (e.g. "Mark Zuckerberg")
followersstringFollower count in human-readable format ("5.4M", "970K")
followingstring|nullFollowing count (Threads exposes this only for some profiles)
biostring|nullProfile bio text
verifiedbooleanWhether the profile has a verified badge
profilePicUrlstring|nullURL of the profile picture (CDN)
externalUrlstring|nullExternal link in profile bio (if any)
urlstringCanonical profile URL on threads.com
typestringAlways "profile" for profile records
scrapedAtstringISO 8601 timestamp

Post records (type: "post")

FieldTypeDescription
usernamestringAuthor's Threads handle
profileUrlstringDirect link to the author's profile
postUrlstring|nullPermalink to the individual post
textstringPost body (truncated to 2,000 characters)
datestringPost date — relative ("2h", "3d") or absolute ("03/15/26")
likesstring|nullLike count ("7.3K", "1.4K", "190")
repliesstring|nullReply count
repostsstring|nullRepost count
sharesstring|nullShare count (when available)
imageUrlsstring[]Image URLs attached to the post
typestringAlways "post" for post records
scrapedAtstringISO 8601 timestamp

Use cases for this Threads data API

  • Brand monitoring on Threads — track what your brand's own accounts publish and how audiences engage post-by-post.
  • Influencer discovery and vetting — compare engagement rates (likes/replies per post) across a list of creators before partnership.
  • Competitor content analysis — snapshot your top three competitors' Threads feeds weekly to spot their tentpole content and posting cadence.
  • Trend detection — aggregate posts from 50+ industry thought leaders and surface the topics gaining momentum.
  • Social listening for PR and crisis response — pre-configure a watchlist of public figures and sync their Threads posts into Slack.
  • Content idea generation — feed high-engagement Threads posts into a ChatGPT prompt to brainstorm variations for your own channel.
  • Academic research on Meta's newest social platform — build reproducible datasets for studies on post format evolution, network effects, and migration from X/Twitter.
  • Dataset enrichment for LLM fine-tuning — curate Threads content as conversational training data (be mindful of Meta's terms).

How to use this Threads scraper

Scrape posts from a single profile

{
"profiles": ["zuck"],
"maxPosts": 30
}

Scrape multiple Threads profiles in one run

{
"profiles": ["zuck", "instagram", "mosseri", "threads"],
"maxPosts": 20
}

Deep-scrape a single profile

{
"profiles": ["maboroshi"],
"maxPosts": 100
}

Note: Threads profiles vary wildly in how many posts their DOM exposes. Accounts with heavy reposts or quote-posts may hit a natural cap below maxPosts.

Input parameters

ParameterTypeDefaultDescription
profilesarrayThreads usernames to scrape. Don't include the @ prefix.
maxPostsinteger20Max posts to collect per profile (1–200).

Output example (JSON)

Profile record

{
"type": "profile",
"username": "zuck",
"displayName": "Mark Zuckerberg",
"followers": "14.2M",
"bio": null,
"url": "https://www.threads.net/@zuck",
"scrapedAt": "2026-04-22T10:30:00.000Z"
}

Post record

{
"type": "post",
"username": "zuck",
"profileUrl": "https://www.threads.net/@zuck",
"text": "Threads just hit 200 million monthly actives. Grateful for this community.",
"date": "03/12/25",
"likes": "142538",
"replies": "8924",
"reposts": "3201",
"scrapedAt": "2026-04-22T10:30:00.000Z"
}

Export the full dataset as CSV directly from the Apify console, or programmatically via the Apify API.

How to call this Threads scraper from your code

From the Apify API (curl)

curl -X POST 'https://api.apify.com/v2/acts/makework36~threads-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"profiles": ["zuck", "mosseri"],
"maxPosts": 25
}'

From Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("makework36/threads-scraper").call(run_input={
"profiles": ["zuck", "instagram", "threads"],
"maxPosts": 30,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["type"] == "post":
print(item["username"], "→", item["text"][:80], "|", item["likes"], "likes")

From Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('makework36/threads-scraper').call({
profiles: ['maboroshi', 'polygondotio'],
maxPosts: 40,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const posts = items.filter((i) => i.type === 'post');
console.table(posts.map((p) => ({
user: p.username,
likes: p.likes,
replies: p.replies,
text: p.text.slice(0, 60),
})));

Export to CSV

From the console run page → ExportCSV. Or via API:

https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN

Performance & cost

  • ~30–60 seconds per profile depending on maxPosts
  • Uses Puppeteer with the stealth plugin — heavier compute than pure HTTP scrapers, but necessary to render Threads' client-side React app
  • Concurrency = 1 by design. Running multiple profiles in parallel triggers Threads' bot-detection layer; serial execution is the reliable path.
  • 5 retries per request with exponential backoff
  • Apify Proxy rotates residential IPs automatically

Threads scraper comparison — how this compares to other options

Threads is a young platform and dedicated scrapers are few. Here's how ours stacks up against the closest alternatives.

FeatureThis Threads scraperGeneric "Meta scraper" with residential proxyCustom Puppeteer stack (DIY)Social-listening enterprise suite
Fields per post6+ (text, date, likes, replies, reposts)3–4Depends on you10+ but behind paywall
Fields per profile6 (displayName, followers, bio, URL)2–3Depends6+
Stealth plugin / bot evasionYesSometimesManual setupN/A (licensed API)
Infinite scroll supportYesPartialDIYYes
Residential proxy rotationYes (via Apify Proxy)YesBuy separatelyYes
Handles Threads' DOM changesYes (maintained)Often brokenYou fix itYes
Typical cost per 1K posts~$2.00–3.00$3–$5Hosting + dev time$500+/month
Setup time30 secondsMinutesHours to daysWeeks (sales cycle)

The honest take: if you already operate a Puppeteer + proxy stack, you can build this yourself — but maintaining DOM parsers against Meta's weekly frontend changes is a surprising amount of work. If Threads data is a side-need, this scraper saves you the plumbing.

Step-by-step tutorial — your first Threads scrape in 3 minutes

  1. Sign up for Apify — go to apify.com and create a free account. You'll get a $5 trial credit.
  2. Open this actor — click Threads ScraperTry for free.
  3. Pick a public Threads handle — open threads.net, find any creator or brand, and copy their username from the URL (https://www.threads.net/@zuckzuck).
  4. Fill the input form — paste the handle into profiles. Set maxPosts to 20 for a first run.
  5. Click "Start" — the actor runs. A single-profile / 20-post run finishes in ~30 seconds.
  6. View the dataset — click the Dataset tab → you'll see a profile record followed by individual post records.
  7. Automate itSchedulesCreate new schedule → daily at 09:00 UTC. You now have a Threads watchlist updating every morning.

That's it — no Threads API, no Meta developer review, no Instagram linking.

Advanced usage patterns

Pattern 1 — daily brand-engagement snapshot

Schedule this actor daily on your own brand's handle. Store the output in a time-series table keyed by (username, date_scraped). Plot likes and replies over time to see which content formats your audience actually responds to.

Pattern 2 — influencer vetting pipeline

Feed a list of 50 candidate influencers into one run. Divide replies + likes + reposts by follower count to compute engagement rate. Filter out accounts where engagement rate drops more than two standard deviations below the peer group median — likely bot followers.

Pattern 3 — cross-platform migration tracking

Run this scraper alongside an X/Twitter scraper on the same creator list. Compare post frequency and engagement on Threads vs X. Useful for understanding whether a creator is migrating, dual-posting, or abandoning one platform.

Pattern 4 — LLM training-data curation

Collect posts from a curated set of thought leaders and feed them into a fine-tuning dataset. Filter by text length, likes threshold and reply count to keep only high-signal content. (Respect Meta's terms before commercializing the dataset.)

Pattern 5 — trend-topic discovery

Aggregate posts from 30+ creators in your niche. Tokenize the text field and count n-grams week-over-week. Sudden frequency spikes in previously rare terms are early trend signals.

Troubleshooting

Empty posts array for a profile

  • Double-check the handle is spelled exactly as on Threads — handles are case-insensitive but must otherwise be precise.
  • Private accounts return only minimal profile data and no posts. Threads flags private accounts clearly on the profile page.
  • Brand-new accounts with 0 posts naturally return an empty post list.

likes, replies, reposts are null

Threads sometimes hides engagement counts on low-engagement posts (< 10 likes) or on your own posts when viewed while logged out. The scraper returns null in these cases rather than guessing. Re-running later when the counts cross Threads' visibility threshold usually resolves it.

Scraper gets fewer posts than maxPosts

Threads' DOM virtualizes heavily: older posts unmount as you scroll. The scraper does 5 scroll passes with 1.5-second pauses to give React time to render. On content-light accounts you may hit a ceiling below your maxPosts — that's a platform limitation, not a scraper bug.

Profile page shows a login wall

Threads occasionally A/B-tests a login gate for unauthenticated visitors. If a run returns empty for multiple profiles, retry in 30 minutes — Meta typically rolls these tests back within hours.

Post text contains concatenated junk

Threads' DOM uses long <span dir="auto"> chains for posts that include mentions, hashtags and links. The scraper's fallback parser joins these spans when the primary extraction path fails. If you see concatenation artifacts, the text field is still usable but may need light downstream cleaning.

Dates show as "2h" or "3d" instead of absolute timestamps

Threads shows relative timestamps for posts less than a week old. The raw date field preserves whatever Threads renders. If you need ISO dates, resolve relative terms against scrapedAt in your downstream pipeline.

Pricing

Pay-per-result model:

  • ~$0.003 per post + profile record (exact pricing in the actor console)
  • Apify gives every new user a $5 free trial → ~1,500 records to evaluate the scraper
  • No subscription, no minimum, no egress fees

FAQ

Do I need a Threads or Instagram account?

No. This Threads scraper reads publicly visible profile pages — the same view any unauthenticated browser visitor sees. No login, no Instagram linking, no Meta app review.

This actor accesses only public profile pages. Meta's terms restrict automated access; most jurisdictions treat public-page scraping as permissible for research, journalism and market analysis. For commercial products, consult legal counsel and minimize personal data retention under GDPR.

Can I scrape by hashtag or search query?

Not in v1. The scraper is profile-driven: you provide usernames and it collects their posts. Hashtag and search support is on the roadmap — leave a review requesting it to bump priority.

Can I scrape replies to a post?

Only top-level posts are extracted. Individual reply threads aren't supported yet. The replies field tells you how many replies a post has.

Why is the scraper limited to one concurrent browser?

Running Puppeteer with concurrency > 1 against Threads consistently triggers Meta's bot-detection heuristics and leads to empty results across the whole batch. Running serially with the stealth plugin has a much higher success rate.

Does Threads enforce rate limits?

Yes, implicitly. Scraping 20+ profiles in rapid succession can trigger a challenge page. The scraper's built-in pacing and 5-retry logic handle most cases, but for very large runs (100+ profiles) consider splitting into several scheduled runs spaced 10–15 minutes apart.

Can I scrape posts with media attachments (images, videos)?

The scraper captures post text and engagement metrics. Media URL extraction is on the roadmap — for now, you can visit the post's individual URL manually if needed.

Does this work for non-English Threads accounts?

Yes. The scraper is locale-agnostic — it parses DOM structure, not translated labels. Profiles and posts in Spanish, Portuguese, Japanese, Korean, Arabic and other scripts all work.

Can I scrape multiple languages in one run?

Yes. Mix any public handles from any language into the profiles array.

Changelog

  • v1.1 (2026-04-22) — Full SEO rewrite, added Python / Node / curl examples, anonymized comparison table, advanced usage patterns, categorized field list.
  • v1.0 (2026-03-20) — Initial release with profile + post extraction, stealth Puppeteer, residential-proxy rotation and fallback text parsers.

This Threads scraper accesses only publicly visible content on threads.net. It does not bypass login, paywalls or account-level privacy settings. Posts contain personal data — under GDPR, schema.org norms for social-media content, and similar regional laws, you are the data controller once you export this dataset. Minimize retention, avoid building re-identification datasets, and don't use scraped content for harassment, impersonation, or unauthorized commercial republication. Respect Meta's Platform Policy and the spirit of Threads as a community.


🙏 Ran this Threads scraper successfully? Leaving a review helps the algorithm surface this to other social-media analysts. Much appreciated.