Threads Profile & Posts Scraper: Followers, Bio & Engagement avatar

Threads Profile & Posts Scraper: Followers, Bio & Engagement

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Threads Profile & Posts Scraper: Followers, Bio & Engagement

Threads Profile & Posts Scraper: Followers, Bio & Engagement

Turn public Threads accounts into rows with exact followers, bio, links and verified badge, plus each recent post's likes, replies, reposts and quotes. Paste usernames, profile links or post links; empty input runs a two-profile sample. $2.50 per 1,000 rows.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Features

Limited permissions

Share

Threads Profile & Posts Scraper

Turn any public Threads account into clean, structured rows. Paste usernames or profile links and get each profile's name, bio, bio links, exact follower count, verified badge and profile picture, followed by the latest posts shown on the profile: text, post time, likes, replies, reposts, quotes, images and videos. Individual post links work too.

No Threads account is needed. Profiles and posts that cannot be read are listed in the run summary and are not charged.

Use cases

  • Influencer research: exact follower counts, bios and links for a list of creators, one row per account.
  • Brand and competitor monitoring: schedule the same list and chart followerCount and each new post's likeCount, replyCount and repostCount over time.
  • Engagement tracking: the latest posts with likes, replies, reposts and quotes, re-run on a schedule to watch them grow.
  • Lead lists: names, bio links and verified badges for a set of accounts, joinable to your own records through userId or username.
  • Content research: the latest posts, images and videos from accounts in a niche, ready to sort by engagement.
  • Campaign reporting: put the campaign's post links in postUrls and keep one row per post with its current counts.

Your first run

You do not have to fill the form to see the output. With no input the Actor reads the same two profiles the Console prefills (nasa, netflix) with three posts each, so a complete sample arrives in seconds. The run summary carries usedExample: true and the run status says it was the example run, so it cannot be mistaken for your own data. Replace the prefilled values to collect your own accounts.

Bulk input

profiles and postUrls accept a list. In the Console, click Bulk edit in either field and paste one username, profile link or post link per line. Usernames (zuck), @ handles (@zuck), threads.com and threads.net links, and links copied from the app with extra parameters all work; duplicates are read once. Lists of a few hundred accounts are fine: allowance is maxItems rows in total, up to 100,000.

Worked costs

What you collectRowsWhat you pay
The first-run sample (2 profiles, 3 posts each)8$0.025
100 accounts, profile rows only (includePosts: false)100$0.255
100 accounts with about 5 posts each~600$1.505
1,000 post links1,000$2.505

One $0.005 run start plus $0.0025 per delivered row. Failed profiles and posts are not charged. A profile takes about a second, so long lists finish well inside the default one-hour timeout.

Quick Start

{
"profiles": ["zuck", "nasa", "https://www.threads.com/@natgeo"],
"postUrls": ["https://www.threads.com/@mosseri/post/DeZvGAMmu4D"],
"maxPostsPerProfile": 25,
"maxItems": 1000
}

Each profile becomes one profile row, followed by one row per recent post. Each post link becomes one post row.

Input

