Threads Scraper — Posts, Profiles, Replies & Search | No Login avatar

Threads Scraper — Posts, Profiles, Replies & Search | No Login

Pricing

from $1.40 / 1,000 posts

Go to Apify Store
Threads Scraper — Posts, Profiles, Replies & Search | No Login

Threads Scraper — Posts, Profiles, Replies & Search | No Login

[$2 / 1K posts, no start fee] Scrape Meta Threads without login: full profile history, all replies, exact views, keyword & hashtag search, accounts with emails. Only-new monitoring.

Pricing

from $1.40 / 1,000 posts

Rating

0.0

(0)

Developer

Anuar Bakty

Anuar Bakty

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

12

Monthly active users

a day ago

Last modified

Share

Scrape public data from Meta Threads (threads.com / threads.net) without a login, cookies or an account of your own. Paste profiles, post links, keywords or #hashtags into one list and get clean, flat rows ready for Excel, Google Sheets, a database or an AI agent.

  • The whole history of a profile, back to July 2023, not the 4–25 posts most scrapers stop at. Its replies, reposts and media tabs too.
  • Replies under any post, page after page, not only the first 25 a visitor sees, with nested replies up to 5 levels and the post each reply answers.
  • Exact view counts (473,362, not "473K") and the Instagram follower count of the linked account.
  • Keyword and hashtag search that reads the top results and the tag page for every spelling of the keyword, without duplicates, and can collect all replies of every found post in the same run.
  • Who is talking: the follower count of every author and commenter, next to the likes, replies, reposts and quotes of each post and reply, and if you want, a profile row for each of them with bio, links, emails and phones from the bio and Instagram followers.
  • Account search with followers, bio links, and the emails and phone numbers people put in their bio.
  • Only-new monitoring for schedules: posts already delivered are skipped for free.
  • Fair billing: no start fee, and filtered posts, duplicates and errors are never charged.

What you can use it for

  • Market research: what people say about a topic and who says it: posts, every comment under them with its likes, and the profile of each author.
  • Social listening and brand monitoring: every public post about your brand, product or competitor, on a schedule, only what is new.
  • Competitor and creator research: the full posting history of any account with likes, replies, reposts, quotes and views.
  • Lead generation: accounts that post about a niche, with bio links, emails and phone numbers.
  • Audience research: everyone who replies under a viral post or a competitor's posts, with who replied to whom and the profile of each person.
  • AI and RAG datasets: clean post text with language, topic, links and engagement, ready to embed.
  • Archiving: photos and videos saved before the Threads links expire.

Quick start

Paste anything into Profiles, posts, keywords or hashtags, one per line:

You pasteYou get
@zuck or https://www.threads.com/@zuckThe profile row and its posts
https://www.threads.com/@zuck/repliesThe replies the profile wrote, each with the post it answers
https://www.threads.com/@zuck/repostsThe original posts the profile reposted
https://www.threads.com/@zuck/post/CuZsgfWLyiIThe post with its exact view count, and its replies
https://www.threads.com/t/CuZsgfWLyiI, threads.net links, share linksThe same, any link format works
artificial intelligencePosts matching the keyword (with all their replies, if you turn that on)
#runningPosts of the hashtag and its tag page
https://www.threads.com/search?q=coffeeThe same search as on the site

A bare word is searched as a keyword. To add a profile, write it with @, or paste a column of names into Usernames (bulk).

Example input:

{
"targets": ["@nasa", "https://www.threads.com/@zuck/post/CuZsgfWLyiI", "#artemis"],
"maxPostsPerProfile": 100,
"maxRepliesPerPost": 200,
"replyDepth": 2,
"postedAfter": "30 days"
}

Market research in one run

What do people think about a topic, and who are they? Give the Actor a few keywords of the topic; it finds the posts, collects all comments under each, and adds a profile of everyone who wrote them.

{
"searchQueries": ["electric cars", "tesla", "ev charging", "home charger"],
"repliesOfFoundPosts": true,
"maxRepliesPerPost": 100,
"replyDepth": 2,
"includeAuthorProfiles": true,
"postedAfter": "3 months"
}

You get three kinds of rows, linked to each other:

  • Posts matching each keyword (query says which one), with likes, replies, reposts, quotes and the author's follower count.
  • Replies under every post, nested as deep as you set. rootPostId and parentPostUrl tie each reply to its post, and likeCount shows which opinions people support.
  • Authors: one row per person (type: "author") with bio, links, emails and phones from the bio, followers and Instagram followers. foundViaPostUrl is the post or reply that brought them in.

