Skip to content

Twitter (X) API rate limits in 2026

The official X API limits every endpoint separately, mostly per 15 minutes: recent search takes 450 requests per app and 300 per user, and posting takes 100 posts per user per 15 minutes and 10K per app a day.

Short answer: Past a window, X answers HTTP 429 until the time in the x-rate-limit-reset header. Pay-per-use also stops at 3M post reads a month, and an unverified account publishes at most 50 posts and 200 replies a day. To read X data without 15-minute windows, use Sorsa API: 20 requests per second per key and 100 free requests to start.

Endpoint
POST /tweet-info-bulk
Page size
100 tweets per request
Price
from $0.014 per 1,000

#X API rate limits by endpoint in 2026

Every X API v2 endpoint carries its own limit, counted per app and per user, and most of them reset every 15 minutes. The numbers below are the ones X published on November 2, 2026; what each call costs on top of the limit is in our X API pricing breakdown.

Reads allow hundreds or thousands of requests per window, writes are capped per user, and a few endpoints add a 24-hour or a once-per-second limit on top.

Endpoint (results per request)Per appPer user
Recent search, last 7 days (100)450 / 15 min300 / 15 min
Full-archive search, back to 2006 (500)300 / 15 min and 1 / sec1 / sec
Posts by ID (100)3,500 / 15 min5,000 / 15 min
One account's posts (100)10K / 15 min900 / 15 min
Mentions of one account (100)450 / 15 min300 / 15 min
Profiles by ID or username (100)300 / 15 min900 / 15 min
Followers or following (1,000)300 / 15 min300 / 15 min
Who liked, reposted or quoted a post75 / 15 min75 / 15 min
Create a post or reply10K / 24 h100 / 15 min
Delete a postnone50 / 15 min
Send a direct message1,440 / 24 h15 / 15 min and 1,440 / 24 h
  • Recent search, last 7 days (100)

    Per app
    450 / 15 min
    Per user
    300 / 15 min
  • Full-archive search, back to 2006 (500)

    Per app
    300 / 15 min and 1 / sec
    Per user
    1 / sec
  • Posts by ID (100)

    Per app
    3,500 / 15 min
    Per user
    5,000 / 15 min
  • One account's posts (100)

    Per app
    10K / 15 min
    Per user
    900 / 15 min
  • Mentions of one account (100)

    Per app
    450 / 15 min
    Per user
    300 / 15 min
  • Profiles by ID or username (100)

    Per app
    300 / 15 min
    Per user
    900 / 15 min
  • Followers or following (1,000)

    Per app
    300 / 15 min
    Per user
    300 / 15 min
  • Who liked, reposted or quoted a post

    Per app
    75 / 15 min
    Per user
    75 / 15 min
  • Create a post or reply

    Per app
    10K / 24 h
    Per user
    100 / 15 min
  • Delete a post

    Per app
    none
    Per user
    50 / 15 min
  • Send a direct message

    Per app
    1,440 / 24 h
    Per user
    15 / 15 min and 1,440 / 24 h

Per app means every request signed with your app's Bearer token draws on one shared counter. Per user means each user who authorized your app through OAuth gets a counter of their own, so the same endpoint can show two numbers, such as 450 and 300 for recent search. "X API rate limits" and "Twitter API rate limits" are the same thing: X renamed the product, and the limits here are for X API v2, the version its rate-limit reference covers.

The table is a dated extract. X keeps the full list of more than 100 endpoints, from Lists and Spaces to media upload, in its rate limit reference (opens in a new tab), and the Developer Console shows the limits on your own app.

Good to know

X's reference still lists limits for following, liking and quote-posting, but X removed those writes (opens in a new tab) from every self-serve plan on April 20, 2026. On pay-per-use, those calls fail whatever the window says.

#How long a read job takes at these limits

On one app at full speed, X's windows let you read about 600K posts an hour by full-archive search, 1.4M by ID or 1.2M followers. Pay-per-use, though, stops at 3M post reads a month and bills every one of them.

Each hourly figure is the per-app window times the most results a request returns, four windows an hour: 300 full-archive searches of 500 posts, 3,500 lookups of 100 posts, 300 follower pages of 1,000. Recent search, at 450 requests of 100 posts, reaches 180K posts an hour, from the last 7 days only.

The monthly cap turns those hourly numbers into a short burst. At full speed, lookups by ID reach 3M posts in about 2 hours and full-archive search in about 5, and 3M posts cost $15,000 at X's $0.005 per post. From November 22, 2026, X also bills each author profile you request with a post at the user rate of $0.010 (opens in a new tab).

