Single posts, fully resolved
Likes, reposts, replies, quotes, bookmarks and views. Poll results with percentages. Quoted posts unnested. Alt text most scrapers throw away.
Read the endpoint
XCRAP.CC
Paste any post, thread or profile. Get back clean Markdown for your prompt, or strict JSON for your database. No account, no API key, and nothing to pay.
Works with x.com and twitter.com links, or a bare post id.
Claude, ChatGPT, Cursor, your own script, a cron job, a Discord bot. Nothing needs an account here, so nothing needs to be told a secret. One HTTP request, five formats, no handshake.
XCrap.CC
No key is exchanged in either direction.
The official API starts at $200 a month and climbs to $42,000. Below that tier you get almost nothing. Meanwhile x.com stops a logged-out reader after two posts and asks them to sign in. Neither of those is a technical limit. They are a business decision, and it lands hardest on the people building small tools and research projects.
Every post XCrap reads is one anybody could read in a browser. We just do not make you log in to read it.
A post, a thread, a profile. Through the box above, the REST API, the MCP server, or a one-line curl.
Our client talks to X's own internal endpoints with rotating anonymous tokens. Three more sources sit behind it, so one of them breaking is not your problem.
Markdown for a prompt. JSON for a database. YAML, CSV or a standalone HTML card. Set it with one query parameter or an Accept header.
Likes, reposts, replies, quotes, bookmarks and views. Poll results with percentages. Quoted posts unnested. Alt text most scrapers throw away.
Read the endpoint
Paste the first post, not the last one. X only exposes a post's parent, so we stitch the author's timeline by conversation id to walk it forwards.
How unrolling works
Direct MP4 links at every bitrate X encoded, and images at the resolution they were uploaded, not the resized preview. Streamed through, never stored.
Media endpoint
One request, up to fifty posts. A dead link returns an error for that entry and the other forty-nine still come back.
Bulk endpoint
Add ?format=markdown, or send an Accept header. Markdown responses carry an x-markdown-tokens header so an agent can budget its context before it reads.
/v1/tweet?url=…&format=markdowntext/markdown49An MCP server for Claude Code, Claude Desktop and Cursor. Or download the skill file and teach any model the API in one paste.
# Claude Code — one line
claude mcp add xcrap -- npx -y @xcrapcc/mcp
# Claude Desktop, Cursor — config block
{
"mcpServers": {
"xcrap": {
"command": "npx",
"args": ["-y", "@xcrapcc/mcp"]
}
}
}
# jack (@jack)
**2006-03-21 20:50 UTC** · [permalink](https://x.com/jack/status/20)
just setting up my twttr
308,067 likes · 124,684 reposts · 18,017 replies{
"id": "20",
"text": "just setting up my twttr",
"author": { "screen_name": "jack" },
"metrics": { "likes": 308067 }
}id: '20'
text: just setting up my twttr
author:
screen_name: jack
metrics:
likes: 308067id,url,created_at,author_handle,text,likes
20,https://x.com/jack/status/20,2006-03-21,jack,"just setting up my twttr",308067<!-- a standalone card, no stylesheet required -->
<article class="xcrap-post">
<a href="https://x.com/jack/status/20">@jack</a>
<p>just setting up my twttr</p>
</article>Same post, same request, five shapes. The header does it too: Accept: text/markdown.
Add one block to your config and your agent can read X on its own.
claude mcp add xcrap -- npx -y @xcrapcc/mcp
A single Markdown file that teaches any model the whole API. No install.
curl xcrap.cc/skills.md
A machine-readable spec every generator and agent framework already understands.
GET /openapi.json
npm install @xcrapcc/sdk, or pip install xcrap-sdk. Typed, tiny, no dependencies.
npm i @xcrapcc/sdk · pip install xcrap-sdk
All four talk to the same endpoints. Pick whichever fits how you already work.
A free service that reads public posts, threads and profiles from X and hands them back as Markdown, JSON, YAML, CSV or HTML. It exists so that agents, bots and small projects can read X without an API key.
Yes. No account, no key, no card, no trial. It is paid for by donations, and the running costs are a domain and one small server.
No, and it never will. Protected accounts return the same 404 they would give anyone else, and direct messages are out of reach entirely. XCrap reads public accounts only: their posts, profiles, replies and follower lists.
Yes. /v1/media lists every attached file with a download link, at every bitrate X encoded. Files stream straight through and are never written to our disk.
Yes: /v1/search takes any query X search understands, operators included (from:, "exact phrase", since: and the rest), and returns the latest or top posts, or only those with photos or videos. It has the tightest rate limit of any endpoint.
Reading public web pages is not unauthorised access, which US courts confirmed in hiQ v. LinkedIn. It does break X's terms of service, which is a contract matter between us and X, not a criminal one. You are responsible for what you do with the data you receive.
Aura++ lists XCrap in its directory, and its badge is below. If you run a directory and want to add it, write to [email protected] and your badge goes up beside that one.
No key to generate, no card to add, no email to confirm. Paste a link and see what comes back.