Sort the replies by likes in Excel or Google Sheets to see the most supported opinions, or give the dataset to an AI agent and ask what people like and complain about. Each keyword gives up to a few dozen posts (Threads shows a visitor one page per search), so add several keywords of the topic. Filters such as minimum likes choose the posts, and every comment under them still comes; turn on Apply the filters to replies too to filter the comments as well.

Example: two Russian keywords, with 8 posts per keyword and 15 replies per post, gave 16 posts, 227 replies and 206 author profiles in 42 seconds.

Why this Threads scraper

Typical Threads scraperThis Actor
Posts per profile4–25 without a login, or a login neededThe whole history, no login
Replies under a postThe first ~25All of them, page after page, nested up to 5 levels
Replies and media tabs of a profileRarelyYes, paged back through the history
View countsMissing or roundedExact, for any post
Instagram follower countNoYes, when the account is linked
Emails and phones from biosRarelyYes, for profiles, accounts found by search, and authors
Profiles of everyone who posted or repliedRarelyOne row per person, with bio and contacts, in the same run
Search depthOne page of ~25 postsEvery spelling × top results and tag page, deduplicated
Start feeOften $0.02 per runNone
Duplicates, filtered posts, errorsOften chargedNever charged
MonitoringDedupe it yourselfBuilt in: only new posts, free for known ones

What you get

Every row has a type: post, reply, profile, account (a profile found by account search), author (the author of a delivered post or reply, with Profiles of authors and commenters on; one row per person, and none for a profile or account that already has its own row) or error (an input that gave nothing, never charged). Rows are flat: lists are arrays, no nesting.

Post and reply rows

FieldWhat it is
postId, postCode, postUrlPost id, the code in its link, the link
username, userId, fullName, isVerified, profilePicUrlThe author
authorFollowersThe author's follower count: for profile posts always, for posts found by search and for replies with Follower count of every author or Profiles of authors and commenters on
textThe full text as written, links spelled out
language, languageSourceISO language code; threads when Threads labels it, guess when guessed from the text
hashtags, mentions, links#tags, @mentions and outbound links (without Threads' redirect)
linkPreviewUrl, linkPreviewTitle, linkPreviewImageUrlThe link card of the post
topicTagThe Threads topic of the post
createdAt, timestampPublication time (ISO and Unix)
likeCount, replyCount, repostCount, quoteCount, shareCountEngagement
viewCountExact views: always for post links, for posts of profiles and searches with Views for every post on (not for replies)
engagementTotalLikes + replies + reposts + quotes
mediaType, mediaCounttext, image, video or carousel, and how many items
imageUrls, videoUrls, thumbnailUrl, mediaWidth, mediaHeight, hasAudio, accessibilityCaptionMedia at the best resolution, carousels item by item
mediaFilesSaved copies of the photos and videos, with Save photos and videos on
isReply, replyToUsername, rootPostUsernameReply context
parentPostId, parentPostUrl, parentPostUsername, parentPostTextThe post a reply answers
rootPostId, replyDepthFor replies collected under a post: that post, and how deep the reply is (1 = direct)
threadId, positionInThread, threadLengthFor profile posts: the author's multi-part thread
isQuote, quotedPostUrl, quotedPostUsername, quotedPostTextThe quoted post
isRepost, repostedByUsername, repostedAtFor the reposts tab: who reposted the post and when
isPinned, isEdited, isPaidPartnership, isSpoiler, isAiGenerated, likesHidden, replyControlFlags
musicTitle, musicArtist, locationMusic and place attached to the post
source, input, query, keywordMatchedWhere the row came from: the tab, search page or reply tree; your input line; the search spelling; whether the text contains the keyword

Profile rows

FieldWhat it is
userId, username, profileUrl, fullNameThe account
biography, bioLinks, websiteBio and its links (website is the first link)
emails, phonesContacts found in the bio and its links
followerCount, isVerified, isPrivate
instagramUrl, instagramFollowers, instagramFollowingThe linked Instagram account and its counts
topicsThe topics the account posts about, as Threads shows them
profilePicUrlThe largest profile picture
latestPostAt, latestPostUrl, latestPostTextThe latest post, to see if the account is active (profiles and accounts)
queryFor accounts found by search: the keyword. For authors: the keyword that found the post
foundViaPostUrlFor authors: the post or reply that brought them in

Example post row:

{
"type": "post",
"postUrl": "https://www.threads.com/@zuck/post/CuZsgfWLyiI",
"username": "zuck",
"fullName": "Mark Zuckerberg",
"isVerified": true,
"text": "70 million sign ups on Threads as of this morning. Way beyond our expectations.",
"language": "en",
"createdAt": "2023-07-07T15:39:32.000Z",
"likeCount": 310236,
"replyCount": 58105,
"repostCount": 16092,
"quoteCount": 13363,
"viewCount": 473362,
"mediaType": "text",
"source": "post",
"input": "https://www.threads.com/@zuck/post/CuZsgfWLyiI"
}

