X rate limit exceeded: what it means and how to fix it

Last updated October 1, 2026

Short answer:“Rate limit exceeded” means your account, or an app using it, made more requests to X than X allows in a set period, so X has paused you until that period ends. In the app, stop refreshing and wait. For time-based limits, X says you can try again once the period has passed. For developers, it's an HTTP 429 from the X API, and the x-rate-limit-reset header tells you exactly when to retry.

This page has two parts: one for people seeing the error in the X app or on x.com, and one for developers hitting 429s from the API.

What does “rate limit exceeded” mean on X?

Every time X loads posts, opens a profile, sends a message or follows someone, your app makes a request to X's servers. X caps how many requests each account can make in a given window, to keep the service stable and to slow down scraping and spam. When you go over, X stops answering for a while and shows “rate limit exceeded”. A similar message, “Cannot retrieve posts at this time”, often appears for the same reason.

It's temporary and automatic. It isn't a suspension, a shadowban or a sign that someone reported you.

Why am I seeing it in the X app?

The usual causes, roughly from most to least common:

  • Heavy scrolling or refreshing. X limits how many posts an account can load. Long sessions and repeated pull-to-refresh add up quickly.
  • Hitting an action limit. Following, posting and messaging each have daily caps (see the table below).
  • Third-party apps. X counts requests from every app connected to your account against the same hourly limit, so several apps hit it faster.
  • Browser extensions that load extra X data in the background.
  • Busy periods. X says it may lower limits temporarily during heavy traffic.

What are X's account limits?

X's help center lists these technical limits. They count actions from every device and app combined: web, mobile and the API.

ActionLimitNotes
Direct Messages sent500 per day
Posts (unverified accounts)50 original posts and 200 replies per daySplit into smaller half-hour limits
Follows400 per daySeparate rules also ban aggressive following
Following, after 5,000 accountsLimited by account-specific ratios
Account email changes4 per hour
Reading postsNot publishedX introduced reading caps in July 2023

The reading caps are what most people hit. In July 2023 X announced temporary limits of 6,000 posts a day for verified accounts, 600 for unverified and 300 for new unverified accounts, and raised them within a day to 10,000, 1,000 and 500. X hasn't published current reading limits since, so treat those numbers as history, not as today's rules.

How long does rate limit exceeded last?

It depends on the limit, and X doesn't show a countdown. X's own guidance is that for time-based limits (messages, posts, email changes and API requests) you can try again once the period has passed, and that if you hit the post limit you should try again in a few hours. Daily limits reset after the day's window passes. If the error lasts well over a day, it's probably not a rate limit. Check whether your account is locked, or run it through the shadowban checker.

How do I fix rate limit exceeded on X?

  1. Stop refreshing. Each reload is another request and keeps you over the limit.
  2. Wait. Give it some time, and a few hours if you hit a posting limit.
  3. Close extra X tabs and devices that are loading timelines at the same time.
  4. Remove apps you don't use in Settings and privacy → Security and account access → Apps and sessions → Connected apps.
  5. Turn off browser extensions that change or scrape X pages, then try again.
  6. Update the X app, or try x.com in a browser, in case the app is retrying in a loop.

While you wait, you can still see any public profile and its latest posts in our free Twitter viewer, or read a whole thread in the thread reader. Neither needs an X login.

Why does the X API return 429 Too Many Requests?

For developers, “rate limit exceeded” arrives as HTTP status 429. The official X API limits each endpoint per time window, usually 15 minutes or 24 hours, and returns three headers on every response:

HeaderMeaning
x-rate-limit-limitHow many requests the window allows
x-rate-limit-remainingHow many are left in the current window
x-rate-limit-resetUnix time, in seconds, when the window resets

The X API is now pay-per-use, and X's documentation is explicit that rate limits and billing are separate. Paying for usage doesn't lift the per-window limits. The documented fix is to wait until the reset time, then retry:

const res = await fetch(url, { headers });
if (res.status === 429) {
  const reset = Number(res.headers.get("x-rate-limit-reset")); // Unix seconds
  const waitMs = Math.max(0, reset * 1000 - Date.now()) + 1000;
  await new Promise((r) => setTimeout(r, waitMs));
  // retry the same request; back off exponentially if it fails again
}