InputTypeDefaultMeaning
profilesarraythe two sample profilesThreads usernames (zuck or @zuck) or profile links (https://www.threads.com/@zuck, threads.net links work too). Repeated profiles are read once. If you leave it empty, the Actor collects the same two profiles the Console prefills (nasa, netflix) and marks the run summary usedExample: true, so a first run still returns a sample.
postUrlsarray[]Individual post links (https://www.threads.com/@user/post/<code>). A post already returned from its profile is not repeated.
includePostsbooleantrueAdd the latest posts shown on each profile. Turn off for profile rows only.
maxPostsPerProfileinteger25Cap on post rows per profile, 1 to 50.
maxItemsinteger1000Total cap on rows (profiles plus posts) for the whole run, up to 100,000.

Give at least one profile or post link, or leave both fields empty for the sample.

Example queries

  • {"profiles": ["netflix", "nba", "espn"]}: three brand accounts and their latest posts.
  • {"profiles": ["mosseri", "zuck"], "includePosts": false}: profile rows only, for a long list of accounts.
  • {"postUrls": ["https://www.threads.com/@zuck/post/DeZtp-TkQHh"]}: one post with its current counts.
  • {"profiles": ["natgeo"], "maxPostsPerProfile": 5}: one profile and at most five posts.

What it returns

Every row has a kind: profile or post. All rows share the same columns, so profiles and posts export into one sheet; columns that do not apply to a row are null (or an empty list).

Profile rows:

FieldMeaning
username, urlThe username and the profile link.
fullNameThe display name.
biographyThe bio text.
bioLinksLinks listed on the profile.
followerCountExact follower count (not rounded).
isVerifiedWhether the account has the verified badge.
isPrivateWhether the profile is marked private.
profilePicUrlThe largest available profile picture.
userIdThe account's numeric ID.
postsReturnedHow many post rows follow for this profile.

Post rows:

FieldMeaning
url, code, postIdThe post link, its short code and its numeric ID.
username, fullName, isVerified, userIdThe post's author.
textThe post text.
createdAtWhen it was posted (UTC, ISO 8601).
likeCount, replyCount, repostCount, quoteCountEngagement counts. likeCount is null when the author hides it.
mediaTypetext, image, video or carousel.
images, videosImage and video links, one per slide for carousels. Videos also carry their cover image.
linkUrlThe web link a post previews, if any.
quotedPostUrlThe post this post quotes, if any.
isPinnedPinned to the top of the profile.
isReplyPart of a thread the author continued, or a reply.
isRepostShown on the profile but written by another account.
profileUsernameThe profile the post was found on (null for rows from post links).

Every row also carries source (profile or post), input (the value you entered), scrapedAt and error (always null in the dataset).

The run summary (OUTPUT) reports sourcesRequested, usedExample (true only for the bare-start sample), items, profiles, posts, errors and the list at sourceErrors.

Output example

{"kind": "profile", "username": "nasa", "url": "https://www.threads.com/@nasa", "isVerified": true, "userId": "28829152388", "fullName": "NASA", "biography": "Making the seemingly impossible, possible. ✨", "bioLinks": [], "followerCount": 12785923, "isPrivate": false, "profilePicUrl": "https://scontent-hel3-1.cdninstagram.com/v/t51.82787-19/669747085_18089786557960389_922072622069351626_n.jpg", "postsReturned": 5, "postId": null, "code": null, "text": null, "createdAt": null, "likeCount": null, "replyCount": null, "repostCount": null, "quoteCount": null, "mediaType": null, "images": [], "videos": [], "linkUrl": null, "quotedPostUrl": null, "isReply": null, "isPinned": null, "isRepost": null, "profileUsername": "nasa", "source": "profile", "input": "nasa", "scrapedAt": "2026-10-20T01:10:00Z", "error": null}
{"kind": "post", "username": "nasa", "url": "https://www.threads.com/@nasa/post/Decc755lYhC", "isVerified": true, "userId": "28829152388", "fullName": "NASA", "biography": null, "bioLinks": [], "followerCount": null, "isPrivate": null, "profilePicUrl": null, "postsReturned": null, "postId": "4007205030373722178", "code": "Decc755lYhC", "text": "Spotted: views of a \"space jellyfish\" following today's launch of NASA’s SpaceX 35th commercial resupply mission to the International Space Station.", "createdAt": "2026-10-13T18:28:06Z", "likeCount": 41103, "replyCount": 592, "repostCount": 4378, "quoteCount": 282, "mediaType": "carousel", "images": ["https://scontent-hel3-1.cdninstagram.com/v/t51.82787-15/847998870_18123835888960389_7278135639222434691_n.jpg", "https://scontent-hel3-1.cdninstagram.com/v/t51.82787-15/846964916_18123835993960389_2780682481226156847_n.jpg", "https://scontent-hel3-1.cdninstagram.com/v/t51.82787-15/849508659_18123836011960389_1894048710237085880_n.jpg", "https://scontent-hel3-1.cdninstagram.com/v/t51.82787-15/845941405_18123836032960389_8401705155110598071_n.jpg"], "videos": [], "linkUrl": null, "quotedPostUrl": null, "isReply": false, "isPinned": false, "isRepost": false, "profileUsername": "nasa", "source": "profile", "input": "nasa", "scrapedAt": "2026-10-20T01:10:00Z", "error": null}

Image links are shortened here; real rows carry the full links.

Failed profiles and posts

A profile that does not exist, is not publicly visible, or cannot be read is listed in the run summary (OUTPUT.sourceErrors) with a short code such as NOT_FOUND, RATE_LIMITED or LOGIN_WALL, and the run goes on with the rest. These entries are not dataset rows and are not charged. A run in which nothing at all could be read fails with a clear message.

Limits and caveats

  • Threads shows visitors only the first page of a profile, usually 4 to 10 recent posts; older history, replies tabs, follower lists and search are not included.
  • Counts are read at run time and change quickly on popular posts.
  • Some well-known handles have no public Threads profile under that name (for example vogue or bbcnews); they are reported as NOT_FOUND. Private or restricted profiles may likewise show no posts or be reported as NOT_FOUND.
  • Media links are the ones Threads serves and expire after some days; download what you need soon after the run.
  • Automated access is subject to Threads' terms; use this actor only where you have the necessary permissions and a lawful basis.

FAQ

Do I need a Threads or Instagram account? No. Only public information is collected.

What happens if I just press Start? The Actor collects the sample profiles nasa and netflix (three posts each) and marks the run summary usedExample: true. It is a real run and is charged normally (about $0.025), so check the rows before adding your own list.

Can I mix usernames, profile links and post links? Yes. Put usernames and profile links in profiles, post links in postUrls. Duplicates are returned once.

How many posts will I get per profile? The posts on the first page of the profile, usually 4 to 10, capped by maxPostsPerProfile. Setting the cap above about 10 rarely adds more.

Is the follower count exact? Yes, followerCount is the exact number, not a rounded label like "5.7M".

Price

$0.0025 per result (each profile row and each post row), plus $0.005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Profiles and posts that fail are not charged. Platform usage is included in these prices.

At $2.50 per 1,000 rows this matches the largest Threads scraper's per-row price ($2.50 per 1,000 on the Free plan) with a $0.005 start instead of $0.02, and it is half the platform's own Meta Threads Profile Scraper ($5.00 per 1,000 profiles). Post rows and profile rows cost the same here, so a mixed run of profiles and their posts stays at $2.50 per 1,000.