Output format
Markdown (default)
Section titled “Markdown (default)”Output is compact and deterministic, built for an agent’s context window: no colours, no emoji, no padding.
- The first line is a heading that names the object; the second is a metadata line separated by
·. - Engagement is one line with short labels and compact numbers, only the counts the platform
provides:
likes 1.2K · reposts 88 · replies 64 · quotes 12 · views 210K. - Text is verbatim: full long posts and original line breaks, never summarised.
- Media are single lines:
[image] https://… (alt: "…"), or[video 1:42] transcript available: scrollhound transcript …. - A quoted post is an inline blockquote, one level deep.
- An empty result is the single line
No results.(exit code 0).
# Thread by Marc Lou (@marc_louvion) · 142K followershttps://x.com/marc_louvion/status/1849000000000000000 · 2026-10-21 14:03 UTC · 3 posts
## 1/3 · likes 1.2K · reposts 88 · replies 64 · quotes 12 · views 210KI shipped 3 products in 30 days. Here's the exact posting routine:[image] https://pbs.twimg.com/media/abc.jpg (alt: "Revenue chart")
## Top replies (20 of 64, top)- @tibo_maker (98K followers) · likes 220 · 2026-10-21: The "post the build" point is underrated.
next: scrollhound x replies 1849000000000000000 --cursor eyJ2IjoxLCJwIjoidHdpdHRlcmFwaS1pbyJ9(An illustrative example of the format, not a real thread.)
Pages and chunks
Section titled “Pages and chunks”When there’s more, the last line is next: followed by the exact command to run, with a
--cursor. Lists page this way. Long transcripts and Articles (over about 20,000 characters) are
split into chunks the same way, and every chunk after the first is a free re-read.
Big lists (say x posts --limit 500) stop at about 20,000 characters with a line like
showing 1–47 of 500 posts to keep this readable; next: shows #48 onward. Following next:
continues from post 48 without fetching again, so it’s free. Long comment trees say how many
comments they show. --json always returns everything that was fetched.
Comments and replies are only fetched when asked for (--comments <n>). A post read without them
ends with a line like 318 comments on Reddit, not loaded (ask for comments to include them).
Add --json to any command:
{ "data": { "kind": "thread", "posts": [], "replies": { "items": [], "nextCursor": null } }, "meta": { "requestId": "…", "cached": false, "costUsd": 0.011, "notionalCredits": 1, "warnings": [] }}data uses the same normalised shape for every provider: post, thread, article, user,
video, hn_item, trends, subreddit, reddit_thread and the paged lists. meta.cached is true when the result came from
the cache at no cost.
Errors and exit codes
Section titled “Errors and exit codes”Errors go to stderr as error: … plus a hint: … line with the next step.
| Exit | Codes | Meaning |
|---|---|---|
| 0 | — | Success, including empty results and pending transcriptions |
| 1 | internal_error |
Something broke on our side; retry, and quote the request id if it persists |
| 2 | invalid_input |
A bad flag or argument; the message names it |
| 3 | unauthenticated, forbidden, x_not_connected, x_reauth_required |
Log in, or connect / reconnect X |
| 4 | not_found, unsupported_url |
The item doesn’t exist, or the link isn’t X, YouTube, HN or Reddit |
| 5 | rate_limited, spend_cap_reached, quota_exhausted |
Slow down, or wait for the cap or quota to reset |
| 6 | upstream_unavailable |
A data provider is failing; retry in a few minutes |
Warnings (for example, less than 10% of your monthly cap left) go to stderr and never change the exit code.