Sorsa API, a Twitter (X) API and scraper, has one limit instead: 20 requests per second per API key, on every plan. At that limit the same jobs run 2.4 to 60 times faster than on one official X API app:

JobSorsa API, per hourOfficial X API, per hour (one app)
Search postsabout 1.44M, back to 2006600K by full archive, 180K by recent search
Posts by ID7.2M1.4M
Profiles7.2M120K
Followers14.4M1.2M
  • Search posts

    Sorsa API, per hour
    about 1.44M, back to 2006
    Official X API, per hour (one app)
    600K by full archive, 180K by recent search
  • Posts by ID

    Sorsa API, per hour
    7.2M
    Official X API, per hour (one app)
    1.4M
  • Profiles

    Sorsa API, per hour
    7.2M
    Official X API, per hour (one app)
    120K
  • Followers

    Sorsa API, per hour
    14.4M
    Official X API, per hour (one app)
    1.2M
Job
1M posts

about 42 min

Sorsa API, one key

Cost
from $70
Limit
20 requests per second, about 20 posts each

about 1.7 h

Official X API, one app

Cost
$5,000
Limit
300 full-archive searches per 15 min, 500 posts each

Times at each API's full rate limit. One list's pages come one after another, so full speed takes several queries or accounts at once. Sorsa API prices start at the Hyperscale rate.

Pick a job and a size: the time at each API's full rate limit and what the job costs.

The price gap is wider than the speed gap. Tweets cost from $0.014 per 1,000 on Sorsa API against $5.00 on the official X API, followers from $0.007 against $10.00, and failed requests are never charged.

#Read X data at 20 requests per second

To read X data without 15-minute windows, use Sorsa API: one API key in the ApiKey header, no X developer account or OAuth, and every endpoint shares the same limit of 20 requests per second.

  1. Get a key. Sign up and copy your API key from the dashboard. The first 100 requests are free and read up to 10K tweets.

  2. Read 100 tweets in one request. Send up to 100 tweet links or IDs to POST /tweet-info-bulk (opens in a new tab). Each tweet comes back with its author's full profile, and the whole batch counts as one request.

    Terminal
    curl -X POST \
      "https://api.sorsa.io/v3/tweet-info-bulk" \
      -H "ApiKey: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"tweet_links": ["1854021938471002113"]}'
    
    Response200 OK
    {
      "tweets": [
        {
          "id": "1854021938471002113",
          "full_text": "Weekly digest is out: 48 links, 3 charts.",
          "created_at": "2026-10-30T09:12:44Z",
          "lang": "en",
          "likes_count": 96,
          "retweet_count": 14,
          "reply_count": 9,
          "view_count": 8840,
          "user": {
            "id": "1590087714360229888",
            "username": "ratelimit_lab_demo",
            "display_name": "Rate Limit Lab",
            "followers_count": 2310
          }
        }
      ]
    }
    
  3. Pace a big job at 20 a second. The function sends batches in rounds of 20, one round per second, so a list of a million IDs runs at the full limit without a single window to wait for.

    Python
    import time
    from concurrent.futures import ThreadPoolExecutor
    
    import requests
    
    URL = "https://api.sorsa.io/v3/tweet-info-bulk"
    HEADERS = {"ApiKey": "YOUR_API_KEY"}
    RATE = 20  # requests per second, per API key
    
    
    def fetch(batch):
        for _ in range(5):
            r = requests.post(URL, headers=HEADERS,
                              json={"tweet_links": batch}, timeout=30)
            if r.status_code == 429:  # over 20 in this second
                time.sleep(1)
                continue
            r.raise_for_status()
            return r.json()["tweets"]
        raise RuntimeError("still 429 after 5 tries")
    
    
    def read_tweets(ids):
        batches = [ids[i:i + 100] for i in range(0, len(ids), 100)]
        tweets = []
        with ThreadPoolExecutor(max_workers=RATE) as pool:
            for i in range(0, len(batches), RATE):
                started = time.monotonic()
                for page in pool.map(fetch, batches[i:i + RATE]):
                    tweets += page
                time.sleep(max(0, 1 - (time.monotonic() - started)))
        return tweets
    
  4. Pick the endpoint for the job. The same limit covers every endpoint, so only the results per request change.

The limit resets every second, not every 15 minutes, and Sorsa API sends no rate-limit headers because there is no window to track. A 429 means more than 20 requests in one second: wait a second and send it again, as the rate limit docs (opens in a new tab) describe. A 401 or 403 means the key is wrong, missing or out of requests. How Sorsa API compares with every other way to read X data is in our guide to Twitter API alternatives.

#How X API windows, headers and 429s work

