Threads Public Post, Reply & Profile Data Extractor avatar

Threads Public Post, Reply & Profile Data Extractor

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Threads Public Post, Reply & Profile Data Extractor

Threads Public Post, Reply & Profile Data Extractor

Pull posts, replies, media, reposts, keyword search, hashtag search, or a post's reply thread from Threads, with real engagement counts, captions, media, and profile bios.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

vexaloom-labs

vexaloom-labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Pick a mode and this actor reads whatever that surface shows a logged-out visitor on Threads — a profile's posts, replies or media, a keyword or hashtag search, or a single post with its visible replies — and returns it as structured records.

What this actor does

  • Scrapes seven surfaces via one mode switch: profile posts, profile replies, profile media, profile reposts, keyword search, hashtag/topic search, and a single post plus its replies.
  • Reads engagement counts (likes, comments, reposts, shares) directly off each post's action buttons, including true zero counts that Threads otherwise hides.
  • Detects and pulls the first image and any attached external link card (URL, domain, link title) on posts that have one.
  • Can emit a separate profile-metadata record (display name, bio, follower count, verification, linked Instagram) alongside a profile mode's posts.
  • Omits any field a given post or profile doesn't actually have — you never see a placeholder like "N/A" or an empty string.

Output per post

FieldDescription
recordTypeAlways "post" for this record type.
modeThe mode that produced this record.
postUrlFull URL of the post on Threads.
shortcodeThreads' short ID for the post.
authorUsernameUsername of the post's author.
postTextCaption text, when the post has one.
publishedAtISO 8601 timestamp of when the post was published.
likeCount, commentCount, repostCount, shareCountEngagement counts read from the post's action buttons (true zero is reported, not omitted); a count is left out only if that button isn't rendered on the card.
hasImage, hasVideoWhether the post includes an image or video (always present, true or false).
imageUrlURL of the post's first image, when present.
externalLinkUrlResolved destination URL of an attached link card, when present.
externalLinkDomainDomain shown on the link card.
externalLinkTitleTitle text shown on the link card.
isMainPostIn postReplies mode only: true for the post itself, false for each reply under it.
scrapedAtISO 8601 UTC timestamp of when the record was scraped.

Output per profile (when includeProfileInfo is on)

Only the four profile modes produce this record, at most one per run, and it does not count toward maxItems. It is skipped if the profile header can't be read.

FieldDescription
recordTypeAlways "profile" for this record type.
modeThe profile mode that produced this record.
usernameThe profile's username.
profileUrlFull URL of the profile on Threads.
displayNameThe account's display name.
bioBio text, when set.
followersCountFollower count.
threadsCountTotal number of Threads posted by the account.
isVerifiedPresent and true only when a verification badge is found on the rendered profile page.
instagramUrlThe first Instagram link found on the rendered profile page, normally the account's connected Instagram profile.
scrapedAtISO 8601 UTC timestamp of when the record was scraped.

Input

FieldTypeDefaultDescription
modeString (select)profileprofile, profileReplies, profileMedia, profileReposts, search, tag, or postReplies. Required.
usernameString–Threads username without @. Required for the four profile modes.
searchQueryString–Keyword or phrase to search. Required for search mode.
tagString–Hashtag/topic without #. Required for tag mode.
postUrlString–Full Threads post URL. Required for postReplies mode.
sortByString (select)defaultdefault (top/relevance) or recent, for search mode.
includeProfileInfoBooleantrueAlso emit a profile-metadata record for profile modes. Ignored in search, tag and postReplies.
maxItemsInteger25Maximum post/reply records to return (1–100). The optional profile record is not counted.
proxyConfigurationObject{"useApifyProxy": true}Apify proxy configuration.

Example: a profile's recent posts

{ "mode": "profile", "username": "zuck", "maxItems": 25 }

Example: keyword search, most recent first

{ "mode": "search", "searchQuery": "openai", "sortBy": "recent", "maxItems": 25 }
{ "mode": "tag", "tag": "ai", "maxItems": 25 }

Example: a post and its visible replies

{ "mode": "postReplies", "postUrl": "https://www.threads.com/@zuck/post/DZpPDXbCeTt", "maxItems": 25 }

Use cases

  • Social listening — track mentions of a brand, product, or topic via keyword or hashtag search.
  • Competitor monitoring — watch a competitor's Threads profile for new posts and engagement trends.
  • Partnership vetting — check an account's follower count, bio, and recent post performance before reaching out.
  • Content curation — pull recent posts on a topic to feature in a newsletter or roundup.
  • Thread analysis — measure reply and repost activity on a specific post.

FAQ

Do I need a Threads or Instagram account? No. Everything returned here is visible to anyone browsing Threads while logged out.

Do I need to configure a proxy? No. proxyConfiguration defaults to Apify Proxy with its automatic (datacenter) selection, and you can also turn it off to send requests directly.

Why do I only get a handful of results per run? Threads caps how much content it shows a logged-out visitor — after a bounded window of recent posts it shows a "Log in to see more" wall. This actor returns exactly that visible window (typically 4-25 items depending on the page) and can't go further without a login, which it doesn't use.

Why is postText missing on some posts? Image- or video-only posts can have no caption at all; the field is simply left out rather than filled with a placeholder.

Is likeCount: 0 a real value or a missing field? It's real. Threads hides a button's numeric badge entirely when the count is zero; this actor reads each engagement button individually and reports the true count, including zero.

Are the engagement counts exact? They reflect what Threads itself displays (e.g. "1.2K" parsed to 1200), which is Threads' own abbreviated public count for larger numbers, not a guaranteed exact figure.

Can I scrape private accounts? No. Only public profiles and posts are reachable without logging in.

What happens if nothing is visible? If the page doesn't exist (404), shows only a login wall, or has no posts in the logged-out window, the run finishes with an explanatory status message and an empty dataset. No placeholder records are written.

Is this affiliated with Threads or Meta? No. This is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc.