Skip to content

Why is the Twitter/X API so expensive?

Last updated September 26, 2026

The official X API is costly because X turned data access into a paid revenue line in 2023, ending years of free read access. Pay-per-use reads now run about $5 to $10 per 1,000 tweets, and X publishes no price for the Enterprise tier at all. TwitterAPIs.com prices the same reads at $0.04 per 1,000 tweets, billed only when you call an endpoint.

Every rate here is the pricing TwitterAPIs publishes. The billed rate is $0.0008 per call; $0.04 per 1,000 tweets is derived from it at a full 20-tweet page, which is the default page size rather than a guaranteed yield (source: twitterapis.com/pricing).

What changed in Twitter API pricing after 2023?

For over a decade, developers read tweets and ran searches on the official API at no cost. That ended in February 2023, when X removed free read access and rebuilt the platform around paid tiers, which X in turn retired in February 2026 for pay-per-use. Reads on that meter bill $0.005 a post and $0.010 a user, in the range of $5 to $10 per 1,000 tweets, a paid developer account is now mandatory, and the top Enterprise contracts carry no published price, the widely repeated figure of about $42,000 a month having come from 2023 reporting on the tiered plan X has since retired. The shift moved API access from a free developer feature to a priced product line.

Why did X raise its API prices so steeply?

Three forces drove the increase. First, X repositioned firehose-scale data as a revenue source rather than a free utility, especially as large language model builders began harvesting posts at volume for training. Second, gated, paid access is a lever against automated bulk collection the company wanted to slow. Third, the platform needed new recurring revenue after 2022. The result is that the price reflects business strategy and data value, not the raw server cost of returning a tweet, which is a fraction of a cent.

How much does the official X API actually cost per tweet?

On pay-per-use, the official API bills $0.005 for every post it returns and $0.010 for every user, so reading tweets lands between $5 and $10 per 1,000 depending on how many authors you resolve alongside them. Writes add $0.015 a post, or $0.200 when the post carries a URL. Self-serve reads stop at 3 million posts a month, and past that the only route is an Enterprise contract with no published price. The old Basic and Pro plans, which bundled a fixed monthly allotment, are retired, so a quiet month no longer costs a full fee, but every returned post is billed, including the ones your job discards.

How does TwitterAPIs.com make the same data affordable?

TwitterAPIs.com drops the subscription model entirely and bills per call at $0.0008, where a standard call returns up to 20 tweets. That works out to $0.04 per 1,000 tweets, roughly 125 to 250 times cheaper than the official pay-per-use read rate, with no monthly minimum and no plan cap that throttles you. A new account starts with $0.50 in credits, about 12,500 tweets, and needs no developer application. You pay for the calls you make and nothing when you are idle. The standard read is $0.0008 a call, per our public pricing.

Is a cheaper Twitter API a downgrade on the data?

No. TwitterAPIs.com returns the same public objects the official API exposes, tweets, replies, full threads, user profiles, follower and following lists, keyword and hashtag search, and list members, across 121 endpoints. The savings come from the pay-per-use billing model, not from thinner data. For research, monitoring, and product features that need affordable, predictable access, the per-call price removes the fixed monthly floor that makes the official plans expensive for most workloads.

Does X have an API, and what does it cost?

Yes. X runs an official API, the successor to the Twitter API, and its self-serve access is now pay-per-use with no subscription underneath. Reads bill per resource returned: $0.005 a post, $0.010 a user, $0.010 a follower or following record, $0.005 for lists, Spaces, communities and notes, and $0.001 for likes, mutes and blocks, with reads of your own data at $0.001. Writes bill per request: $0.015 to create a post, $0.200 when that post carries a URL, and $0.015 for a direct message or a user interaction. Self-serve reads stop at 3 million posts in a monthly billing cycle, and past that line the only route is an Enterprise contract with no published price. In practice that puts reading tweets at $5 to $10 per 1,000, depending on how many authors a job resolves alongside the posts. That is the quick reference most people want when they ask whether X has an API at all: it does, it is metered from the first request, and there is no free tier for reads. The same public objects are also available through third-party APIs on different meters, which is where the per-call figure here comes from, $0.0008 a call or about $0.04 per 1,000 tweets.

How do you get access to the X API?

