All posts

X (Twitter) API Rate Limits in 2026: Every Window Explained

November 9, 2026

Short answer

X API rate limits are set per endpoint, usually per 15 minutes and sometimes per 24 hours, with separate limits for app-only Bearer tokens and user tokens. Recent search allows 450 requests per 15 minutes per app and 300 per user, and posting allows 100 per 15 minutes per user and 10,000 per 24 hours per app. Over a limit you get HTTP 429 until the time in x-rate-limit-reset.

The X API v2 has three ceilings that people mix up: the rate limit per endpoint, the monthly read cap on pay-per-use accounts, and your credit balance. X's own docs say rate limits and billing are separate: you can stay inside rate limits and still pay, or hit a rate limit without paying anything extra. This post is about the first two. For what the API costs, see Is the X (Twitter) API free?

How X API rate limits work

  • Per endpoint. Each endpoint has its own limit. Using up search does not touch user lookup.
  • Per app or per user. A request with an app-only Bearer token counts against the app's limit. A request with an OAuth 1.0a or OAuth 2.0 user token counts against that user's limit for your app.
  • Fixed windows. Usually 15 minutes, sometimes 24 hours, and full-archive search also has a 1 request per second limit.
  • Enterprise is separate. Enterprise customers get custom limits through an account manager.

Twitter API rate limits for reading

EndpointPer app (15 min)Per user (15 min)Items per call
GET /2/tweets (lookup by IDs)3,5005,000Up to 100 IDs
GET /2/tweets/:id4509001
GET /2/tweets/search/recent45030010 default, 100 max
GET /2/tweets/search/all300, and 1 per second1 per second10 default, 500 max
GET /2/tweets/counts/recent300NoneCounts
GET /2/users/:id/tweets10,000900Page of posts
GET /2/users/:id/mentions450300Page of posts
GET /2/users, /2/users/by300900Up to 100 users source
GET /2/users/:id/followers, /following300300Up to 1,000 source
GET /2/tweets/:id/liking_users, /retweets7575Page of users
GET /2/tweets/search/stream50 requestsNone1 connection, 1,000 rules, 250 posts a second
GET /2/trends/by/woeid/:id75NoneTrends

X API rate limits for writing

ActionPer appPer user
Create a post (POST /2/tweets)10,000 per 24 hours100 per 15 minutes
Delete a postNone listed50 per 15 minutes
Like or unlikeNone listed50 per 15 minutes, 1,000 per 24 hours
Follow or unfollow, repost, bookmarkNone listed50 per 15 minutes
Media upload (POST /2/media/upload)50,000 per 24 hours500 per 15 minutes

All figures are from X's rate limit tables, which list every endpoint. Your Developer Console shows the same numbers for your app.

Headers and the 429 error

Each response carries three headers:

x-rate-limit-limit: 450        # requests allowed in this window
x-rate-limit-remaining: 12     # left in this window
x-rate-limit-reset: 1794282274 # Unix time when the window resets

Go over and you get HTTP 429 with error code 88, "Rate limit exceeded". Wait until the reset time. Retrying sooner only returns more 429s.

import time, requests

def x_get(url, token, params=None):
    while True:
        r = requests.get(url, params=params, timeout=30,
                         headers={"Authorization": "Bearer " + token})
        if r.status_code != 429:
            r.raise_for_status()
            return r
        reset = int(r.headers.get("x-rate-limit-reset", time.time() + 60))
        time.sleep(max(reset - time.time(), 1) + 1)

def paced(r):
    # slow down before the wall instead of hitting it
    left = int(r.headers.get("x-rate-limit-remaining", 1))
    reset = int(r.headers.get("x-rate-limit-reset", time.time()))
    if left <= 1:
        time.sleep(max(reset - time.time(), 0) + 1)

How many posts can you pull per day?

Take recent search with a Bearer token. 450 requests per 15 minutes is 43,200 requests a day. At 100 posts each, the rate limit allows 4.32 million posts a day. You will never get near that, because pay-per-use plans are capped at 3 million post reads per monthly billing cycle. That averages 100,000 posts a day.

CeilingPosts a day
Recent search rate limit, app token4,320,000
Monthly read cap, spread over 30 days100,000

A worked job: a brand monitor runs 40 queries every 5 minutes. That is 120 requests per 15 minutes, well under 450. If each query returns 20 new posts, you read 40 x 288 x 20 = 230,400 posts a day, and the 3 million cap is gone on day 14. On X, the rate limit is rarely the constraint for reading; the monthly cap and the bill are. One thing helps: X deduplicates billing within a UTC day, so reading the same post twice before midnight UTC is charged once.

For users, the math is different. User lookup at 300 requests per 15 minutes and 100 users per call allows 2.88 million profile reads a day on rate limits alone, so a follower-enrichment job is usually limited by cost, not by windows.

How to get higher X API rate limits

  • There is no form for raising standard limits. Higher limits come with Enterprise access, which you apply for through X.
  • Use the filtered stream instead of polling search for real-time work. One connection replaces thousands of polls.
  • Use batch lookups: 100 post IDs or 100 user IDs per call.
  • Cache profiles. Most follower counts do not need refreshing more than daily.

When a paid API is simpler

If you read a lot of public X data, the binding limit is the 3 million monthly read cap, then Enterprise pricing. ScrapeIO allows 300 requests a minute per API key, with no daily or monthly cap beyond the credits you hold. A 429 from ScrapeIO costs nothing, and neither do failed calls, private or not-found answers, or cached repeats.

ScrapeIO's twitter search API accepts X search operators, the twitter user tweets API pages through a profile's posts, and the twitter profile API returns followers and counts, each at 1 credit a call. You cannot post or like through ScrapeIO; for writes you need the official API. Agents can use the X MCP server. For the trade-offs, see X API vs scraping.

FAQ

Are X API rate limits per user or per app?

Both, depending on the token. Bearer token calls count against the app; user-token calls count against that user. Each endpoint lists both numbers.

How long does an X API rate limit last?

Until the end of the window, usually 15 minutes and sometimes 24 hours. The exact time is in x-rate-limit-reset.

What is error code 88 on the X API?

"Rate limit exceeded", returned with HTTP 429. Wait for the reset time before retrying.

What is the X API rate limit for search?

Recent search: 450 requests per 15 minutes per app and 300 per user. Full-archive search: 300 per 15 minutes per app and 1 per second.

Does hitting a rate limit cost money?

X says rate limits and usage billing are separate, so a 429 by itself does not add a charge.

How many posts can I create per day through the API?

Up to 100 per 15 minutes per user, and 10,000 per 24 hours across your app.

Sources

Checked on 9 November 2026 from each vendor's own pages. Prices and limits change; follow the links before you decide.

100 free credits, no card. Credits never expire.

Get API key