Threads Scraper avatar

Threads Scraper

Pricing

from $2.30 / 1,000 post results

Go to Apify Store
Threads Scraper

Threads Scraper

[💰 $2.30 / 1K] Extract public Threads profiles and posts — follower counts, bios, verified status, post text, likes, replies, reposts, media, hashtags and mentions. Paste profile URLs, @handles, or search by keyword. No login needed.

Pricing

from $2.30 / 1,000 post results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull public profiles and posts from Threads at scale — follower counts, verified status, bios, full engagement metrics, and media in one structured feed. No login, no accounts, no manual scrolling: paste a handle, a profile link, a single post link, or a keyword and get clean JSON back. Built for social-media analysts, brand-monitoring teams, and lead-generation researchers who need public Threads data without managing logins or babysitting a browser.

Why This Scraper?

  • Both profiles and posts in a single run — two record types side by side: profile rows (handle, full name, bio, follower count, verified badge, user ID) and post rows (text, engagement, media), each tagged with a recordType so you can split them downstream.
  • 20+ fields per post — likes, replies, reposts, quotes, media type, media URLs with width/height, hashtags, mentions, external links, reply/repost flags, repost lineage, Unix timestamp, ISO date, and the canonical post URL.
  • Four input modes, auto-detected — paste a @handle, a bare username, a full profile URL, or an individual post URL, and mix all four in one list. The scraper figures out what each entry is — no mode toggle to configure.
  • Keyword search built in — type a topic like artificial intelligence or world cup and collect the matching public posts, complete with the same engagement and media fields.
  • Date-window filteringpostedAfter and postedBefore keep only posts inside the date range you care about, so a profile sweep returns just the period you're analyzing.
  • Verified-status and follower counts on every profile — flag influential and authentic accounts instantly with the isVerified badge and exact followerCount.
  • Media broken out per item — photo, video, and carousel posts each return a media array of { type, url, width, height } entries, with mediaType summarizing the post at a glance.
  • Hashtag and mention extraction — every post ships clean hashtags, mentions, and urls arrays, parsed from the post's own link structure rather than guessed from raw text.
  • Repost lineageisRepost and repostedFrom distinguish genuine reposts from self-thread replies, so your reach analysis isn't polluted by in-thread chatter.

Use Cases

Brand Monitoring

  • Track what verified accounts and large creators are posting about your brand
  • Watch engagement on your own Threads posts (likes, replies, reposts, quotes) over time
  • Catch keyword mentions of your product or campaign as they surface in public search

Influencer & Creator Research

  • Build shortlists by follower count and verified status
  • Capture a creator's most recent public posts with full engagement metrics
  • Compare media mix (photo vs. video vs. carousel) across candidate creators

Lead Generation

  • Collect public profile details — handle, name, bio, follower count — for outreach lists
  • Surface accounts posting about a niche topic via keyword search
  • Enrich existing contact lists with verified-status and audience-size signals

Trend & Content Analysis

  • Mine hashtags and mentions across a topic to map conversation clusters
  • Measure which content formats earn the most reposts and replies
  • Window posts by date to study a launch, event, or news cycle

Competitive Intelligence

  • Benchmark a competitor's posting cadence and engagement against your own
  • Track follower-count movement on rival accounts over repeated runs
  • See which of a competitor's posts go viral by reposts and quote counts

Getting Started

Scrape one profile

{
"startUrls": ["https://www.threads.net/@zuck"]
}

Multiple profiles, posts only

{
"startUrls": ["@zuck", "mosseri", "https://www.threads.net/@natgeo"],
"includeProfile": false,
"maxPostsPerProfile": 10
}

Keyword search with a date window