An X API window is a per-endpoint counter that starts with your first request: each call takes one, and at zero X answers 429 Too Many Requests until the window refills.

Every response tells you where the counter stands in three headers:

Response headers
x-rate-limit-limit: 450
x-rate-limit-remaining: 0
x-rate-limit-reset: 1793606400

x-rate-limit-limit is the size of the window and x-rate-limit-remaining is what is left. x-rate-limit-reset is the moment the window refills, in Unix seconds rather than a countdown. Read them on every response: a call that comes back with 0 remaining has already told you the next one will fail.

Recent search, one app: 450 requests per 15-minute window 450 requests 429 Too Many Requests every call waits for the reset 450 more x-rate-limit-reset the window refills to 450 0 5 10 15 20 25 30 min At minute 0 remaining: 450 After 450 calls remaining: 0 At the reset time remaining: 450
Spend the window early and you wait for the reset: the 429s stop only when the 15 minutes are up.

Over a limit, X answers 429 with error code 88, "Rate limit exceeded". Waiting until the reset time is the fix; retrying sooner only collects more 429s. The step-by-step fixes, retry code and the "rate limit exceeded" message in the X app are covered in our guide to Twitter rate limit exceeded.

A job that stays under every window can still stop, because the official X API has three layers of limits, and each one ends the job in its own way.

Official X API: three layers 1 Endpoint windows 450 searches or 100 posts per 15 minutes, then 429 2 Monthly cap and credits 3M post reads a month, then only Enterprise 3 Account caps 50 posts and 200 replies a day, unverified accounts Sorsa API: one limit 20 requests per second per API key, on every plan Every endpoint counts the same Resets every second, no windows Read-only: no account caps
On the official X API a job can stop at any of three layers. Sorsa API has one: 20 requests per second per key.
  • Endpoint windows reset by themselves, after 15 minutes or 24 hours, and full-archive search also refuses a second request within the same second.
  • The monthly cap and your credits don't reset with time: pay-per-use stops at 3M post reads per billing cycle, and requests are blocked once your credit balance or the spending limit you set (opens in a new tab) runs out.
  • Account caps belong to the X account, not to the app: they count posts, replies, follows and messages from the X app, the web and the API together.

#X posting limits: per 15 minutes and per day

Posting through the official X API is capped twice: by the endpoint, at 100 posts per user every 15 minutes and 10K per app a day, and by the X account. An unverified account can publish only 50 original posts and 200 replies a day, however the posts are sent.

The account cap binds first. At 100 posts per 15 minutes the endpoint would allow 9,600 posts a day for one user, but an unverified account stops at 50.

ActionOfficial X API limitX account limit, all apps together
Original post100 / 15 min per user, 10K / 24 h per app50 a day, unverified accounts
Replythe same endpoint as a post200 a day, unverified accounts
Delete a post50 / 15 min per usernone published
Repost50 / 15 min per usernone published
Direct message15 / 15 min and 1,440 / 24 h per user500 a day
Followremoved from self-serve, April 20, 2026400 a day
Like or quote postremoved from self-serve, April 20, 2026none published
  • Original post

    Official X API limit
    100 / 15 min per user, 10K / 24 h per app
    X account limit, all apps together
    50 a day, unverified accounts
  • Reply

    Official X API limit
    the same endpoint as a post
    X account limit, all apps together
    200 a day, unverified accounts
  • Delete a post

    Official X API limit
    50 / 15 min per user
    X account limit, all apps together
    none published
  • Repost

    Official X API limit
    50 / 15 min per user
    X account limit, all apps together
    none published
  • Direct message

    Official X API limit
    15 / 15 min and 1,440 / 24 h per user
    X account limit, all apps together
    500 a day
  • Follow

    Official X API limit
    removed from self-serve, April 20, 2026
    X account limit, all apps together
    400 a day
  • Like or quote post

    Official X API limit
    removed from self-serve, April 20, 2026
    X account limit, all apps together
    none published

X's limits page (opens in a new tab) says the account caps count actions "from all devices, including web, mobile, phone, API", so a script and a person typing in the app draw on the same 50 posts. X splits the daily post cap into semi-hourly limits it doesn't publish, and once an account follows 5,000 others, more follows depend on account ratios.

The 50-post cap is recent. X cut it from 2,400 updates a day in May 2026, as PCMag reported (opens in a new tab), and the same help page still names 2,400 in another paragraph. X publishes no daily number for verified accounts. Every post also costs money on pay-per-use: $0.015 per post and $0.20 for a post with a link.