On the official platform, access runs through a developer account. You register one, create an app inside it, and that app issues the credentials your code uses: an app-only bearer token for reads, and user tokens when your code acts as a person. Approval is measured in hours to days rather than minutes, a paid developer account is now mandatory, and every read is billed from the first request. Writes that act as an account also need that account's authorisation through OAuth, which is a second flow to build and maintain. Here the same step is shorter by design. You sign up, a bearer key is issued at once, and the first call can go out within two minutes, on a $0.50 starting credit with no card. Reads work on the key alone. Writes run as an X account once you register its session with one free call, or sign in through user/user_login, which bills $0.01 only when the login succeeds. Neither route involves a developer application. The question to settle before choosing is whether you need something only the official platform offers, such as its filtered stream or a negotiated enterprise contract. If you do not, the shorter path also takes the waiting out of your schedule, which is often worth more than the price difference.

Why X prices its API this way

The shape of the official meter tells you what it is built to discourage. It charges per resource returned rather than per request, so the bill tracks the volume of data leaving the platform rather than the work of asking for it. It prices a user at $0.010, twice a post, which makes account-level collection, the raw material of graph mapping and audience building, the most expensive read to run at scale. It charges $0.200 for a post that carries a URL against $0.015 for one without, which makes automated link posting the costliest write on the card. And it caps self-serve reads at 3 million posts a month, beyond which the price is negotiated rather than published. Read together, those choices price bulk extraction and automated link posting far above occasional, interactive use, which fits the reasons given above: data treated as a revenue line, and paid access used as a brake on large-scale collection. None of that makes the meter wrong for its purpose. It does mean the official price reflects policy rather than the cost of serving a request, and that a job whose whole purpose is bulk reading will always look expensive on it. A per-call meter makes the opposite trade. The call is the unit, so a page holding twenty posts costs the same $0.0008 as a page holding one.

Can you still get a flat monthly Basic plan?

No. Basic, at $200 a month, and Pro, at $5,000 a month, were the flat rungs on X's subscription ladder, each bundling a fixed monthly allowance. X closed both to new signups in February 2026, and its pricing page now lists no subscriptions at all, so a new project cannot buy a flat monthly plan on the official platform. The practical effect cuts both ways. A quiet month no longer costs a full fee, because nothing is charged without usage. But a busy month has no ceiling on spend below the 3 million post read cap, because every returned resource bills, and the predictability a flat plan gave you went with it. If what you wanted from Basic was a known monthly number, the closest substitute is a per-call meter with a hard budget you set yourself. Here the balance is credit you load in advance, account/me reports what remains at no charge, and a request made on an empty balance answers 402 rather than running up a debt, so spend can never exceed what you put in. That is the same predictability a flat plan offered, enforced by the balance rather than by a contract, and it scales down to a month in which you spend nothing at all.

Every item is billed separately

On the official meter the unit is the item, and every item is billed separately. A search that returns 100 posts is 100 post reads at $0.005. If those posts come back with their authors resolved as users, each user is another $0.010. A follower export is billed per follower record at $0.010, and list, Space, community and note reads are $0.005 each. Two consequences surprise people. The bill grows with what the API hands back rather than with what you asked for, so a broad query you filter down in your own code is charged for everything it returned, including the rows you throw away. And the price of a job depends on its composition, so two jobs with the same number of requests can differ by a factor of two or more depending on how many users they touch. Here the unit is the call. A standard read is $0.0008 whether the page holds one post or twenty, a follower page is $0.0008 whatever its row count, and the authors nested inside each post are part of the same response rather than separate items. Webhook, monitor and account routes are not billed at all. Billing the call rather than the item is the single largest reason the same public data costs two orders of magnitude less here.

Hidden costs on both meters

The rate card is the visible part of the bill. On the official API the less visible parts are worth adding up before you commit. Discarded rows are billed, because the meter counts what it returns, so loose queries cost money even when your own filter drops most of the result. Author resolution is a second cost line, since a user is $0.010 against $0.005 for the post it wrote. A link in an automated post moves a write from $0.015 to $0.200. The 3 million post read cap is a cliff rather than a slope: past it, the next price is a contract you have to negotiate. And time is a cost, because an approved developer account takes hours to days before the first request goes out. On a per-call API the hidden costs are different and smaller, but they exist, so name them as well. Thread expansion is $0.004 a call and full account history is $0.0024, so a conversation-heavy job blends above the standard rate. Tweet creation and direct message reads are $0.0016. A login through user/user_login is $0.01 when it succeeds. Refused requests are not billed, which removes the most common hidden cost of all, paying for retries that never returned data. Write your expected mix down line by line and the hidden costs on both sides stop being hidden.

