← All tools
threads · fetchsolari:read

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:read
Plans
  • Free Trial
  • Plus
  • Pro
  • Enterprise
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. 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.default 121–25
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

  • 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