Threads User Posts Scraper avatar

Threads User Posts Scraper

Pricing

from $1.50 / 1,000 posts

Go to Apify Store
Threads User Posts Scraper

Threads User Posts Scraper

Collect public Threads posts, account replies, and reposts from the profiles you choose. Get text, dates, author details, media links, and available engagement counts for research and reporting. No Threads login is needed.

Pricing

from $1.50 / 1,000 posts

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

🧵 Turn public Threads account posts into research data

Researchers, social media teams, and developers can collect public Threads posts from the accounts they choose. Get post text, dates, author details, media links, and available engagement counts in a dataset for research and reporting. No Threads login is needed.

  • Compare the public engagement counts on posts from a list of creators.
  • Save posts from brand accounts to review their published content.
  • Collect replies written by chosen accounts to study what they discuss.
  • Review the public posts that selected accounts share as reposts.
  • Export post text, dates, and media links for a content report.

📦 Post content, authors, and public counts

Each saved row is one public post. Original posts, account replies, and reposts use the same row shape. Author details describe the post's author, who may differ from the submitted account when you collect reposts.

Rows include source IDs and publication times. Other fields appear when the source provides them, such as likes, replies, reposts, quotes, shares, views, media, topics, links, polls, and profile details. Missing data stays unknown rather than becoming a made-up value.

The first eligible match for a post is saved as it is found. If another submitted handle, link, or ID finds the same post later, that match is ignored. submittedProfile shows only the first saved match.

▶️ Collect posts from your chosen Threads accounts

  1. Add accounts to Threads profiles using handles, @handles, full profile links, or numeric account IDs.
  2. Choose original posts, account replies, reposts, or a mix.
  3. Set Maximum posts for a smaller run, or leave it empty to collect all available results until the source is exhausted.
  4. Start the Actor and open the dataset output. Export the data as JSON, CSV, or Excel.

Only public content is covered. If one profile cannot be read, the Actor logs a warning and continues with the others. Public access does not guarantee every historical post.

⚙️ Input

FieldTypeWhat it does
profilesarray of stringsRequired. Add 1 to 50 accounts as handles, @handles, full Threads profile links, or numeric account IDs. Full links must start with https://.
contentTypesarray of stringsChoose one or more of posts, replies, and reposts. Replies are written by the submitted accounts. If omitted, only original posts are collected.
maxPostsintegerSets a total post limit across all submitted profiles, with a minimum of 1 and no fixed upper bound in the schema. Leave it empty to collect all available results of the selected types until the source is exhausted.

Example input

This public input comes from a successful current-beta run using the default profile and post limit:

{
"profiles": [
"@zuck"
],
"contentTypes": [
"posts"
],
"maxPosts": 3
}

🧾 Output

The dataset output is a string link to the default dataset overview. Export JSON or use the dataset API to read all saved fields.

Output link

FieldTypeWhat it does
datasetstringOpens the default dataset overview with the saved Threads posts.

Post row fields

All content types share this table. postId, publishedAt, author, author.accountId, and author.username are required. A row also has nonblank text or at least one media entry with a media URL or accessibility text. Other fields can be missing when unavailable. Dotted paths describe nested objects; [] marks array entries.

FieldTypeWhat it does
postIdstringThe ID Threads assigned to the post.
submittedProfilestringThe first submitted handle, profile link, or account ID whose feed led to the saved post.
textstringText written in the post.
publishedAtstringSource publication date and time in ISO format.
authorobjectPublic details about the post author.
author.accountIdstringThe author's Threads account ID.
author.usernamestringThe author's public username.
author.displayNamestringThe author's public display name.
author.isVerifiedbooleanWhether Threads marks the author as verified.
author.profileImageUrlstringSource link to the author's profile image.
author.followerCountintegerThe follower count reported by Threads.
author.biographystringThe author's public bio.
author.emailsarray of stringsEmail addresses published in the author's bio.
author.phoneNumbersarray of stringsPhone numbers published in the author's bio.
author.fediverseSharingEnabledbooleanWhether Threads says the author shares posts to the Fediverse.
author.profileLinksarray of stringsLinks shown on the author's public profile.
author.profileTopicsarray of stringsTopic labels shown on the author's profile.
author.linkedPodcastsarray of objectsPodcasts linked from the author's profile.
author.linkedPodcasts[].titlestringThe linked podcast title.
author.linkedPodcasts[].urlstringThe linked podcast URL.
likeCountintegerSource-reported likes.
replyCountintegerSource-reported replies.
repostCountintegerSource-reported reposts.
quoteCountintegerSource-reported quotes.
viewCountintegerPublic views reported by Threads.
shareCountintegerSource-reported shares.
mediaarray of objectsPhotos or videos attached to the post.
media[].mediaTypestringThe source media type. Required for each media entry.
media[].mediaUrlstringSource photo or video URL.
media[].altTextstringSource accessibility text.
media[].widthintegerSource media width in pixels.
media[].heightintegerSource media height in pixels.
media[].coverUrlstringSource video cover image URL.
media[].hasAudiobooleanWhether Threads reports that the video has audio.
topicLabelsarray of stringsTopic or trend labels attached to the post.
hashtagsarray of stringsHashtags written in the post.
sharedLinksarray of stringsWeb destinations shared in the post.
stickersarray of objectsPublic stickers attached to the post.
stickers[].stickerIdstringSource sticker ID for matching the same sticker across posts.
stickers[].imageUrlstringSource sticker image link. Each sticker has an ID, an image link, or both.
linkPreviewTitlesarray of stringsTitles shown in attached link previews.
mentionedAccountsarray of objectsAccounts Threads resolved from written mentions.
mentionedAccounts[].accountIdstringMentioned account ID, when available.
mentionedAccounts[].usernamestringMentioned username. Required for each account entry.
relatedPostsarray of objectsSource references for replies, quotes, or reposts.
relatedPosts[].relationTypestringRelationship: reply, quote, or repost. Required for each reference.
relatedPosts[].postIdstringRelated post ID. Required for each reference.
pollobjectPublic poll options and vote details.
poll.closesAtstringSource voting close date and time in ISO format.
poll.isClosedbooleanWhether Threads reports that voting has closed.
poll.optionsarray of objectsPoll answer options. Required when a poll object is present.
poll.options[].textstringAnswer text. Required for each option.
poll.options[].voteCountintegerSource vote count for the option.
languagestringSource language label.
taggedPlacesarray of stringsPlace names attached to the post.
replySettingsstringThe source reply-permission setting.
isEditedbooleanWhether Threads labels the post as edited.
isPinnedbooleanWhether Threads labels the post as pinned.
isSponsoredbooleanWhether Threads labels the post as sponsored.
isAiLabeledbooleanWhether Threads labels the post as AI generated.
isSpoilerLabeledbooleanWhether Threads marks post content as a spoiler.

