Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
Threads Scraper icon

Threads Scraper

Scrape public Threads profiles and recent posts without login: bios, followers, post text, likes, timestamps and media URLs. From $0.40 per 1,000 results.

29 runs on Apify $0.0004 per Threads profile or post ($0.4 / 1,000)
Run this in the cloudRun on Apify →

Social Media Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust profiles, maxPostsPerProfile, query (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0004 per Threads profile or post = $0.4 per 1,000

You are charged forWhenPrice
Threads profile or postOne genuine public Threads profile or post row. Samples and diagnostics are free.$0.0004
Actor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).$0.001

Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-04, and they are what you are actually charged.

Inputs

FieldWhat it doesType
profilesPublic Threads handles or profile URLs. Leave empty for an uncharged sample row.array
maxPostsPerProfileMaximum genuine public posts saved for each supplied public profile.integer
queryOptional case-insensitive text filter applied to posts from the supplied profiles. This is not a global Threads search.string
includeProfileSave one public profile row for every successfully resolved handle.boolean
fallbackToResidentialDirect HTTP is always attempted first. When enabled, one blocked or transient request is retried through the supplied Apify proxy settings.boolean

What you get

A structured dataset — each result includes fields like:

recordTypeusernamedisplayNamefollowerCountisVerifiedprofileUrltextlikeCountpublishedAtpostUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Social Media Scrapers

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

Facebook Pages Scraper iconSocial Media Scrapers

Facebook Pages Scraper

Scrape public Facebook Page names, categories, likes, talking-about counts, verified badges and images without login.

Ready to run — no setup

LinkedIn Profile Posts Scraper iconSocial Media Scrapers

LinkedIn Profile Posts Scraper

LinkedIn profile posts scraper at $0.90 per 1,000 posts, flat on every plan. Post text, author, image, publish time and URL.

Ready to run — no setup

LinkedIn Company Posts Scraper iconSocial Media Scrapers

LinkedIn Company Posts Scraper

LinkedIn company posts scraper at $0.90 per 1,000 posts plus a $0.001 run start. Public post text, reactions, comments and URLs. No login or cookies needed.

Ready to run — no setup

LinkedIn Post Comments Scraper iconSocial Media Scrapers

LinkedIn Post Comments Scraper

Scrape public LinkedIn post comments: author name, profile URL, reaction count. No login or cookie. Up to 10 per post.

Ready to run — no setup

RedNote Scraper iconSocial Media Scrapers

RedNote Scraper

Scrape public RedNote (Xiaohongshu) notes: description, author, likes, collects, comments, shares and images.

Ready to run — no setup

RedNote (Xiaohongshu) Profile Scraper iconSocial Media Scrapers

RedNote (Xiaohongshu) Profile Scraper

RedNote (Xiaohongshu) profile scraper API. Nickname, RedNote ID, follower counts, likes and collects, verification, IP location, gender and recent notes.

Ready to run — no setup

See all Social Media Scrapers →

Threads Profiles & Recent Posts Scraper

Collect public Threads profiles and their latest public posts without a Threads login. It uses an HTTP-only direct path: Threads' crawler-facing profile metadata resolves the public profile, then the public profile-posts query returns recent posts.

What it returns

Every row carries a recordType so you can split the dataset in one pass.

profile rows (recordType: "profile"):

FieldWhat it holds
username, displayNamethe handle and the public display name
biopublic bio text
followerCountapproximate follower count, as Threads publishes it
profilePicUrl, profileUrlavatar image and the canonical public profile URL
id, sourcestable row id and the path the data came from

post rows (recordType: "post"):

FieldWhat it holds
postId, postCode, postUrlids and the canonical threads.com/@user/post/... link
usernamethe author handle
textthe public post text
likeCountlikes, or null when Threads does not expose a count
publishedAtISO timestamp
imageUrlsup to five public image URLs
hasVideo, isReplybooleans for media type and whether the post is a reply

diagnostic rows (recordType: "diagnostic") are deterministic free rows carrying a codeBLOCKED, RATE_LIMITED, NOT_FOUND, NETWORK or TARGET_ERROR — for invalid input, blocking, rate limits, target errors, no matching posts, or no results.

Only validated public profile and post rows are charged. Samples and diagnostics are never charged.

Input

{

  "profiles": ["zuck", "https://www.threads.com/@instagram"],

  "maxPostsPerProfile": 10,

  "includeProfile": true,

  "query": "AI",

  "fallbackToResidential": false

}
FieldDefaultNotes
profiles["zuck"] prefilledpublic handles or full threads.com/@handle URLs; both forms are accepted
maxPostsPerProfile101–30 genuine public posts saved per profile
includeProfiletrueset false to skip profile rows and pay only for posts
querycase-insensitive text filter applied to the posts from the profiles you supplied
fallbackToResidentialfalseallow one bounded proxy retry after a block or transient failure
proxyConfigurationproxy offonly used by that one fallback retry

query is intentionally account-scoped: Threads does not provide a reliable anonymous global search path, so this Actor does not claim one. Turning includeProfile off is the cheapest way to run a posts-only monitor, since each skipped profile row is one row you are not billed for.

Leave profiles empty to receive one clearly labelled, uncharged sample profile row.

Proxy behavior

The Actor always tries direct HTTP first. When fallbackToResidential is enabled and a direct request is blocked, rate-limited, or has a transient network failure, it makes one bounded retry using the supplied Apify proxy configuration. It does not retry successful requests and does not use a proxy for media downloads.

Pricing

$0.40 per 1,000 rows ($0.0004 each), plus $0.001 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for rows actually returned.

A row is a genuine profile or post row. Samples, diagnostics, duplicates, blocked look-ups and no-result runs never incur the per-result fee — a run that returns nothing costs only the $0.001 start fee. Direct HTTP is the default path, so no residential bandwidth is billed unless you explicitly switch on fallbackToResidential.

Limits

  • Public profiles and public posts only.
  • maxPostsPerProfile is capped at 30 to keep costs and target load bounded.
  • Profile follower counts are approximate when Threads abbreviates them in public metadata.
  • Threads can change anonymous endpoints. A diagnostic row means no result was charged.

Use public data in accordance with applicable law and Threads' terms.