← All tools
threads · fetchsolari:readAvailable on any SOLARI plan, including the trial. One credit per successful call.

solari fetch threads posts

One Threads account's recent posts, read live.

MCP tool
solari_fetch_threads_posts
CLI
solari fetch threads posts
Access
solari:readAvailable on any SOLARI plan, including the trial. One credit per successful call.Available on any SOLARI plan, including the trial. One credit per successful call.
Plans
Any paid plan or trial
Credit
1

Overview

Read one Threads account's newest top-level posts, with its profile, by exact username. Each post carries text, hashtags, mentions, links, like, reply, repost, quote, and share counts, the quoted post, and assets with a direct-download asset_url. Threads is fetch-only in SOLARI, so this call is the post listing: there is no catalog step. A handle SOLARI has never seen is collected live, which takes 5 to 30 seconds; within an hour the stored copy is reused unless refresh=true.

When to use it — When you have an exact Threads handle and want what it posted recently.

What comes back — The profile, up to limit top-level posts newest first, and the fetch command to open the newest one with its replies.

Parameters

usernamestringrequired
Threads username, with or without @.≤ 64 chars
limitintegeroptional
How many posts, newest first.≥ 1
refreshbooleanoptional
Collect again even if a copy from the last hour exists.

Response

Response

accountobject
The profile.
postsobject[]
Top-level posts, newest first.
totalinteger
Posts returned.
collected_attimestamp | null
When this copy was collected.
fetched_on_demandboolean
true if this call collected it live.
staleboolean
true if live collection failed and an older copy is returned. collected_at says how old.
notestring | null
Caveat, when there is one: for example a private account.
nextstring
Fetch command to open the newest post with its replies. Only when a post exists.

account

account_iduuid
Threads account id. Not interchangeable with Instagram or TikTok.
usernamestring
Handle, lowercase, without the @.
full_namestring | null
Display name.
biographystring | null
Bio text.
follower_countinteger | null
Followers at collection time.
is_verifiedboolean | null
Verified badge.
is_privateboolean | null
Private account. Its posts come back empty.
bio_linksstring[]
Links listed in the bio.
profile_pic_urlstring | null
Profile picture URL, largest size available.
urlstring | null
Public profile URL.

posts[]

post_iduuid
Threads post id. Not interchangeable with Instagram or TikTok.
codestring | null
Permalink code, the segment after /post/ in the URL.
urlstring | null
Public permalink.
account_iduuid | null
Author account_id.
usernamestring | null
Author handle.
textstring | null
Post text.
posted_attimestamp | null
Published at (UTC).
like_countinteger | null
Likes.
reply_countinteger | null
Replies on Threads. Can exceed the replies returned.
repost_countinteger | null
Reposts.
quote_countinteger | null
Quotes.
reshare_countinteger | null
Shares.
counts_hiddenboolean | null
true if the author hides engagement counts.
hashtagsstring[]
Hashtags without the #.
mentionsstring[]
Handles mentioned, without the @.
link_urlsstring[]
Links attached to the post.
is_replyboolean | null
true for a reply to another post.
reply_to_usernamestring | null
Handle this post replies to. Null for top-level posts.
is_paid_partnershipboolean | null
Paid partnership label.
topicstring | null
Topic tag, when Threads sets one.
languagestring | null
Language code of the text.
quoted_postobject | null
The quoted post: username, text, like_count, posted_at, url. Null unless this is a quote.
assetsobject[]
Media files in order. Each has asset_url, media_type, and video_duration.
assets[].asset_urlstring | null
Direct download link to the full-size image or video. Null when no file is stored.

Example

Request

$ solari fetch threads posts username=zuck limit=2

Response · Long strings and repeated array entries are trimmed for readability.

{
  "account": {
    "account_id": "019f3a5c-2b7e-7c41-9d0e-5a1f2c3b4d5e",
    "username": "zuck",
    "full_name": "Mark Zuckerberg",
    "biography": "Mostly superintelligence and MMA takes",
    "follower_count": 5745085,
    "is_verified": true,
    "is_private": false,
    "bio_links": [],
    "profile_pic_url": "https://scontent-gmp1-1.cdninstagram.com/v/t51.82787-19/825322135_17989325280103224_1252773933700107438_n.jpg?…",
    "url": "https://www.threads.com/@zuck"
  },
  "posts": [
    {
      "post_id": "019f3a5c-2b7e-7c41-9d0e-5a1f2c3b4d60",
      "code": "Ddt7cL5EfUG",
      "url": "https://www.threads.com/@zuck/post/Ddt7cL5EfUG",
      "account_id": "019f3a5c-2b7e-7c41-9d0e-5a1f2c3b4d5e",
      "username": "zuck",
      "text": "Agrippa said it's time to get back to work 😎",
      "posted_at": "2026-09-25T16:50:21.000Z",
      "like_count": 4964,
      "reply_count": 477,
      "repost_count": 254,
      "quote_count": 45,
      "reshare_count": 136,
      "counts_hidden": false,
      "hashtags": [],
      "mentions": [],
      "link_urls": [],
      "is_reply": false,
      "reply_to_username": null,
      "is_paid_partnership": false,
      "topic": null,
      "language": null,
      "quoted_post": null,
      "assets": [
        {
          "asset_url": "https://smr-images.bzine.co/threads/…",
          "media_type": "image",
          "video_duration": null
        },
        {
          "asset_url": "https://smr-images.bzine.co/threads/…",
          "media_type": "image",
          "video_duration": null
        }
      ]
    },
    {
      "post_id": "019f3a5c-2b7e-7c41-9d0e-5a1f2c3b4d61",
      "code": "Ddpj4YZkd3P",
      "url": "https://www.threads.com/@zuck/post/Ddpj4YZkd3P",
      "account_id": "019f3a5c-2b7e-7c41-9d0e-5a1f2c3b4d5e",
      "username": "zuck",
      "text": "Here's everything I announced at Meta Connect today 👇",
      "posted_at": "2026-09-24T00:07:31.000Z",
      "like_count": 2680,
      "reply_count": 612,
      "repost_count": 164,
      "quote_count": 34,
      "reshare_count": 138,
      "counts_hidden": false,
      "hashtags": [],
      "mentions": [],
      "link_urls": [],
      "is_reply": false,
      "reply_to_username": null,
      "is_paid_partnership": false,
      "topic": null,
      "language": null,
      "quoted_post": null,
      "assets": []
    }
  ],
  "total": 2,
  "collected_at": "2026-09-28T09:13:55Z",
  "fetched_on_demand": true,
  "stale": false,
  "note": null,
  "next": "solari fetch threads post url=https://www.threads.com/@zuck/post/Ddt7cL5EfUG"
}

As an MCP call

{
  "name": "solari_fetch_threads_posts",
  "arguments": {
    "username": "zuck",
    "limit": 2
  }
}

Notes

  • Threads is fetch-only. There is no catalog step: read the posts from this response.
  • Only top-level posts are listed, newest first. The account's own replies are not included; fetch threads post reads one post with its replies.
  • A first collection takes 5 to 30 seconds (fetched_on_demand=true). Repeat calls within an hour return the stored copy unless refresh=true.
  • stale=true means the live collection failed and an older copy came back. collected_at says how old it is.
  • A private account answers its profile with posts empty. Media URLs right after a collection may be temporary, so read them promptly.
  • A handle with no Threads profile is an error, not an empty result. Failed calls cost nothing.

Machine-readable: /docs/tools/fetch-threads-posts.md