{
"searchQueries": ["artificial intelligence", "world cup"],
"postedAfter": "2025-01-01",
"postedBefore": "2025-12-31",
"maxResults": 5
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
startUrlsarray["https://www.threads.net/@zuck"]Profile links, @handles, plain usernames, or individual post links — mix them freely. A profile or handle returns that profile plus its public posts; a post link returns just that post.
searchQueriesarray[]Keywords or phrases to find matching public posts, e.g. world cup. Each keyword returns the public posts available without logging in.

Profiles & Posts

ParameterTypeDefaultDescription
includeProfilebooleantrueAlso return the profile row (full name, bio, follower count, verified status) for each handle. Turn off if you only want posts.
includePostsbooleantrueCollect each profile's public posts (text, likes, replies, reposts, media). Turn off for faster, cheaper profile-only runs.
maxPostsPerProfileinteger25Maximum public posts per profile, newest first. Set to 0 for all available.

Filters & Limits

ParameterTypeDefaultDescription
postedAfterstring""Keep only posts published on or after this date, e.g. 2025-01-01. Blank means no lower limit.
postedBeforestring""Keep only posts published on or before this date, e.g. 2025-12-31. Blank means no upper limit.
maxResultsinteger50Maximum number of profiles and search keywords to process across the whole run. Set to 0 for no limit.

Output

The dataset contains two record types. Use the recordType field to separate them, or open the Profiles and Posts views in the dataset tab.

Profile record

{
"recordType": "profile",
"userId": "314216",
"username": "zuck",
"fullName": "Mark Zuckerberg",
"biography": "Building the future of human connection.",
"followerCount": 3850000,
"isVerified": true,
"profilePicUrl": "https://instagram.fxxx.fbcdn.net/v/zuck.jpg",
"url": "https://www.threads.com/@zuck",
"scrapedAt": "2026-06-28T14:02:11.482000+00:00"
}
FieldTypeDescription
recordTypestringAlways "profile".
userIdstringNumeric Threads user ID.
usernamestringHandle without the @.
fullNamestringDisplay name.
biographystringProfile bio text.
followerCountintegerNumber of followers.
isVerifiedbooleanWhether the account carries a verified badge.
profilePicUrlstringProfile picture URL (highest available resolution).
urlstringCanonical profile URL.
scrapedAtstringISO timestamp of capture.

Post record

{
"recordType": "post",
"postId": "3141592653589793",
"code": "Cxyz123AbCd",
"username": "zuck",
"fullName": "Mark Zuckerberg",
"isVerified": true,
"text": "Excited to share what we've been building. #AI",
"likeCount": 48210,
"replyCount": 1320,
"repostCount": 905,
"quoteCount": 211,
"mediaType": "photo",
"media": [{ "type": "photo", "url": "https://.../image.jpg", "width": 1080, "height": 1350 }],
"hashtags": ["AI"],
"mentions": ["mosseri"],
"urls": ["https://about.fb.com/news"],
"isReply": false,
"isRepost": false,
"repostedFrom": null,
"timestamp": 1751120400,
"date": "2026-06-28T13:00:00+00:00",
"url": "https://www.threads.com/@zuck/post/Cxyz123AbCd",
"scrapedAt": "2026-06-28T14:02:11.482000+00:00"
}

Core fields

FieldTypeDescription
recordTypestringAlways "post".
postIdstringInternal post ID.
codestringShortcode in the post URL.
usernamestringAuthor handle.
fullNamestringAuthor display name.
isVerifiedbooleanWhether the author is verified.
textstringPost caption / body text.
urlstringCanonical post URL.
timestampintegerPublish time as Unix epoch seconds.
datestringPublish time as an ISO date.
scrapedAtstringISO timestamp of capture.

Engagement & thread

FieldTypeDescription
likeCountintegerNumber of likes.
replyCountintegerNumber of replies.
repostCountintegerNumber of reposts.
quoteCountintegerNumber of quote posts.
isReplybooleanWhether the post is a reply.
isRepostbooleanWhether the post is a genuine repost.
repostedFromstringOriginal author handle when the post is a repost, otherwise null.

Media & entities

FieldTypeDescription
mediaTypestringtext, photo, video, or carousel.
mediaarrayMedia items, each { type, url, width, height }.
hashtagsarrayHashtags found in the post.
mentionsarray@mentions found in the post.
urlsarrayExternal links found in the post.

Tips for Best Results

  • Mix entry types in one list. startUrls happily accepts handles, profile links, and post links together — combine a handle sweep with a few specific post links in a single run.
  • Expect the most recent public posts per profile. Without a login, Threads publishes roughly the latest dozen posts on a profile's public page. The scraper returns those newest posts; set a smaller maxPostsPerProfile if you only need the top few.
  • Keyword search returns the current public results. Each search keyword yields the public posts Threads shows for that term — about 20 of the most recent matches per keyword. Use several focused keywords rather than one broad one to widen coverage. Search returns post rows only (no profile rows) — add the post authors' handles to startUrls if you also want their profile details.
  • Turn off includePosts for fast contact lists. When you only need profile details (name, bio, followers, verified status), disabling posts makes runs faster and cheaper.
  • Use the date window to isolate a campaign. Set postedAfter and postedBefore around a launch or event to drop everything outside the period you're analyzing.
  • Filter on isVerified and followerCount downstream to rank creators and prioritize authentic, high-reach accounts for outreach.
  • Re-run on a schedule to track movement. Follower counts and engagement change over time — repeat runs build a trend line for the accounts and topics you watch.

Pricing

From $2.30 per 1,000 results — one of the most cost-effective ways to collect public Threads data. You're charged per result, with two simple rates: each profile collected costs $4.80 per 1,000 ($0.0048 each), and each post collected costs $2.30 per 1,000 ($0.0023 each), plus a small fixed $0.01 start fee per run. There are no compute or time-based charges — you pay per result, plus that one-time per-run start fee.

RunProfiles costPosts costStart feeTotal
10 profiles + 100 posts$0.05$0.23$0.01$0.29
50 profiles + 500 posts$0.24$1.15$0.01$1.40
100 profiles + 1,000 posts$0.48$2.30$0.01$2.79
500 profiles + 5,000 posts$2.40$11.50$0.01$13.91

Apify's loyalty discount tiers apply automatically on top of these rates — Bronze, Silver, and Gold subscribers pay progressively less, so the more you run, the lower your effective cost per result.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps:

  • Zapier / Make / n8n — Workflow automation
  • Google Sheets — Direct spreadsheet export
  • Slack / Email — Notifications on new results
  • Webhooks — Trigger custom APIs on run completion
  • Apify API — Full programmatic access

This scraper collects only publicly available Threads data — no login, no private content, no follower lists, and no data behind any access wall. Use it in line with Threads' and Meta's terms of service and all applicable laws, including data-protection regulations such as GDPR and CCPA. Do not use collected personal data for spam, harassment, or any purpose that infringes on individuals' privacy rights. You are responsible for ensuring your use of the data is lawful and ethical.