Threads Scraper: Profiles, Posts & Replies avatar

Threads Scraper: Profiles, Posts & Replies

Pricing

from $1.00 / 1,000 posts

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

Threads Scraper: Profiles, Posts & Replies

Public Threads (threads.com) profiles with followers and bio, their latest posts, and single post pages with visible replies: text, likes, replies, reposts, quotes, media. No login, no browser. $1.00 per 1,000 posts.

Pricing

from $1.00 / 1,000 posts

Rating

0.0

(0)

Developer

subimpact

subimpact

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

5 days ago

Last modified

Share

Read public Threads (threads.com) profiles, their latest posts, and single post pages with their visible replies. Plain HTTP, no login, no API key, no browser.

Each run gives you three kinds of row in one dataset:

  • one profile row per profile: username, user id, full name, bio, bio links, follower count, verified and private flags, avatar and how many posts the page carried
  • one post row per post: text, creation time, likes, reply / repost / quote / reshare counts, image and video URLs, link preview, author, quoted post
  • one reply row per visible reply of a post link, with the code of the post it was rendered under

Rows are pushed one at a time as soon as they are parsed, so a run that hits its time limit still delivers everything it collected.

Input

{
"usernames": ["zuck", "nasa"],
"postUrls": ["https://www.threads.com/@zuck/post/DeZtp-TkQHh"],
"maxPostsPerProfile": 15,
"includeReplies": true,
"maxRepliesPerPost": 20,
"maxItems": 200,
"proxyConfiguration": { "useApifyProxy": true }
}

usernames accepts zuck, @zuck, https://www.threads.com/@zuck and https://www.threads.net/@zuck. postUrls accepts https://www.threads.com/@user/post/<code> and the .net form.

An entry in either list that cannot be read (a typo or another site's link) does not fail the run: it becomes its own error row with your entry in inputValue and the reason in error, it is never charged, and the remaining entries are scraped as usual. Blank lines are skipped. Only a run where every entry is unreadable fails, with a message naming the rejected entries.

Give usernames, postUrls, or both. If you leave both out, the actor reads the profile zuck so that a one-click run still returns data. Both fields are optional in the form on purpose: neither carries a default, so a run that only sets postUrls never also scrapes a profile.

maxPostsPerProfile (0 to 50, 0 means the profile row only), includeReplies, maxRepliesPerPost (0 to 100) and maxItems (1 to 10000, the cap on charged rows) bound the size of a run. The default run of the two prefilled profiles delivers 2 profile rows and 30 post rows for about $0.034.

Output

One real profile row, trimmed here to the fields you use most (avatar and profile picture URLs are long CDN links):

{
"rowType": "profile",
"username": "zuck",
"userId": "63055343223",
"fullName": "Mark Zuckerberg",
"bio": "Mostly superintelligence and MMA takes",
"bioLinks": [],
"followers": 5750904,
"verified": true,
"isPrivate": false,
"profileUrl": "https://www.threads.com/@zuck",
"postsInPage": 33,
"status": "ok",
"error": null,
"inputValue": "zuck",
"scrapedAt": "2026-10-29T12:00:00.000Z"
}

One real post row from that profile:

{
"rowType": "post",
"postCode": "DeZtp-TkQHh",
"postId": "4006434140014576097",
"postUrl": "https://www.threads.com/@zuck/post/DeZtp-TkQHh",
"authorUsername": "zuck",
"authorId": "63055343223",
"authorVerified": true,
"text": "Introducing Muse Wonder, our new family of frontier models with state of the art performance for personal and professional agentic work.",
"createdAt": "2026-10-12T16:56:29.000Z",
"likes": 2141,
"replies": 615,
"reposts": 170,
"quotes": 62,
"reshares": 148,
"views": null,
"isReply": false,
"parentPostCode": null,
"quotedPostCode": null,
"imageUrls": ["https://scontent-iad6-1.cdninstagram.com/..."],
"videoUrls": [],
"linkUrl": null,
"isPinned": false,
"sourceProfile": "zuck",
"sourcePostUrl": null,
"status": "ok",
"error": null,
"scrapedAt": "2026-10-29T12:00:00.000Z"
}

A reply row from the same run has "rowType": "reply", its own postCode, parentPostCode set to the post it was rendered under, and sourcePostUrl set to the post link you asked for.

Every field is described in the dataset schema. status is ok, not_found_or_login_wall, error or skipped; only ok rows are charged.

How this compares

Free-plan list prices checked on 2026-10-29. Competitor platform usage is billed separately: see their listings.

ActorPriceNotes
futurizerush/meta-threads-scraper$2.50 per 1,000 results plus $0.02 per run start1,946 users in 30 days
apify/threads-profile-api-scraper$5.00 per 1,000 profiles673 users in 30 days
this actor$1.00 per 1,000 posts, $2.00 per 1,000 profiles, no start feeprofiles, posts and visible replies in one dataset

Pricing

Pay per event:

  • $0.002 per profile row (profile)
  • $0.001 per post or reply row (post)

There is no start fee. You are charged only after a row has been pushed, and never for error rows, missing profiles, login walls or an empty result. Apify platform usage (compute and proxy) is billed on top.

Limits

  • About the 15 latest threads of a profile: threads.com serves one profile page with no deeper pagination, so a profile gives the threads in that page (each thread can hold several posts) and nothing older.
  • No search, hashtag or home feed pages; profiles and single post links only.
  • Public accounts only. A private or missing profile, or a login wall, is reported as not_found_or_login_wall and is not charged.
  • Only the replies threads.com renders on the post page are available. There is no way to page through further replies.
  • View counts are published for some posts only; views stays null when Threads does not print one.
  • One request per profile and one per post link, retried up to 3 times with a fresh proxy session.

Responsible use

Threads' robots.txt says automated collection needs Meta's permission. This actor reads public pages only, holds no login and no cookies, and returns what any visitor sees. You are responsible for how you use the data: comply with Meta's terms and with privacy law in your jurisdiction, and do not use it for mass profiling or harassment.