Nitter alternatives in 2026: what still works for scripts and agents

Nitter alternatives in 2026: what still works for scripts and agents
Unif Comparisons team
Unif Comparisons team

Updated

We curl-tested Nitter instances, viewer sites, link-preview APIs, X's embed endpoints and UnifAPI in October 2026. What works for scripts and agents.

In short: Nitter as a public service is over. On October 7, 2026, nitter.net timed out, nitter.privacydev.net refused the connection, and xcancel.com answered HTTP 451 (blocked for legal reasons). The viewer sites that replaced it in search results, sotwe and twstalker, answer a Cloudflare challenge to anything that is not a browser. What still works for a script: FxTwitter and vxTwitter for one post or one user, X's syndication endpoint for one post, and UnifAPI's free /tools/x/* endpoints for profiles, posts, media, replies, search, trends, communities, and followers, all as JSON or Markdown, free to use with no login or account and rate-limited per visitor. Nothing free gives you a throughput guarantee.

Nitter was the answer to "read Twitter without an account" for five years: a privacy front end that rendered profiles, threads, and search as plain HTML. That made it the default for scripts and, later, for the first AI agents, which could curl a Nitter URL and read the result. In early 2024 X closed the guest-account path Nitter depended on, and the instances have been dying since. The name still ranks, so people keep landing on dead instances and on viewer sites that behave worse than the thing they replaced.

This is what we found when we tested the field with the tools an agent actually has: curl, a default User-Agent, no cookies.

The test

Two requests per target: NASA's profile, and one public post (x.com/NASA/status/2107237881668313108). We recorded the HTTP status, the content type, and whether a program could read the post's text and like count from the body without running JavaScript.

TargetProfilePostReadable by a scriptNotes
nitter.nettimeouttimeoutNoNo response in 7 s
nitter.privacydev.netrefusedrefusedNoConnection refused
xcancel.com451451No"Unavailable for legal reasons"
sotwe.com403403NoCloudflare "Just a moment…" challenge
twstalker.com403403NoCloudflare challenge
x.com200200No147 KB HTML shell; data loads via JavaScript
api.fxtwitter.com200 JSON200 JSONYesSingle user, single post; no search or replies
api.vxtwitter.comn/a200 JSONYesSingle post
cdn.syndication.twimg.com/tweet-resultn/a200 JSONYesUndocumented; single post
publish.twitter.com/oembedn/a200 JSONHTML inside JSONEmbed markup, no metrics
unifapi.com/tools/x/*200 JSON200 JSONYes, JSON or MarkdownPlus media, replies, search, trends, communities, followers

Three kinds of failure, and they are worth telling apart.

Gone. The Nitter instances. There is no fix; the upstream access they used no longer exists. Any code or prompt that still builds a nitter.net/<handle> URL should be deleted.

Walled. sotwe and twstalker work in a browser and serve a Cloudflare challenge to everything else. For a person they are fine. For a script they are a 403, and a headless browser that passes the challenge today may not tomorrow.

Shelled. x.com itself returns a page with no content in it. Rendering it needs a real browser, a login wall appears quickly, and it is against the terms.

What works, and for what

FxTwitter and vxTwitter

The link-preview APIs. api.fxtwitter.com/<user>/status/<id> returns a JSON object with text, metrics, media, and the quoted post; api.fxtwitter.com/<user> returns the profile's counts and bio. vxTwitter does the same for posts with a flatter shape. Both are free, keyless, community-run, and built for one post at a time. They have no search, no replies, no timeline, and no stated rate limit. For a Discord bot that unfurls links, they are the right tool. For a workflow, they are the first step with no second.

X's own endpoints

cdn.syndication.twimg.com/tweet-result?id=<id>&token=x returns a post as JSON because that is what X's embed widget consumes. It is official in the sense that X serves it and undocumented in every other sense; the token parameter's rules have changed before. publish.twitter.com/oembed is documented but returns embed HTML, not data. Use the first as a cross-check and never the second for data.

UnifAPI's free X endpoints

The reason we built these is the rest of the table: everything an agent asks for after the first post. Eight keyless GETs under https://unifapi.com/tools/x/:

curl -s "https://unifapi.com/tools/x/profile?handle=nasa"
curl -s "https://unifapi.com/tools/x/post?id=2107237881668313108"
curl -s "https://unifapi.com/tools/x/replies?id=2107237881668313108&sort=top"
curl -s "https://unifapi.com/tools/x/search?q=from%3Anasa%20filter%3Amedia"
curl -s "https://unifapi.com/tools/x/trends?location=japan&format=md"

Every response carries X-RateLimit-* headers, every error is { error: { type, message } }, every list is { items, hasMore, nextCursor }, and format=md returns Markdown. The free limit is 20 lookups per 10 minutes per visitor, with a search counting as two. The same URLs work as human pages: /tools/twitter-viewer routes a handle, a link, a hashtag, or a query to the right viewer, and adding format=json to any viewer URL returns the data the page shows.

What they do not do: protected accounts, or guaranteed throughput. For throughput there is the metered X / Twitter API with a workspace key, pay as you go, with the same field names so nothing has to be rewritten.

Choosing

You needUse
One post unfurled in a chat appFxTwitter
A sanity check that a post's text is what X servesThe syndication endpoint
A profile with recent posts, as data/tools/x/profile
Replies, search, media, followers, trends, communities/tools/x/*
A page a person opensAny viewer, including /tools/twitter-viewer
Volume, an SLAThe metered API with a key

FAQ

Is Nitter dead?

As a public service, yes. The instances that answered on October 7, 2026 answered with a timeout, a refused connection, or HTTP 451. Self-hosting still works for people who have their own X session cookies to feed it, which is not something an agent should rely on.

What is the best Nitter alternative for scripts?

For one post, FxTwitter. For anything beyond one post (replies, search, timelines, followers), the free UnifAPI endpoints, which return JSON or Markdown with no login or account, rate-limited per visitor.

What is xcancel?

A Nitter instance that was, until recently, the most reliable public one. It now returns HTTP 451 to every request.

Can I use sotwe or twstalker from a script?

Not without passing a Cloudflare browser challenge, which is both fragile and against the spirit of the challenge. They are browser tools.