Threads Scraper avatar

Threads Scraper

Pricing

from $1.40 / 1,000 posts

Go to Apify Store
Threads Scraper

Threads Scraper

Posts, replies, reposts, profiles, keyword and hashtag search, whole threads with replies and account discovery on Meta Threads. Every post with text, media, links, mentions and engagement. No login.

Pricing

from $1.40 / 1,000 posts

Rating

5.0

(1)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

a day ago

Last modified

Share

Threads Scraper turns Meta's Threads into rows: an account's posts as far back as you want, its replies and reposts, its profile with follower count, bio links and contacts, public posts for any keyword or hashtag, a whole thread with its replies, and people or brands that match a keyword. Every post comes with text, time, author, likes, replies, reposts, quotes and shares, image and video URLs, links, mentions and hashtags, the quoted or reposted post, the reply context and the link preview. No login, no cookies, no browser: an account's last 100 posts take about four requests and a few seconds.

One run of Threads Scraper: an accountโ€™s posts with text, engagement and dates, no login.

Pick what you need, paste usernames, keywords or URLs, and click Start. Export as JSON, CSV or Excel, run it on a schedule, or call it from the API and AI agents.

What is Threads Scraper?

It is a Threads API for people who need the network as data rather than as a feed: social listening and brand monitoring, creator and influencer research, lead generation from bios, content archiving, academic research, and AI agents asked "what is this account posting about" or "what are people saying about X". Threads has an official API only for your own account; this Actor reads the public pages Threads serves to any visitor, so it works for any public account and any public post.

Seven modes in one Actor, all with the same row shape:

ModeYou giveYou get
Postsusernamesthe account's own posts, paged through the whole profile (hundreds or thousands)
Repliesusernamesreplies the account wrote, each with the post it answered
Repostsusernamesposts the account reposted
Profileusernamesfollowers, full name, bio, bio links, emails and phones in the bio, verification, latest post
Searchkeywords, #hashtagspublic posts from the top, recent and tag result pages, deduplicated
Threadpost URLsthe post (with its self-thread) and its replies
Accountskeywordspeople and brands matching the keyword, optionally with full profile details

What data does it return?

Post rows

FieldExample
id, code, url3977518562965884838 ยท Dcy_A8pGo-m ยท https://www.threads.net/@zuck/post/Dcy_A8pGo-m
text, language"Muse Spark 1.3 is rolling out todayโ€ฆ" ยท en
createdAt, timestamp2026-09-02T19:26:23.000Z ยท 1788377183
username, userId, fullName, isVerified, profilePicUrl, profileUrlzuck ยท 63055343223 ยท Mark Zuckerberg ยท true ยท โ€ฆ
likeCount, replyCount, repostCount, quoteCount, shareCount, viewCount1453 ยท 196 ยท 148 ยท 28 ยท 78 ยท null
mediaType, imageUrl, videoUrl, images[], videos[], hasAudio, accessibilityCaptioncarousel ยท โ€ฆ ยท [{url,width,height,alt}] ยท [{url,thumbnail,hasAudio}]
hashtags, mentions, urls, linkPreview["ai"] ยท ["natgeo"] ยท ["https://โ€ฆ"] ยท {url, displayUrl, title, imageUrl, faviconUrl}
isReply, replyToUsername, replyToUserId, rootPostUsername, replyControltrue ยท zuck ยท โ€ฆ ยท everyone
isQuote, quotedPost, isRepost, repostedPost, repostedBy{code, username, url, text, likeCount}
isPinned, isEdited, isPaidPartnership, isSpoiler, likesHidden, locationbooleans, place name
threadId, positionInThread, threadLengtha multi-post thread keeps its order
source, query, sourceUsername, parentPostId, parentPostUrlposts ยท search-top ยท search-recent ยท search-tag ยท thread ยท reply ยท replies ยท reply-context ยท reposts

Profile and account rows

username, userId, fullName, biography, bioLinks, websiteUrl, emails, phones (extracted from the bio), followerCount, isVerified, isPrivate, profilePicUrl (HD), profileUrl, instagramUrl, latestPostAt, latestPostUrl, latestPostText (Profile mode), query (Accounts mode).

How much does it cost?

Pricing is pay per row. There is no browser in this Actor, so platform usage is close to zero; error rows are free.

RowPrice
Post (any mode, replies included)$0.002 โ€” 1,000 posts for $2
Profile (Profile mode, includeProfile, Accounts with details)$0.004
Account match without details$0.002

An account's last 1,000 posts cost $2 and about 40 requests. Larger monthly plans get 10โ€“30 % off.

How to scrape Threads

  1. Choose What to get.
  2. Paste Usernames (posts, replies, reposts, profile), Keywords (search, accounts) or Post URLs (thread). Any Threads URL pasted into Any Threads URLs is routed by itself.
  3. Set Posts per account or keyword, and optionally Only posts after a date or Keep only posts containing words.
  4. Click Start; export, or read the dataset through the API.

โฌ‡๏ธ Input

{
"mode": "posts",
"usernames": ["zuck", "natgeo"],
"maxPosts": 200,
"includeProfile": true
}

Monitor keywords and hashtags

{ "mode": "search", "keywords": ["AI agents", "#nba", "apify"], "maxPosts": 100, "searchTypes": ["top", "recent", "tags"] }

A post with its replies

{ "mode": "thread", "postUrls": ["https://www.threads.net/@zuck/post/Dcy_A8pGo-m"], "maxRepliesPerPost": 100 }

Find accounts and their contacts

{ "mode": "users", "keywords": ["coffee roaster brooklyn", "specialty coffee"], "maxUsersPerKeyword": 20, "includeProfileDetails": true }

Posts since a date, about a topic