Third-party data APIs and per-call fees

Third-party data APIs exist because the official meter left room for a different unit. Hosted resellers price per call or per result rather than per resource, and their per-call fees differ more than their marketing suggests, so convert each one to the same unit before comparing. On the figures gathered on this site, that is $0.04 per 1,000 tweets here, about $0.15 at twitterapi.io, about $0.20 at socialdata.tools and $0.25 to $0.40 on Apify, against $5 to $10 on the official meter. Three questions decide whether a third-party API is the right call. Does it return the public objects your job needs, in a stable shape? Here that is 121 endpoints, 71 reads and 50 writes, all on one key. Does it charge a monthly floor, which turns a cheap rate into an expensive quiet month? Here there is no floor and no minimum. And can you test it before paying? Here a $0.50 credit covers about 625 calls with no card. What a third-party API cannot give you is a first-party contract: if your work genuinely needs the official filtered stream or a negotiated enterprise agreement, that stays with X. For reading, searching, monitoring and posting, a per-call fee is the cheaper meter at every volume, because the unit it counts grows far more slowly than the number of posts and users a job touches.

What common workloads cost

Side by side, at common volumes, the gap is easiest to read. A monitoring job that reads 50,000 tweets in a month bills $2 here and $250 on the official meter at $0.005 a post. A product feature pulling 250,000 tweets a month bills $10 here and $1,250 there. A research archive of 2 million tweets bills $80 here and $10,000 there, still inside the 3 million self-serve cap. Profile enrichment of 10,000 accounts is $8 here at one standard read each, or the same $8 through the batch route at $0.0008 per returned item, against $100 at $0.010 a user. Posting 1,000 replies is $1.60 here and $15 there, or $200 if each reply carries a link. Watching 50 accounts for new posts around the clock costs nothing here, because monitors and webhooks are free routes, while polling those same accounts once a minute would be 72,000 reads a day. The official figures above assume a job that resolves no extra authors; resolving users adds $0.010 each and moves every one of them toward the top of the $5 to $10 per 1,000 range. None of the figures here changes with timing, because the meter counts calls, so the same total applies whether the work lands in one afternoon or spreads across thirty days.

Authors ride along inside every post here

One line that inflates official bills does not exist on this meter at all. Every post returned here, whether it came from search, a timeline, a replies page or a single detail lookup, carries its author nested inside it: the numeric id, the handle, the display name and the verification flags. Nothing extra is charged for that block, because the call is the unit. On the official meter the equivalent information is a user resource at $0.010 each, so a job that needs to know who wrote what pays for the people as well as the posts. The arithmetic on an ordinary listening job makes the point. Reading 10,000 posts written by 6,000 distinct accounts is $50 for the posts and $60 for the users on the official meter, $110 in all. Here it is 500 calls, $0.40, with every author already present in the rows. When you need more than the nested block, such as a bio, a location or the date an account was created, user/info or the batch about route fills it in at the standard rate, and only for the accounts you shortlist rather than for every author the job happened to meet along the way.

The 24 routes that cost nothing

Of the 121 endpoints on this API, 24 carry no charge at all, and they are the ones a long-running integration calls most often. account/me reports remaining credits, credits consumed and total requests served, so a dashboard can watch the balance on a timer for free, and account/payments lists your payment history. The session routes register, check and revoke the X session that write actions run as. Every monitor route is free: creating a watch on an account, listing, updating and deleting watches, per-watch and account-wide health, and the recent deliveries feed with its measured lag fields. Every webhook route is free too: registering an endpoint, listing and deleting endpoints, sending a signed test event, and replaying deliveries that died after exhausting their retries. The feedback routes and the Grok configuration read are free as well. The reasoning is simple. Administration and observation are not data reads, so they are not metered. The practical effect is that the most wasteful pattern on any per-resource meter, polling an account over and over to see whether it has posted, has a free equivalent here. A monitor watching that account delivers each new post to your endpoint, signed, for nothing.

Where our own prices rise above $0.0008