How do I avoid X API rate limits?

  • Watch x-rate-limit-remaining and slow down before you reach zero.
  • Cache what you've already fetched instead of reading it again.
  • Batch lookups: fetch many posts or users per request instead of one at a time.
  • Poll with since_id so each request returns only new posts.
  • Spread jobs out over the window instead of bursting at the start.

The other route is to stop drawing on your own X app's limits. twitr.sh is a pay-per-call X API: you don't register an X developer app or hold API keys, so your app's 15-minute windows never come into it. Each call is priced up front in an HTTP 402 response and paid in USDC. It isn't unlimited. twitr.sh has its own capacity limits, but they're checked before payment: if it's at capacity you get a 429 with a Retry-After header and aren't charged. Compare costs on the X API pricing page, or browse all tools.

Do it from code

A search call looks like this:

curl -X POST https://twitr.sh/api/tools/x_search \
  -H 'content-type: application/json' \
  -d '{"q":"from:nasa since:2026-01-01 until:2026-02-01","queryType":"Latest","resultsLimit":20}'

# → HTTP 402 Payment Required with the exact price
#   ($0.0012 per returned tweet, so about $0.024 for 20)
# → pay with any x402 or MPP wallet and send the same request again
# → 200 with the posts
# (429 + Retry-After only if the service is at capacity, before any charge)

resultsLimit caps the bill. Agents in Claude Code, Cursor or any MCP client can call the same search as the x_search tool. See x_search and x_timeline for the full inputs.

FAQ

What does rate limit exceeded mean on X?

It means your account, or an app using your account, sent X more requests than it allows in a set period, so X is temporarily refusing more. It's a pause, not a ban. Once the time window passes, things work again.

How long does rate limit exceeded last on Twitter?

It depends on which limit you hit, and X doesn't publish a timer for every one. X says that for time-based limits you can try again once the period has passed, and that after hitting the post limit you should try again in a few hours. For the official API, most windows are 15 minutes or 24 hours.

How do I fix rate limit exceeded on X?

Stop refreshing and wait, because every refresh is another request. Then close extra tabs, disconnect third-party apps you don't use (Settings and privacy → Security and account access → Apps and sessions → Connected apps), turn off browser extensions that load X data, and try again later.

Why do I keep getting rate limit exceeded on X?

Common causes are heavy scrolling or refreshing, hitting an action limit such as follows or posts, third-party apps sharing your account's limits, browser extensions, and busy periods when X temporarily lowers limits.

What are X's daily limits?

X's help center lists 500 Direct Messages sent per day, 400 follows per day, 4 account email changes per hour, and for unverified accounts 50 original posts and 200 replies per day, split into smaller half-hour limits. X may lower these during heavy traffic.

Is rate limit exceeded the same as being shadowbanned or suspended?

No. A rate limit is a short, automatic pause on how many requests you can make. A suspension locks or hides the account, and a shadowban quietly limits who sees your posts. You can check for the last two with the free twitr.sh shadowban checker.

Does X Premium remove rate limits?

Not entirely. When X introduced reading limits in July 2023, verified accounts got higher limits than unverified ones. X hasn't published its current reading limits, and every account still has limits on actions like following and messaging.

What is HTTP 429 in the X API?

429 Too Many Requests is the status the X API returns when your app goes over a rate limit. The response includes x-rate-limit-limit, x-rate-limit-remaining and x-rate-limit-reset headers. The reset header is the Unix time, in seconds, when the window resets.

Does paying for the X API remove rate limits?

No. X's documentation says rate limits and billing are separate: you can pay for usage and still be rate limited. Each endpoint keeps its own limit per 15-minute or 24-hour window.

How do developers avoid X API rate limits?

Read x-rate-limit-reset and wait until then, back off exponentially on repeat 429s, cache results, batch lookups instead of fetching items one by one, and use since_id to fetch only new posts. Or call a pay-per-call API like twitr.sh, which uses no X developer app of yours, so your app's windows don't apply.

Does twitr.sh have rate limits?

Yes, it has its own capacity limits, but they're checked before payment. If twitr.sh is at capacity it returns 429 with a Retry-After header and you aren't charged. Failed calls are never charged.