The dataset has ready-made views: Posts, Engagement, Profiles & contacts, Replies, Media and Inputs with no results. A SUMMARY record in the key-value store tells, for each input, how many posts were found, delivered, skipped as duplicates or filtered out, and why a profile or search stopped.

Options

  • Profiles: which tabs to collect (posts, replies, reposts, media), the profile row, how many posts per tab (0 = the whole history).
  • Posts and replies: replies of post links, and optionally of every post found by search or in a profile; how many per post, how deep (1–5), top or recent first.
  • Search: posts and/or accounts, the top results and/or the tag page, spellings of each keyword, limits per keyword.
  • Filters (filtered posts are never charged): posted after / before (dates or "7 days", "3 months"), languages, minimum likes, replies, reposts and views, only posts that contain the keyword. They choose the posts, and the replies under them all come; Apply the filters to replies too filters the replies as well, for example to keep only replies with 10+ likes.
  • Extras: exact views for every post, the follower count of every author and commenter or their full profiles, saving photos and videos.
  • Monitoring: only posts not delivered before; a named memory to share between schedules; a reset.
  • Limits: the maximum number of rows per run. The run also never spends more than the cost limit you set in Apify.
  • Run status: an input that gives nothing (not found, private, mistyped, empty, a date that cannot be read, or Threads not readable after all retries) comes as a free error row with the reason, and the run still succeeds. Fail the run when every input gives an error makes a run with nothing but error rows fail instead.

Pricing

Pay per result, no subscription and no start fee.

EventPrice per 1,000
Post or reply$2.00 (down to $1.40 on higher Apify plans)
Profile, account or author$3.00 (down to $2.10)
Saved photo or video file$1.00

Never charged: filtered posts, duplicates, posts already delivered in monitoring, inputs that return nothing, views.

Examples: 1,000 posts of a profile cost $2.00 plus $0.003 for its profile row. 50 accounts found by keyword cost $0.15. A post with 500 replies costs about $1.00. A keyword with 30 posts and 600 replies by 450 different people costs $1.26, or $2.61 with the profiles of those people. On the free Apify plan with $5 of monthly credit you get about 2,500 posts a month.

Monitoring: only new posts on a schedule

  1. Set your inputs and filters, turn on Only posts not delivered before.
  2. Save the input as a task and add a schedule (every hour, every day…).
  3. Each run delivers only posts that previous runs of this input did not. Known posts are skipped for free, and profiles stop paging at the first known post, so a check of an account with nothing new costs almost nothing. Profile, account and author rows are delivered once too; turn monitoring off for a run when you want fresh follower counts.

Changing the inputs or what is collected (profile tabs, search pages and spellings, languages, only posts that contain the keyword, replies, the profile row) starts a new memory. Dates and minimum likes, replies, reposts or views keep it: posts they skipped were never delivered, so they can still come. Monitoring memory name lets several tasks share one memory, and Forget what was delivered starts over.

Limitations, stated plainly

  • Search depth. Without a login, Threads shows one page of about 25 posts per search, with no way to page further and no date filter. This Actor reads the top results and the tag page for every spelling of a keyword, so a keyword gives up to a few hundred posts, not thousands. For volume, collect the profiles that post about the topic: their history has no such limit.
  • No followers, following or likers lists. Threads shows them only to logged-in users, and this Actor never logs in, so it cannot get your account banned.
  • Private profiles: only the profile row, no posts.
  • Age-restricted profiles show a visitor nothing: their authors come without a follower count or a profile row, and the SUMMARY record counts them.
  • Authors Threads refuses to show. When Threads rate-limits profile reads, some authors come without a follower count or a profile row; the SUMMARY record counts the failed reads.
  • Views come from each post's own page: always included for post links, one extra request per post for posts of profiles and searches, not available for replies.
  • Languages are guessed from the text when Threads does not label them; very short posts may have no language.
  • Media links from Threads stop working after a few days. Turn on Save photos and videos to keep copies.
  • Counts are those Threads showed at the time of the run.

