Threads Scraper: Posts, Replies, Profiles & Search avatar

Threads Scraper: Posts, Replies, Profiles & Search

Pricing

from $0.89 / 1,000 results

Go to Apify Store
Threads Scraper: Posts, Replies, Profiles & Search

Threads Scraper: Posts, Replies, Profiles & Search

Meta Threads scraper and Threads API for public data: search posts by keyword or hashtag (often hundreds per term) or find accounts, and scrape profiles, posts, replies and reposts by username or post URL. Likes, views, shares, media, links, followers and Instagram counts. No login.

Pricing

from $0.89 / 1,000 results

Rating

0.0

(0)

Developer

DeepMine

DeepMine

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

11

Monthly active users

3 days ago

Last modified

Share

Threads scraper for Meta Threads, no login: type a keyword, a username or a post link and get posts, replies, profiles and view counts as a table.

UserPostLikesRepliesViewsAuthor followersPosted
mosseriI was so excited when Emily Bode agreed to designโ€ฆ5499929,0441,052,3432026-10-23
mosseriEvery major platform has had to lean into recommenโ€ฆ27236442,1261,052,3432026-10-22
mosseriBig day for the Muse team with the introduction ofโ€ฆ1,1151,054617,4441,052,3432026-10-12

What you can scrape

InputYou get
๐Ÿ” Search terms (coffee, #booktok, a Threads search or tag URL)Posts that mention the term, Top or Recent: often a few hundred per term (see Search depth). Or, with Search for: Accounts, up to 100 accounts per term with followers, bio and links
๐Ÿ‘ค Usernames (mosseri, @mosseri, a profile URL)The profile, the account's posts (paged to the end), its replies to others (each with the post it answers) and its reposts
๐Ÿ”— Post URLs (threads.com/@user/post/..., threads.com/t/...)Its replies and the replies to those (3 levels), Top or Recent, each with its view count; then the post itself with its views and how many replies were collected

Mix them in one run. A post or profile that several inputs find is in your dataset, and charged, once. Plain HTTPS on Apify datacenter IPs, no browser: first rows in seconds, and a run needs only 256 MB.

Use it to track a brand or topic on Threads, collect posts for research or AI training, find creators and their contacts for outreach, or monitor an account's posts and replies on a schedule.

Search depth

Each search page Threads serves logged-out visitors holds 13-20 posts and offers no next page (checked 2026-10-03 and again 2026-10-26). This Actor reads the term through every page Threads offers (its default and top lists, the hashtag, the singular or plural form, and up to 8 related topic tags). When those run out before your Max results per input, Search deeper (on by default) reads the newest posts of the authors it found and of the accounts Threads' account search ranks for the term, and keeps only posts whose own text, topic or hashtags contain your words. Each row says where it came from (searchSource: default, tag:coffeelover, author:runcoachmike, account:unwind_ai, ...).

Search termThreads' search and tag pagesWith Search deeper
coffee155363
skincare124506
real estate99391
marathon training40160-204
ai agents28136-149

Turn off Only posts that mention the search term to also keep the loosely related posts Threads' search shows, or Search deeper to get Threads' search pages only. Account searches return up to 100 accounts per term.

More search options (๐Ÿ” Search options):

  • Only posts by these accounts: usernames; the search then reads those accounts' own posts (newest first, up to 500 each) and keeps the ones that mention your term (searchSource author:<user>).
  • Search pages: All (the most posts), or only Threads' Top, Recent or Tags pages.
  • Preferred language: asks Threads for results in that language first, as a visitor's browser would (a preference, not a filter). In a 2026-10-26 check, "coffee" in Japanese gave 11-14 Japanese posts of 20, in English none.
  • Include replies found by the search (on): off keeps posts only.
  • โญ๏ธ Skip posts already in this dataset (๐ŸŽ›๏ธ Filters): an earlier run's dataset ID. Its posts and profiles are skipped and not charged: continue where a run stopped, or schedule a search and get only new posts.

A profile's posts and replies page to the end of what Threads lists. A post's replies page through every reply Threads lists for logged-out visitors, which is often only part of them (isPublicSubset on the post's own row). Reposts: Threads' reposts tab answered at most the latest 25, with no next page, when tested (2026-10-03).

Output

The Output tab has three tables:

  • ๐Ÿ“Š All results: every post and profile, with Overview (posts: text, likes, replies, views, author followers), Stats and Profile rows views.
  • ๐Ÿงต Posts and replies: posts only, with Posts, Media, Replies and Views and authors views.
  • ๐Ÿ‘ค Profiles: profiles only, with Profiles and Contacts (accounts search) views.

The run summary (OUTPUT) lists every input with its status, result count and why it stopped. Every field has a label and a description in the dataset schema; the full list:

Posts and replies (one flat row each):

  • who: profilePicUrl, username, fullName, isVerified
  • what: text (the whole post; long posts include their full body, also in attachmentText), textSnippet, url
  • engagement: likeCount, replyCount, repostCount, quoteCount, shareCount (Threads hides many zero counts; those come back empty), viewCount and viewCountStatus (see below); createdAt
  • media: mediaType (Text, Image, Video, Carousel, Link, GIF), thumbnailUrl, mediaUrl, images, videos, mediaUrls and mediaUrlTypes (every image and video in the post's order, with its type), hasMedia, mediaCount, carouselCount, mediaWidth, mediaHeight, hasAudio, isGif, isSpoiler, accessibilityCaption, inline stickers (isStickerPost, stickerCount, stickerIds, stickerUrls)
  • topicTag, hashtags, mentions, links (real URLs, not Threads' redirect links), emails, link preview (linkPreviewUrl, linkPreviewTitle, linkPreviewDescription, linkPreviewImageUrl, linkPreviewDisplayUrl)
  • replies: isReply, replyToUsername, rootPostUsername, selfThreadCount, parentPostId, parentPostUrl, parentPostCode, parentPostText, parentPostUsername, parentPostUserId, parentPostLikeCount, parentPostReplyCount, parentPostRepostCount, parentPostQuoteCount, parentPostShareCount, parentPostCreatedAt, parentPostAvailable, rootPostId, replyDepth (1 = a direct reply, 2 = a reply to a reply, ...)
  • an account's own threads (posts tab): threadPosition (1 = the first post of the thread) and threadFirstPostCode
  • quotes: isQuotePost, quotedPostUrl, quotedPostText, quotedPostUsername, quotedPostCreatedAt, quotedPostUnavailable (Threads marked the quoted post unavailable instead of sending it)
  • reposts: isRepost, repostedByUsername, repostedAt, repostedFromUsername, repostedPostUrl, repostCode (a repost row is the original post, with who reposted it)
  • isPinned, isEdited, isPaidPartnership, isLikedByAuthor, isAiGenerated (empty when the post carries no AI-detection data), replyControl, poll (pollOptions, pollVoteCounts, pollTotalVotes), musicTitle, musicArtist, musicAssetId, podcastEpisode, podcastUrl, locationName, taggedUsers, language
  • author (on by default, one lookup per author per run): authorFollowerCount, authorBio, authorProfilePicHdUrl, authorProfileTags, authorInstagramFollowerCount, authorBioLinks, authorEmails and authorPhones (from the author's bio and links), authorFediverseEnabled, authorProfileUrl
  • also: imageCount, gifUrl, gifDescription, canReply, areCountsHidden, transparencyLabel
  • ids: postId, code, timestamp, userId, isPrivateAuthor, mentionedUserIds, topicTagId, replyToUserId, quotedPostId, quotedPostCode, repostedByUserId, locationId
  • where it came from: inputType, input, searchQuery, searchSource, keywordMatch, matchedSearchQueries (every search term of the run the post mentions), sourceTab; scrapedAt last

Profiles: profilePicUrl, username, fullName, bio, bioSnippet, url, followerCount, instagramFollowerCount, instagramFollowingCount (the linked Instagram account), isVerified, isPrivate, profileTags (the topics the account shows), bioLinks, emails and phones found in the bio and links, profilePicHdUrl, hasThreadsBadge, isThreadsOnlyUser (no linked Instagram), transparencyLabel, fediverseEnabled (the account shares its posts to the fediverse), latestPosts (its 10 newest posts, each with text, counts, date and link plus its media, links, hashtags, mentions, topic, flags, music and poll), userId, inputType, input, searchQuery, scrapedAt.

Times are UTC, like 2026-10-03T14:05:09Z. Picture and media links are signed by Threads and stop working after a few days: download what you need to keep.

View counts

Threads sends a post's view count with the post's own page. ๐Ÿ‘๏ธ View counts on every post is on by default (๐Ÿงพ Output section): the Actor reads those pages in parallel and each row goes out as soon as it's ready, so the first row isn't held back. Post URLs always ask for theirs, and so do their replies (View counts on replies too, on by default). Threads doesn't show a count on every post: in the 2026-10-26 prefilled runs of this family, 80 of 80, 10 of 10, 90 of 92 and 80 of 90 post rows had one. viewCountStatus says why one is empty: the author hid the counts, the post's page showed none, the page didn't answer, or view counts were off. ๐Ÿ‘ค Author details on every post (on) adds the author's followers, bio, HD photo, topics, Instagram followers and bio links, looked up once per author. Turn either off for faster big runs; the price stays the same.

Recent search sends each search page as it arrives, newest first (the first one at once), so the order is newest first within each batch. Recent, strict waits for every page and sorts all of them, so its first row comes later.

Speed and reliability

Apify runs of this Actor, default 256 MB, all SUCCEEDED with results = charged results:

RunResultsFirst resultWhole runPeak memory
Prefilled run (@mosseri's profile and 80 posts; 4 runs, 2026-10-26)811.6-1.9 s after the container started35-50 s107-111 MB
One profile's posts (@cnn, 1,000; 2026-10-03)1,0014 s64 s64 MB
One post's replies and replies to replies (500; 2026-10-03)5016 s44 s78 MB
10 search terms, 15 posts each (2026-10-03)1507 s52 s111 MB

Bigger runs, same code through Apify datacenter IPs: 2,000 posts of @cnn in 128 s, 1,000 replies in 96 s, 10 search terms ร— 100 posts in 161 s. Inputs are read one after another, so a run's time grows with the number of inputs.

A refused request is retried on a new IP. If Threads answers with a page that looks empty but isn't a real answer, the run checks a known-good search or profile: if that comes back empty too, the input is reported as refused (and nothing is charged) instead of "no results". If every input fails, the run fails with a clear message. A run that Apify restarts never charges a result twice.

Dates

Posted after and Posted before take a date (2026-09-01) or a period (7 days). Posts outside the window are skipped and not charged. Threads' search pages ignored the date parameters we tried logged out (2026-10-26), so the window applies to what the inputs return.

Pricing

Pay per result: $1.59 per 1,000 on Free, $1.29 on Starter, $1.09 on Scale and $0.89 on Business. No start fee. Only results in your dataset are charged; filtered posts and repeats are free. Set a maximum cost per run in the run options and the run stops exactly there.

FAQ

Do I need a Threads or Instagram account? No. Everything comes from what Threads shows logged-out visitors.

Is there a Threads API? Meta's official Threads API only reads your own account. This Actor works like a Threads API for public data: call it from the Apify API, a schedule or an integration and get JSON, CSV or Excel.

Private accounts? When Threads marks an account private, you get its profile row and no posts; the run summary says so.

Followers or following lists? Not offered: the follower and following pages and their API routes answered 404 or 401 to logged-out visitors when we checked (2026-10-26). You get the follower count, plus the linked Instagram's follower and following counts.

Which proxy? Keep the default. Residential is used only as a fallback when Threads refuses datacenter IPs, at no extra cost to you.

Feedback

Missing a field or an input type? Open an issue on the Actor's page; we answer quickly. If the data helped you, a short review on the Store page helps others find it, and helps us a lot.