A fair comparison names the expensive lines on both cards, so here are ours. Of the 121 endpoints, 70 bill the standard $0.0008, which covers search, timelines, profiles, followers, replies, quotes, community reads and the simple writes such as likes, reposts, bookmarks, follows and deletes. Nineteen bill $0.0016: creating a post, sending and reading direct messages, creating a List, the six article writes, the profile, avatar and banner updates, and the draft and scheduled post routes that create, edit or list. Two bill $0.0024, full account history and the complete reply set of a post, each of which walks many pages inside one request. Two bill $0.004, full thread expansion and a Grok chat message. The two account recovery steps bill $0.005 each on success, and the two login routes bill $0.01, again only when the login succeeds. The remaining 24 are free. Even the premium write, $0.0016 for a post, is about a ninth of the official $0.015, but the premium lines are where a blended rate drifts upward. Price a thread-heavy or history-heavy job on its own mix rather than on the headline $0.04 per 1,000 tweets, and the estimate will hold when the invoice arrives.

Refused requests leave the balance untouched

A meter is only as fair as its treatment of failure, and that is the line most price comparisons skip. Here a request that is refused is not billed. A 429 from crossing the pace limit costs nothing, so a client that backs off and retries pays once, for the attempt that actually returned data. Several failure paths are documented as free as well: a direct message send that X does not confirm comes back as a 502 and is not charged, a login that runs into a challenge costs nothing, and a batch relationship check naming an unknown source handle returns a 404 with nothing billed. When the balance itself runs out, the answer is a 402 rather than an overdraft, so a runaway loop stops at the money you loaded instead of at the end of the month. On a per-resource meter the question worth asking is the mirror image: what gets billed when a query returns rows you then discard. There, those rows are billed in full, which is why a careful query matters far more on the official API than it does on a per-call one. Both meters reward precise queries. Only one of them charges you for an imprecise one.

Twitter/X API Cost by Provider and Tier

Provider or TierCost per 1,000 TweetsMonthly MinimumDeveloper Account
TwitterAPIs.com$0.04None, pay per useNo
Official X API, pay-per-use$5 to $10None, billed per resourceYes
Official X API, EnterpriseCustom, high volumeNot publishedYes
twitterapi.io$0.15None listedYes
Starting February 9, we will no longer support free access to the Twitter API, both v2 and v1.1.
X Developer Platform, February 2023. Source

Questions and answers

Why did the Twitter API stop being free?
X removed free read access in February 2023 to turn platform data into a paid revenue line and to slow automated bulk collection, including large-scale harvesting for AI training. Reading tweets on the official API is now billed per resource from the first request, with no free tier.
How much does the X API Enterprise tier cost?
X does not publish a price for the Enterprise tier. It is a custom, high-volume contract, and crossing the pay-per-use read cap opens a contact form rather than a rate card. The widely cited figure of about $42,000 a month comes from 2023 press reporting on X's old tiered plan, not from anything X publishes today. Most developers never need the tier at all.
Is the official X API worth the price?
It depends on volume. If you need first-party firehose-scale streaming or official enterprise support, the contract can justify itself. For reading tweets, searching, and monitoring, a pay-per-use API at $0.04 per 1,000 tweets covers the same public data for a fraction of the per-post cost.
What is the cheapest way to read tweets programmatically?
Pay-per-use pricing is the cheapest route for most workloads. TwitterAPIs.com charges $0.0008 per call, about $0.04 per 1,000 tweets, with $0.50 in free signup credits and no monthly minimum, so a low or spiky workload never pays for capacity it does not use.
Do cheaper Twitter APIs return less data than the official one?
No. TwitterAPIs.com returns the same public tweet, user, follower, search, and thread objects across 121 endpoints. The lower price comes from per-call billing instead of per-resource metering, not from reduced data coverage.
Why is a post with a link so expensive on the X API?
Because X's meter prices a post that carries a URL at $0.200 against $0.015 for one without, more than thirteen times as much. Here tweet/create bills $0.0016 whether or not the text includes a link, so link-heavy posting is where the two meters differ the most.
Are monitors and webhooks billed separately here?
No. Every monitor and webhook route is free, including health checks, the deliveries feed, test sends and replays of dead deliveries. The only billed part of a monitoring setup is any read you choose to make about the posts it delivers.
Does a quiet month cost anything on either meter?
Not since the flat plans were retired. The official meter charges nothing without usage, and neither does a per-call meter. The difference shows in busy months, where every returned post and user bills on the official side and every call bills $0.0008 here.

Start with $0.50 in free credits

No credit card. Roughly 12,500 tweets to test every endpoint.