Personal data

  • What is collected. Only what Threads shows to anyone without logging in. Emails and phone numbers come from the public bio and bio links of a profile, never from posts or private data; with Profiles of authors and commenters on, this includes the people who wrote the posts and replies you collect. Turn off Find emails and phones in bios if you do not need them.
  • Your responsibility. Processing personal data requires a lawful basis, for example under GDPR in the EU. Do not use contacts for unsolicited messages or spam.
  • What the Actor keeps. Results stay in your Apify storage. With monitoring on, a named key-value store threads-scraper-anuarbakty-monitor keeps the ids of delivered posts and profiles with the time they were delivered: no texts and no contacts. Delete the store in Apify Console, or run once with Forget what was delivered, to remove it.

Use it from AI agents (MCP)

Add the Actor to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server:

https://mcp.apify.com/?tools=anuarbakty/threads-scraper

Example requests to an agent:

  • "Get the last 200 posts of @nasa with views and tell me which topics perform best."
  • "Find 30 Threads accounts about specialty coffee in Almaty with emails in the bio."
  • "Collect all replies under this Threads post and summarize the main complaints."
  • "Find Threads posts about our brand from the last week with all their comments, and show which commenters have the most followers."
  • "Find Threads posts about electric cars from the last 3 months with all comments and the profiles of the people who wrote them. What do people complain about, and who are they?"

Errors come back as rows with type: "error" and a reason, so an agent always gets an answer it can read.

API

curl -X POST "https://api.apify.com/v2/acts/anuarbakty~threads-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"targets": ["@nasa"], "maxPostsPerProfile": 50}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('anuarbakty/threads-scraper').call({ targets: ['#running'], maxPostsPerSearch: 200 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("anuarbakty/threads-scraper").call(run_input={"targets": ["@zuck"], "profileContent": ["posts", "replies"]})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Results can also go to Google Sheets, Make, Zapier, n8n, webhooks and more through Apify integrations.

More from this developer

  • YouTube Transcript Scraper: transcripts and subtitles of YouTube videos, Shorts, channels, playlists and search in any language, as text, timestamps, SRT, VTT or chunks for AI; no captions, no charge.
  • Facebook Ads Library Scraper: ads from the Meta Ad Library (Facebook and Instagram) by keyword, brand name or page, with creatives, days running, EU reach and advertiser contacts, without login.
  • 2GIS Places Scraper: businesses from 2GIS (Russia, Kazakhstan, Central Asia, UAE) with phones, WhatsApp, Telegram, emails and websites, the whole result instead of 60.
  • 2GIS Reviews Scraper: 2GIS reviews with star, topic and date filters, unanswered reviews across a chain, and only-new monitoring.

FAQ

Do I need a Threads account or cookies? No. The Actor reads only what Threads shows to a logged-out visitor, so there is no account to get banned.

How far back can it go? For profiles, to the first post (Threads launched in July 2023). Searches are limited to what Threads shows a visitor, see the limitations.

Is it the official Threads API? No. The official API needs a Meta app with review and caps keyword search at about 500 queries per 7 days per user. This Actor needs no app, key or review.

Why did a keyword return fewer posts than my limit? Threads shows a visitor only about 25 posts per search page. Keep "spellings of each keyword" on, add related keywords, or collect the profiles that post about the topic.

Why is keywordMatched false for some posts? Threads pads search results with related posts that do not mention the keyword. Turn on "Only posts that contain the keyword" to skip them for free. Russian words count in any form: "кофейня" also matches "кофейни" and "кофейню".

Can I get everyone who commented on a post, with their contacts? Yes: paste the post link and turn on Profiles of authors and commenters. Each commenter comes once, with bio, links, and emails and phones from the bio. Who liked a post Threads shows only to logged-in users, so likers are not available.

How do I get only the most liked replies? Turn on Apply the filters to replies too and set Minimum likes. Skipped replies are not charged. The minimum applies to posts as well: for keywords and profiles, a post below it is skipped together with its replies. For a post link, its replies are collected even if the post itself is below the minimum.

Can I get the posts of a specific week from last year? From profiles, yes: set "Posted after" and "Posted before". From keyword search, no: Threads does not let a logged-out visitor search by date.

Is scraping Threads legal? The Actor collects only public data that anyone can see without logging in. You are responsible for how you use it, see Personal data above. If in doubt, ask a lawyer.

Why did my run succeed with no posts? Every input gave an error: missing, private, mistyped, empty, a date the Actor could not read, or Threads not readable after all retries. Each one has a row with type: "error", errorReason and errorMessage (the Inputs with no results view), the status of the run says how many, and nothing was charged. If your automation should see a failed run instead, turn on Fail the run when every input gives an error.

Something does not work? Open an issue on the Actor's Issues tab and paste the link to the run. A run linked in an issue opens to the developer automatically: its log, input and results, and nothing else in your account. To share every run of this Actor instead, turn on Share run data with developers in Apify Console under Settings → Login & Privacy.