X API rate limits under pay-per-use

X enforces two independent ceilings on pay-per-use accounts: 15-minute rolling windows per endpoint and a 2 million post-read cap per month. Hitting either returns HTTP 429 even when credits remain. This page maps each limit, how it interacts with billing, and when a trend feed poll sidesteps both.

X bills pay-per-use accounts per resource, but billing and throttling are separate systems. A job can have thousands of dollars in prepaid credits and still stall on HTTP 429 when it outruns a 15-minute window. Another job can stay under every rolling limit and hit the 2,000,000 post-read monthly wall on day 18.

For dollar costs per endpoint, see X API pay-per-use endpoint costs. For the broader tier landscape, see X API pricing comparison.

Two ceilings that block requests

Pay-per-use developers navigate two published limit types plus optional spending controls:

Limit typeWhat it measuresTypical consequence
15-minute rolling windowRequests or resources per endpoint per app or userHTTP 429 until window resets
Monthly post-read capTotal post resources fetched in billing cycleHard stop at 2,000,000 reads
Spending limit (optional)Dollar spend per billing cycleRequests blocked when cap reached

Credits deduct on successful responses. Rate limits reject traffic before or after billing depending on endpoint behavior. Treat them as independent budgets.

15-minute rolling windows

X documents rate limits in 15-minute rolling windows per endpoint. Each endpoint family has its own counter. Exhausting the search window does not consume the timeline window.

Pay-per-use accounts see higher per-app ceilings than legacy Basic on several read paths. Third-party summaries from early 2026 cite roughly 3,500 tweet reads per 15 minutes per app and 450 recent-search requests per 15 minutes per app on pay-per-use. Legacy Basic capped recent search at 60 requests per 15 minutes.

Per-app limits (Bearer Token) and per-user limits (OAuth user context) run on separate counters. One power user hitting a per-user write cap does not block other users of the same application.

Response headers on throttle

When a limit is exceeded, X returns HTTP 429 Too Many Requests. Responses include x-rate-limit-limit, x-rate-limit-remaining, and x-rate-limit-reset (UTC epoch seconds). Production schedulers should back off to the reset timestamp instead of tight retry loops, which burn credits on calls that will fail anyway.

HeaderMeaning
x-rate-limit-limitMaximum requests allowed in the current window
x-rate-limit-remainingRequests left before throttle
x-rate-limit-resetUnix timestamp when the window resets

Monthly post-read cap

Pay-per-use plans hard-cap at 2,000,000 post reads per monthly billing cycle. User reads, trends reads, and owned-account reads may meter separately, but post reads are the ceiling most monitoring pipelines hit first.

At $0.005 per post read, 2,000,000 reads equal $10,000 in post-read charges alone. After the cap, further post reads require an Enterprise contract, typically quoted from around $42,000 per month. There is no self-serve overage purchase for post reads beyond 2 million.

A pipeline averaging 70,000 post reads per day reaches the cap in about 28 days. Polling-heavy architectures should model monthly totals, not just per-call cost.

Legacy tier limits for existing subscribers

New signups cannot access legacy Basic or Pro. Accounts that subscribed before the February 2026 pay-per-use switch may still operate under fixed monthly allowances until migrated.

TierMonthly pricePost reads/month (allowance)Recent search / 15 minFull-archive search
Basic (legacy)$200~10,000 to 15,00060 requestsNot available
Pro (legacy)$5,000~1,000,000300 requestsAvailable
Pay-per-useNo floor2,000,000 hard cap~450 requests (reported)Not available

Legacy Pro also included filtered stream access. Pay-per-use self-serve does not expose streaming endpoints. Enterprise remains the path for firehose-scale ingestion.

How rate limits interact with credit spend

Consider a keyword monitor that calls GET /2/tweets/search/recent every five minutes with max_results=100:

The same monitor at one-minute cadence sends 15 search calls per 15 minutes. Still under 450, but monthly reads climb toward 4.3 million, blowing past the cap even if credits are available.

Rate limits rarely bind low-frequency jobs. Monthly caps and credit totals bind aggressive ones.

Endpoints with different throttle profiles

Not every endpoint shares the same window size or limit class. Writes, user lookups, trends reads, and list operations each carry separate counters in X's developer documentation.

Endpoint familyBilling unitRate limit notes
Post reads (/2/tweets, search results)$0.005 per post resourceHighest volume cap risk
User reads (/2/users)$0.010 per user resourceSeparate per-user bucket on OAuth
Trends reads (/2/trends/by/woeid/:id)$0.010 per trends resourceLow volume, location-based
Post creates$0.015 to $0.200 per requestPer-user write caps apply
Owned-account reads$0.001 per resourceDiscounted; still metered

Trends reads cost more per call than post reads but return a ranked topic list in one response. For location-trend polling, the trends endpoint usually hits rate limits before post-read caps.

When a trend feed API avoids X rate limits

Three workload shapes do not need X developer credentials or X rate limit headers:

  1. Ranked trending list only. Poll topic names, diff against a stored set, alert on new entries. No search pagination, no post objects.
  2. Hourly or slower cadence. Throughput stays low; either stack works, but a feed API avoids credit math.
  3. Cross-platform validation. Pair X topic spikes with Google Search or Reddit growth to test whether a trend is platform-local.

Trends MCP exposes live X trending topics via get_top_trends with type X (Twitter). One POST returns ranked [rank, topic] pairs. The free tier allows 100 requests per month with no X developer account. For polling patterns and quota planning, see monitoring X trending topics on a schedule.

The official X API remains necessary for tweet text, engagement metrics, user profiles, filtered streams, and write operations. Rate limits make the boundary visible: if the product only needs topic names on a schedule, per-post reads and their dual ceilings are the wrong tool.

Common questions

Pay-per-use accounts face 15-minute rolling windows on each endpoint family, enforced independently per app and per authenticated user. Published examples include roughly 3,500 tweet reads per 15 minutes per app and 450 recent-search requests per 15 minutes per app. A separate monthly cap blocks more than 2,000,000 post reads per billing cycle regardless of credits purchased.
No. Credits control spend, but rate limits control throughput. A pipeline with $5,000 in prepaid credits still receives HTTP 429 responses when it exceeds a 15-minute window or the 2 million monthly post-read ceiling. Spending limits in the Developer Console block requests when the dollar cap is reached, which is a third independent gate.
Legacy Basic allowed about 60 recent-search requests per 15 minutes and roughly 10,000 to 15,000 post reads per month on a $200 subscription. Legacy Pro allowed about 300 search requests per 15 minutes and roughly 1,000,000 reads per month on $5,000. New developers cannot subscribe to either tier. Existing legacy subscribers retain their tier limits until migrated.
For ranked trending topic names only, Trends MCP returns live X trending data via get_top_trends at one request per poll with no X developer account. That sidesteps X rate limit headers entirely. The official trends endpoint costs $0.010 per read and still counts against X's 15-minute windows.