Sorsa API is read-only by design: it never posts, likes, follows or sends messages, and it never asks for your X login or cookies, so your X account carries zero risk from it. To publish, pair it with the official X API, and keep the reading, such as checking that a post went live or collecting its replies and mentions, on Sorsa API.

#Free tier and Enterprise rate limits

The official X API has no free tier in 2026, so it has no free rate limits either. Its posting-only Free tier, last capped at 17 posts per 24 hours (opens in a new tab), closed to new developers on February 6, 2026, when pay-per-use became the default. What it allowed year by year is in our answer to is the Twitter API free.

The paid Basic and Pro plans went the same way: X moved Basic subscribers to pay-per-use after June 1, 2026 and Pro subscribers after September 1. Forum answers that quote Basic's 100 posts a day describe plans nobody can buy now. Everyone on pay-per-use now shares the windows in the first table.

Enterprise is the only way to change them. Enterprise contracts set custom rate limits by agreement and lift the 3M post-read cap; X sells them through an interest form and publishes no price, and when it launched Enterprise access in 2023, contracts were reported from $42,000 a month (opens in a new tab).

#Plan an X data job around one limit

X API rate limits are per endpoint and mostly per 15 minutes, with a 3M monthly post-read cap and the account's daily caps on top, so a big job has to fit three layers at once. For reading X data at scale, use Sorsa API: one limit of 20 requests per second per key, up to 100 tweets or 200 followers per request, from $0.014 per 1,000 tweets. Start with 100 free requests, enough for your first 10K tweets.

#FAQ

Are X API rate limits per user or per app?

Both, counted separately. Requests signed with your app's Bearer token draw on one per-app counter, while requests made with a user's OAuth token draw on that user's counter. That is why recent search shows two numbers: 450 requests per app and 300 per user every 15 minutes. Account caps, such as 50 posts a day, apply to the X account itself, whichever app sends the request.

How long does an X API rate limit last?

Most X API rate limits last 15 minutes from the first request in the window. Posting, direct messages and media upload also carry 24-hour caps, and full-archive search allows one request per second. The x-rate-limit-reset header gives the exact refill time in Unix seconds, so a script can wait precisely that long instead of guessing.

How many tweets can you post per day on X?

An unverified X account can publish 50 original posts and 200 replies a day, counted across the X app, the web and the API, according to X's limits page. Through the official X API, posting adds its own ceiling of 100 posts per user every 15 minutes and 10K per app a day. X publishes no daily figure for verified accounts.

Which Twitter API should I use if X's rate limits slow down my data job?

Use Sorsa API for the reading. It has one limit, 20 requests per second per key on every plan, with no 15-minute windows. Each request returns up to 100 tweets or 200 followers, so one key reads up to 2,000 tweets a second. Tweets cost from $0.014 per 1,000 against $5.00 on the official X API, and the first 100 requests are free.

Does paying more raise X API rate limits?

No. On pay-per-use, rate limits and billing are separate: buying more credits pays for more reads but leaves every window as it is, and reads still stop at 3M posts a month. Only an Enterprise contract changes the limits, with custom windows set by agreement; X publishes no Enterprise price, and contracts were reported from $42,000 a month in 2023.

Does Sorsa API have a rate limit?

Yes, one: 20 requests per second per API key, the same on every plan, free accounts included. The counter resets every second instead of every 15 minutes, every endpoint counts the same, and a request over the limit gets a 429 that you send again a second later, free of charge. From 1M requests a month, higher limits are available on request.

#How we checked

On November 2, 2026 we read X's rate-limit reference and pay-per-use price list on docs.x.com, the limits page in X Help, X's developer forum notices on the pay-per-use launch, the end of Basic and Pro, the April 20 changes and the November 22 billing change, and PCMag's report of the May 2026 account caps. Every official X API limit and price on this page comes from them; the Enterprise figure is Wired's 2023 report, since X publishes none. The per-hour figures, the job times in the calculator and the costs are our own arithmetic from those published limits and prices. The same day we checked every Sorsa API endpoint, page size and the rate limit against our live API reference and rate-limit docs; the response shown is a trimmed example built from that reference, with a demo account.

By the Sorsa API team. We build and run Sorsa API, the read-only Twitter/X API and scraper, in production since 2022 (formerly TweetScout API) with 6B+ requests served. About Sorsa API

What changed
  • Rewritten from scratch and merged with our posting-limits guide. Every official X API limit re-checked at docs.x.com and X Help; follows, likes and quote posts marked as removed from self-serve; the May 2026 account caps; read capacity per hour against the 3M monthly cap; a job-time calculator; the reset timeline and the three layers of limits as figures; reading at 20 requests per second in curl and Python.
  • First published.