Example post row

This complete row comes from a successful current-beta run. Source text and public values are shown as returned.

{
"postId": "3996155940894885511",
"submittedProfile": "@zuck",
"publishedAt": "2026-09-28T12:35:32.000Z",
"author": {
"accountId": "63055343223",
"username": "zuck",
"displayName": "Mark Zuckerberg",
"isVerified": true,
"profileImageUrl": "https://scontent-dfw5-2.cdninstagram.com/v/t51.82787-19/825322135_17989325280103224_1252773933700107438_n.jpg?stp=dst-jpg_s640x640_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmV4cGVyaW1lbnRhbCJ9&_nc_ht=scontent-dfw5-2.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2gEs-Cc8nbOXQ28CObZ7k-ax2soCBsvvM9Hju6I50QaHxIR9KP_t_lSsBA1TOH8GtWU&_nc_ohc=m7kbRoL6cbMQ7kNvwEuxwri&_nc_gid=9wOVEKyZvpCm5TokyhIuTQ&edm=APs17CUBAAAA&ccb=7-5&oh=00_AQMEauO6JXpwFYT3_pjKcSIC2zvU5kdo_KipdcuWjf9Elw&oe=6ACF40EB&_nc_sid=10d13b",
"followerCount": 5745084,
"biography": "Mostly superintelligence and MMA takes",
"fediverseSharingEnabled": true,
"profileTopics": [
"AI Threads",
"UFC Threads",
"AI",
"MMA",
"memes"
]
},
"text": "We believe superintelligence will create significant new opportunities for all people and businesses. Meta already serves billions of people at scale and helps hundreds of millions of businesses reach customers. Today we are starting the next major pillar of our business, Meta Enterprise Platform, to help businesses use AI to grow and transform in new ways as well.",
"likeCount": 2692,
"replyCount": 2616,
"repostCount": 170,
"quoteCount": 156,
"shareCount": 179,
"replySettings": "everyone",
"isEdited": false,
"isPinned": false,
"isSponsored": false,
"isSpoilerLabeled": false,
"isAiLabeled": false,
"viewCount": 415811
}

💳 Pricing

You pay for each public post that is read, checked, and saved from a submitted profile. This includes saved account replies and reposted posts when you select them. Later matches for the same post are ignored within the run.

The Post event covers the saved post, not setup work, failed reads, or profiles with no saved posts. See the Actor's Pricing tab for your current tier price. Use maxPosts to set a total post limit.

🔌 Integrations

Open the dataset output in Apify Console, download JSON, CSV, or Excel, or read rows through the Apify dataset API in your own workflow. Apify schedules let you run the same input again; keep past exports yourself if you need a history.

❓ FAQ

Are account replies the same as comments under an account's posts?

No. replies collects public replies written by the accounts you submit. It does not collect other users' full comment threads.

What happens when two submitted profiles lead to the same post?

The first eligible match is saved. Later matches are ignored, and the row is not rewritten to add them. submittedProfile keeps only the first saved match.

Does Maximum posts apply to each account?

No. maxPosts is one total limit across all submitted profiles. Leave it empty to collect all available results of the selected types until the source is exhausted.

Can I collect every post an account has ever published?

The Actor collects available public content. It cannot guarantee access to every historical post, even when you leave the post limit empty.

Why are some counts or profile details missing?

Optional fields depend on what Threads makes public. Missing data is unknown. A missing count does not mean zero, and a missing label does not mean false.

Can I search by keyword or submit a single post URL?

This Actor reads feeds from known accounts. Keyword search, account discovery, and standalone post-detail collection are outside its scope. See Related Actors for other Threads workflows.

Does the Actor keep media files or track deleted posts?

No. It returns available source media links rather than a permanent media archive. It does not retain history, compare runs, or detect deletions.

Do I need a Threads login?

No. The Actor collects public content without a Threads login. Private content is outside its scope.

📝 Changelog

v0.0 (09-10-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré