A Nitter alternative that doesn't depend on a volunteer-run instance
Public Nitter instances fail under rate limits and shutdowns. Read profiles and tweets over versioned JSON; Monitors replaces RSS with signed webhooks or pullable events.
What usually breaks first
Common failure modes after a DIY scraper or marketplace API hits production — schema drift, billing surprises, and pagination quirks.
Nitter scraped X and served RSS until public instances got blocked or shut down. Self-hosting still breaks on upstream changes.
Social Fetch is not RSS/Atom — it covers reading profiles and tweets over versioned JSON, and Monitors for new-post alerts via signed webhook or pullable JSON events. Metered credits; schema and delivery guarantees Nitter never had.
6 routes for this job
These are the X and Monitors routes that replace what a Nitter instance did — reading profiles and tweets, and getting notified of new ones.
GET /v1/twitter/profiles/{handle}Public profile lookup — bio, follower/following counts, verification — the Nitter profile page's replacement, no login required on your end.
GET /v1/twitter/profiles/{handle}/tweetsRecent tweets for a handle, cursor-paginated — the Nitter timeline's replacement.
GET /v1/monitors/sourcesDiscover the watchable operationId for tweets (twitter.profile.tweets.list), its minimum interval, and a sample event.
POST /v1/monitorsCreate a monitor on a profile's tweets — the RSS feed's replacement, delivered as a signed webhook instead of XML.
POST /v1/webhook-endpointsCreate the delivery target: a real URL, or a hosted test inbox (kind: "sink") if you just want to see it work first.
GET /v1/monitors/{id}/eventsPull new-tweet events directly, cursor-paginated, on your own schedule — for teams that would rather poll a JSON feed than run a webhook receiver.
How teams wire this
Typical order starts with “replace the nitter profile page.” Adjust cadence, schema, and thresholds to your stack.
- 1
Replace the Nitter profile page
GET /v1/twitter/profiles/{handle} gives you the same bio and metrics a Nitter profile page rendered, as typed JSON instead of scraped HTML.
- 2
Replace the Nitter timeline
GET /v1/twitter/profiles/{handle}/tweets returns recent tweets, cursor-paginated. Same JSON envelope every other Social Fetch route uses.
- 3
Replace the RSS feed with a Monitor
Create a monitor on twitter.profile.tweets.list with an interval or cron schedule. It runs a synchronous baseline on creation, so day-one tweets don't fire a false event.
- 4
Pick push or pull
Attach a webhook endpoint for a push model, or skip it entirely and pull GET /v1/monitors/{id}/events on your own cadence — a valid pull-only monitor, closer to how an RSS reader actually behaves.
- 5
Verify before you trust it, if you chose push
Webhook deliveries are HMAC-signed. Verify with verifySignature or constructEvent from @socialfetch/sdk/webhooks over the raw request body before you parse anything.
- 6
Budget credits like the metered service it is
Unlike a free Nitter instance, every profile lookup, tweet page, and monitor check bills at that route's normal credit price — plan for it the same way you'd plan for any metered API, not a free scrape.
Read a profile's recent tweets — the Nitter timeline's replacement.
Swap YOUR_API_KEY for a dashboard key. The playground pre-fills auth for the same path.
Why Social Fetch over a Nitter instance or a self-hosted mirror
- No dependency on a volunteer-run public instance disappearing overnight, and nothing to self-host or keep patched.
- A documented, versioned JSON schema instead of scraped HTML — X changing its markup doesn't silently break your parser.
- Monitors replaces the RSS feed with a signed, retried webhook: 8 attempts over roughly 21 hours on failure, every attempt logged, instead of a feed reader's fixed poll interval.
- A hosted test inbox and the socialfetch listen CLI let you see a real signed event before deploying a webhook receiver at all.
- Would rather poll than run a server? GET /v1/monitors/{id}/events is a pull-based JSON feed, cursor-paginated — the closest thing to "RSS, but it doesn't break."
- Transparent, metered pricing instead of a free service that's free because someone else is quietly absorbing the scraping risk.
Try the Nitter alternative on free credits
100 free credits — read a profile's tweets, then create a monitor and watch a signed webhook (or a pull feed) replace the RSS you used to get from Nitter.