Is the X (Twitter) API free to read posts?
No. X’s pricing page lists no free tier. The X API bills pay-per-use: $0.005 for each post in a response and $0.010 for each user. Pay-per-use stops at 3 million post reads a month.
For public data you can skip the X API. Openhandle reads public X posts, profiles, followers, and search for $0.0025 per request. One request returns a whole page of posts. You get 100 free requests to start.
Checked October 2026 · request and response run against the API · no affiliate links
curl "https://api.openhandle.dev/v1/twitter/profiles/@copperfield_lab_x_test/posts" \
-H "Authorization: Bearer $OPENHANDLE_API_KEY"import { OpenHandle } from '@openhandle/sdk';
const openhandle = new OpenHandle({ apiKey: process.env.OPENHANDLE_API_KEY! });
const page = await openhandle.twitter.profile('copperfield_lab_x_test').posts.list();
for (const post of page.data) console.log(post.createdAt, post.text);{
"platform": "twitter",
"resource": "post",
"capturedAt": "2026-09-18T10:52:48Z",
"source": "cache",
"data": [
{
"id": "940100000000000001",
"text": "A deterministic text post from a fictional lab. #synthetic",
"createdAt": "2026-08-17T14:00:00Z",
"metrics": { "likes": 42, "reposts": 3, "comments": 3, "quotes": 0, "views": null }
}
],
"meta": { "cursors": { "next": "b3BhcXVlLWN1cnNvcg" } }
}Trimmed to one post and the fields this question needs. The example is a Test account, so you can run it on a free Test key.
How the X API bills
- —Free tier. X’s pricing page lists none. There is no subscription either.
- —Pay-per-use. $0.005 for each post read and $0.010 for each user read, followers and following included. X bills each resource in the response. A repeat read of the same post or user in one UTC day is free.
- —Monthly cap. Pay-per-use stops at 3 million post reads a month.
- —Starter credits. New accounts get $20 in credits after they save a card and make a first purchase.
- —Approval. A developer account, an app, and terms that restrict what you may store and show.
Check the X API pricing page for current rates. They change often. We read the numbers above in October 2026.
How Openhandle bills
- —Per request. $0.0025 per live request, lower at volume. A 24-hour cache hit costs less. A 30-day cache hit is free.
- —No plan. No plan to pick. Your balance is the hard stop, and you can set a monthly request cap on each key.
- —Failed requests are free. You pay only when the API returns an answer. Provider errors and our errors are never billed.
What you get for it
Public profiles, posts, replies, media, followers, following, lists, and search. Every X answer uses the same envelope as Instagram, TikTok, and Reddit. Views are the number X shows, or null when X hides it. Protected accounts return PROFILE_PRIVATE.
When this does not work
These answers are definitive. Store them, do not retry them.
| Situation | Status | Code |
|---|---|---|
| The account is protected | 403 | PROFILE_PRIVATE |
| The account is suspended, deleted, or never existed | 404 | PROFILE_NOT_FOUND |
| The identifier is malformed | 400 | INVALID_IDENTIFIER |
{
"error": {
"code": "PROFILE_PRIVATE",
"message": "This profile is private.",
"requestId": "req_01j8…",
"retryable": false
}
}Openhandle is read-only. It never posts, likes, reposts, or follows. If you need to write to X, the official API is the only path.
Read next
More X (Twitter) questions
Send your agent ahead.
Paste the prompt into your agent and it sets everything up. Or come yourself, it takes five minutes.
100 free requests. No card needed.