{ "mode": "posts", "usernames": ["nasa"], "maxPosts": 500, "postedAfter": "2026-06-01", "filterKeywords": ["artemis", "moon"] }

โฌ†๏ธ Output

{
"type": "post",
"id": "3977518562965884838",
"code": "Dcy_A8pGo-m",
"url": "https://www.threads.net/@zuck/post/Dcy_A8pGo-m",
"text": "Muse Spark 1.3 is rolling out today with frontier performance almost too cheap to meterโ€ฆ",
"createdAt": "2026-09-02T19:26:23.000Z",
"timestamp": 1788377183,
"username": "zuck",
"userId": "63055343223",
"fullName": "Mark Zuckerberg",
"isVerified": true,
"likeCount": 1453,
"replyCount": 196,
"repostCount": 148,
"quoteCount": 28,
"shareCount": 78,
"mediaType": "image",
"imageUrl": "https://instagram.fdps8-1.fna.fbcdn.net/v/t51.82787-15/โ€ฆ.webp",
"images": [{ "url": "โ€ฆ", "width": 1080, "height": 970, "alt": null }],
"videos": [],
"hashtags": [],
"mentions": [],
"urls": [],
"linkPreview": null,
"isReply": false,
"isQuote": false,
"isRepost": false,
"isPinned": false,
"threadId": "3977518562965884838",
"positionInThread": 0,
"threadLength": 1,
"source": "posts",
"sourceUsername": "zuck",
"scrapedAt": "2026-09-06T10:05:12.000Z"
}

Profile rows have type: "profile". An account or post that cannot be read arrives as a type: "error" row with the reason (profile not found, post not found or unavailable, rate limit), never as a silently missing item.

Use cases

Social listening

Search keywords and hashtags on a schedule, keep the rows, and watch likeCount, replyCount and new authors over time.

Creator and competitor research

Pull an account's whole history with Posts mode and its profile; compare posting cadence, media mix (mediaType), best-performing posts and who they reply to.

Lead generation

Accounts mode with a niche keyword returns matching profiles with emails, phones and websiteUrl taken from public bios.

Archiving and research

Posts mode with postedAfter builds a dated corpus with language, media and links for every post.

AI agents

An agent asked "what did @nasa post this week" or "what are people saying about X on Threads" gets typed rows it can summarise.

Integrations and Threads API

Run it from the Apify API, the JavaScript and Python clients, a schedule, or a webhook, and push results to Google Sheets, Slack, Discord, Notion or a database through n8n, Make or Zapier. The Apify MCP server exposes it to Claude, ChatGPT and other agents as a tool.

๐Ÿค– For AI Agents & LLM Apps

Compact reference for agents calling this Actor through the Apify MCP server or the Apify API (lergassy/threads-scraper).

Purpose: read public Threads content โ€” an account's posts, replies or reposts, its profile, posts matching a keyword or hashtag, a post with its replies, or accounts matching a keyword.

Minimal inputs:

{ "mode": "posts", "usernames": ["zuck"], "maxPosts": 50 }
{ "mode": "search", "keywords": ["#nba"], "maxPosts": 50 }
{ "mode": "thread", "postUrls": ["https://www.threads.net/@zuck/post/Dcy_A8pGo-m"] }
{ "mode": "profile", "usernames": ["natgeo"] }
{ "mode": "users", "keywords": ["coffee roaster"] }

Output: rows with type = post, profile or error. Post rows: url, text, createdAt, username, fullName, likeCount, replyCount, repostCount, quoteCount, shareCount, mediaType, imageUrl, videoUrl, hashtags, mentions, urls, linkPreview, isReply, replyToUsername, isQuote, quotedPost, isRepost, repostedPost, threadId, positionInThread, source, query. Profile rows: username, fullName, biography, bioLinks, emails, phones, followerCount, isVerified, profileUrl.

Behaviors an agent should know:

  • Posts mode pages through the profile until maxPosts or postedAfter; a multi-post thread yields one row per post with positionInThread.
  • Search, Replies, Reposts and Thread read what Threads shows a logged-out visitor: roughly 20 posts per result page (top, recent, tag), the first ~25 replies of a post and the latest replies/reposts of an account. maxPosts is a cap, not a promise.
  • Search matches keywords the way Threads does (not exact phrase); use filterKeywords for a strict filter.
  • source says where a row came from; in Replies mode reply-context rows are the posts being answered, replies rows are the account's own replies.
  • Counts are numbers; missing counts (hidden likes, no view count) are null. timestamp is Unix seconds, createdAt ISO 8601 UTC.
  • Usernames are accepted bare, with @ or as URLs. Private accounts and deleted posts return an error row.
  • A datacenter proxy is on by default and is enough; switch to Residential only if rate-limit errors appear.

โ“ FAQ

Do I need a Threads account or cookies?

No. The Actor reads public pages only and never logs in, so there is no account to get banned.

How many posts can I get from one account?

All of them, subject to maxPosts โ€” Posts mode uses the same pagination the site uses when you scroll.

Why does Search return fewer posts than I asked for?

Threads shows a logged-out visitor one page of results per keyword. The Actor combines the top, recent and tag pages and removes duplicates, which usually gives 20โ€“60 posts per keyword. Use several related keywords for more.

Can I get followers or following lists?

Not without a login; Threads does not expose them publicly. Follower counts are included in profile rows.

The Actor reads publicly available content that Threads serves to anyone and does not bypass logins. Whether you may store or reuse it depends on your purpose and jurisdiction; respect people's privacy and Meta's terms. This is not legal advice.

Can I use it with the Apify API or an MCP server?

Yes. The Actor is pay-per-event with limited permissions, so agents can run it through the Apify MCP server without extra setup.

Your feedback

Missing a field or a mode? Open an issue in the Issues tab and it will be looked at within a day.

You might also like