Twitter API and account monitor pricing.
Start with 1,000 API credits. Choose PAYG or a monthly API plan, then use its included account-monitor capacity. The extra-account rate is $3 / month.
For your first integration. Ship a real read workflow.
- 180,000 credits / month
- ≈ 180K single-tweet lookups · 16K 10-tweet searches
- 600 requests / minute (~10 QPS)
- 2 account-monitor slots included
For steady, dependable production reads.
- 550,000 credits / month
- ≈ 550K single-tweet lookups · 50K 10-tweet searches
- 900 requests / minute (~15 QPS)
- 5 account-monitor slots included
More monthly volume for busy read pipelines.
- 1,800,000 credits / month
- ≈ 1.8M single-tweet lookups · 163K 10-tweet searches
- 1,500 requests / minute (~25 QPS)
- 10 account-monitor slots included
Lowest per-credit rate for sustained high-volume reads.
- 6,000,000 credits / month
- ≈ 6M single-tweet lookups · 545K 10-tweet searches
- 2,400 requests / minute (~40 QPS)
- 25 account-monitor slots included
Every plan: full live /v1 + /2 read surface · opaque pagination tokens · no endpoint gating by tier
Account monitors are separate from API credits: deliveries never spend them. Free and PAYG include one 10-day trial slot; monthly plans include monitor slots (Starter 2, Growth 5, Pro 10, Scale 25). The extra-account rate is $3 / account / month. See how account monitors work →
Monthly credits renew each billing period and expire at the end of it. Need flexibility instead? See pay-as-you-go ↓
Need more than Scale's 6,000,000 credits / month? Get in touch →
No commitment? Top up any time.
Buy credits outright when you don't want a subscription. Custom amount from $10 at $0.150 / 1K credits, rounded up to the next whole credit. Cancel anytime by not topping up again — there's nothing to cancel.
- Top-up credits don't expire
- 300 requests / minute (~5 QPS)
- Upgrade to a monthly plan when volume gets predictable
- $1066,667 credits
- $25166,667 credits
- $50333,334 credits
Current rules, then every key.
- 01
Single lookups
1 credit
“Get this user. Get this tweet.”
- 02
Collections and search
1 base + 1 per returned item
“Search recent posts. Read follower profiles.”
- 03
Workflow APIs
Base + returned workflow items
“tweet.context = 1 + quotes/retweeters. profile.lookup = 1 + recent tweets. search.enriched = 1 + 2/tweet.”
- 04
Bulk graph IDs
1 base + 1 per 50 IDs
“Followers and following IDs use the block rate.”
Every active pricing key with its current credit cost. These are billing dimensions, not the route count: the same keys cover 31 /v1 read routes and 14 /2 compatibility routes. Keys are public product contracts — pricing.md is the same data in markdown, suitable for AI agents comparing tools programmatically.
View all 33 pricing keysShowHide
| Pricing key | What it does | Status | Cost |
|---|---|---|---|
trend.lookup | Trends by WOEID. | Live | 1 base + 1 per item |
user.lookup | Single user by id or username. | Live | Flat 1 credit |
tweet.lookup | Single tweet by id. | Live | Flat 1 credit |
user.tweets | A user's recent tweets with paginated next_token. | Live | 1 base + 1 per item |
user.tweets.replies | Replies authored by a user. | Live | 1 base + 1 per item |
user.media | A user's media-bearing tweets. | Live | 1 base + 1 per item |
user.followers | Follower profiles. | Live | 1 base + 1 per item |
user.followers.ids | Follower ids for high-volume graph reads. | Live | 1 base + 1 per 50 items |
user.followers.profiles | Follower profile objects for enriched graph reads. | Live | 1 base + 1 per item |
user.followers.verified | Verified followers for a user. | Live | 1 base + 1 per item |
user.following | Following profiles. | Live | 1 base + 1 per item |
user.following.ids | Following ids for high-volume graph reads. | Live | 1 base + 1 per 50 items |
user.following.profiles | Following profile objects for enriched graph reads. | Live | 1 base + 1 per item |
user.relationship | Bidirectional follow relationship between two accounts. | Live | Flat 1 credit |
search.recent | Recent search by keyword, URL, hashtag, cashtag, or author filter. | Live | 1 base + 1 per item |
search.enriched | Recent search with deduped author objects for the page. | Live | 1 base + 2 per item |
user.multi | Batch user lookup by ids. | Live | 1 base + 1 per item |
tweet.multi | Batch tweet lookup by ids. | Live | 1 base + 1 per item |
tweet.retweeters | Accounts that retweeted a tweet. | Live | 1 base + 1 per item |
tweet.quotes | Quote tweets for a tweet. | Live | 1 base + 1 per item |
tweet.conversation | Paginated reply thread under a tweet. | Live | 1 base + 1 per item |
tweet.thread | Root author's self-thread reconstructed from the conversation. | Live | 1 base + 1 per item |
tweet.article | Normalized X long-form Article for a tweet, as ordered content blocks. | Live | Flat 1 credit |
tweet.context | Tweet context workflow with author, quotes, and retweeters. | Live | 1 base + 1 per item |
list.tweets | Tweets from a list. | Live | 1 base + 1 per item |
list.members | List member profiles. | Live | 1 base + 1 per item |
list.followers | List follower profiles. | Live | 1 base + 1 per item |
community.lookup | Community by id. | Live | Flat 1 credit |
community.search | Search communities. | Live | 1 base + 1 per item |
community.tweets | Tweets from a community. | Live | 1 base + 1 per item |
community.members | Members of a community. | Live | 1 base + 1 per item |
community.moderators | Moderators of a community. | Live | 1 base + 1 per item |
profile.lookup | Profile workflow with user details and recent tweets. | Live | 1 base + 1 per item |
You only pay when it works.
400Failed input validation401 / 403Auth failures402Insufficient credits429Rate limit responses5xxService-side failuresFive categories of failure. None of them touch your balance.
Common questions.
- Can I evaluate xfetch before signing up?
- The API reference shows live request/response samples on every endpoint, and the full machine-readable contract is at /openapi.json. Sign in with Google to run real requests against your own API key in the dashboard playground.
- Do credits expire?
- Free credits and PAYG credits do not expire. Monthly credit allotments expire at the end of each subscription period.
- Do account monitors cost credits?
- No — monitor deliveries don't draw down API credits. Monitor billing is separate: Free and PAYG include one 10-day trial slot; monthly plans include monitor slots (Starter 2, Growth 5, Pro 10, Scale 25). Each slot watches one account and can deliver to one Discord channel and one generic webhook; use another slot to send the same account to another Discord channel. The extra-account rate is $3 per account / month.
- What happens when I run out?
- A request that starts below its minimum cost returns
402 insufficient_creditsand is not charged. A variable-cost read that passed preflight can finish successfully and leave a small negative balance; later calls return 402 until the balance is restored. Successful/v1responses return the charged amount and remaining balance inmeta.credits;/2responses use credit headers. - Is xfetch ready for commercial use?
- Yes. Sign up with Google, mint an API key, and ship. xfetch is read-only and provider-neutral by design — your code targets the xfetch contract, not an upstream API. See the Terms of Service for the full agreement.
- Can I change plans?
- Yes. Manage your subscription from the billing dashboard. Upgrades take effect immediately and use prorated billing; downgrades take effect at the end of the current billing period. Canceling keeps the current period active and stops the next renewal. See our refund policy for billing-exception details.
- What happens if a request fails?
- Customer API failures return stable public error codes, and service-side failures are not charged.
- Do you have an SDK?
- xfetch returns plain JSON over REST and works with any HTTP client: curl, Node
fetch, Pythonrequests, or Gonet/http. The OpenAPI contract at /openapi.json can generate typed clients in most languages.