How a price on this site is calculated.
X pricing pages are not comparable to each other. One quotes dollars per tweet returned, the next quotes credits per request, a third sells a monthly plan of calls, and a fourth charges a floor on every call whatever comes back. Five steps turn all of that into one number.
-
1Read the price off the provider’s own page
Every plan tier, credit rate and minimum comes from a page the provider publishes. Where a page is JavaScript-only and unreadable, the source is recorded as whatever we did read, on the provider record. A number nobody publishes is left blank rather than estimated.
-
2Convert credits into tweets
A credit is not a tweet, and neither is a request. Each record says what the seller actually charges for: a returned item, or a call of a stated page size. Where a seller prints its own page size we use it; where it does not, this site assumes a search, timeline or replies page is 20 tweets, a followers page is 200 accounts, and a profile or single-tweet lookup is one item. Those are the page sizes twitterapi.io, AnyAPI, GetXAPI and TwitterAPIs print in their own docs. Per-request minimums are then charged per page, which is what makes a thin page expensive.
-
3Buy the volume the cheapest published way
For each of the four monthly volumes we take the cheapest route the provider actually sells: the smallest plan that covers it, or a larger plan plus published overage, or the pay-as-you-go rate. Routes are chosen on what a year costs, and a deposit or pack a buyer would not use up in that year counts as spent, so a $500 top-up never wins a column for a $6-a-month workload. The monthly figure is then one month of usage at the chosen rate. A plan with a hard cap and no overage rate cannot serve a volume above its allowance, so it is not considered for that column. Queued delivery, where results arrive minutes later, is priced separately and shown beside the live price, never in place of it.
-
4Charge the plan floor, not the sticker
If the cheapest way to buy 1,000 tweets a month is a $50 monthly plan, the price is $50 per 1,000, not the per-request rate printed next to it. Any monthly minimum is applied on top. A prepaid pack is different: its credits carry across months, so a month costs the tweets used at the pack rate and the pack price is shown as the up-front gate. When a pack would die with credits unused, the month is charged the pack spread over its validity, because that money is spent either way.
-
5Rank by price, with no exceptions
Rows sort on the computed per-1,000 figure at the selected volume. Nothing is boosted, pinned or paid for. Providers we could not price at all are listed under the table so their absence is visible rather than silent.
The four volumes, and why
One price per provider is meaningless, because the ranking inverts as volume rises. A pay-as-you-go provider with no floor wins at 1k a month and loses at 1M; a provider with a $500 commitment is the reverse. So every table here carries all four, and you pick the one that matches your workload.
A side project, a research script, one client’s rank check.
A working product with a handful of customers.
A rank tracker or lead tool at real scale.
A data business. Here the per-call rate is all that matters.
What this table cannot tell you
- Prices are list prices. Anything you negotiate, and every enterprise quote, is invisible here.
- A sliding pay-as-you-go rate is applied as the rate at your volume, on all your units, because that is how the pages read. Providers who bracket marginally will look slightly dearer here than on their own calculator.
- Annual discounts are recorded but the tables quote the monthly-billed price, since that is what most buyers pay first.
- We do not yet measure latency or success rate ourselves. Where a provider publishes its own figure it is shown as a claim, attributed, and never used in the ranking.
- Page sizes are an assumption where a seller does not publish one. A search that returns 20 tweets a page and one that returns 100 buy the same thousand tweets with a very different number of calls, so the per-request column moves with that assumption even though the per-tweet column does not.
- Data quality is not priced here. Whether a lane returns the full text, the quote tweet, the view count or a login-walled field is not something a price list states, and this table does not test it.
- The official X API deduplicates a resource within a 24-hour window, so a workload that rereads the same posts costs less there than the table shows. Nothing else in this set publishes a comparable rule.
Corrections
25 providers are tracked and prices were last checked on 2026-09-08. If a number is wrong, send the provider page that shows the right one to hello@xtwitterapiprices.com. Corrections are made against the source, not against an argument, and the change shows up in the changelog. Providers are welcome to ask for a re-read; nobody can buy a position.