Overview
REST API for Twitter and X data. Search tweets and users, read profiles and timelines, walk the follower graph, and run write actions. Bearer auth, JSON.
The cheapest pay-per-call Twitter and X API. $0.0008 per read, $0.50 in free credits, no OAuth.
A REST API for Twitter and X data. Search tweets and users, resolve a single tweet into its full thread, read profiles and timelines, page the follower graph, and run write actions, all from your code.
It is a plain HTTP and JSON interface. There is no OAuth handshake, no developer-account review, and no per-endpoint scope to request. One key, one header, JSON back.
Most-used endpoint
Advanced Tweet Search is the flagship: full Twitter/X operator syntax (from:, min_faves:, lang:, and the rest), cursor-paginated, $0.0008 per call.
Base URL: https://api.twitterapis.com/twitter
Auth: every request requires Authorization: Bearer <API_KEY>. Pass your key as a bearer token on every call.
Docs: docs.twitterapis.com
New here? Start with the Quickstart
The Quickstart takes you from zero to your first live response in under two minutes, with copy-paste curl, JavaScript, and Python.
Authentication
Every endpoint expects a bearer token in the Authorization header:
curl "https://api.twitterapis.com/twitter/tweet/advanced_search?query=from%3Anaval" \
-H "Authorization: Bearer $TWITTERAPIS_KEY"Endpoint categories
| Category | Endpoints | Description |
|---|---|---|
| Search · Popular | 2 | Full-text and structured search across tweets and users. Filter by query operators, author, date, language, and… |
| Tweet Details | 4 | Resolve a single tweet into its full object: replies, retweeters, and the complete conversation thread. |
| User Reads | 14 | Read a profile, its timeline, media, mentions, affiliates, bookmarks, likes, home timeline, and follow relationships by username or numeric ID. |
| Follower Graph | 6 | Page through followers and following lists, including the verified-only, followers-you-know, and v2 cursor-paginated variants. |
| List Data | 1 | Read the members of any public Twitter/X List. |
| Direct Messages | 2 | Read your account's DM inbox and the message history of a single conversation. Read-only, requires a registered session. |
| Account Session | 1 | Register your own X session cookies once so write actions and private-data reads act as your account. Free. |
| Write Actions | 10 | Act on behalf of an authenticated account: create or delete a tweet, like, retweet, bookmark, and follow, each with its undo. Billed at $0.0008… |
Pricing
Pay per call. No subscription, no monthly minimum, no quota to negotiate. A standard read call costs $0.0008 and returns roughly 20 tweets, which works out to about $0.04 per 1,000 tweets. Most write actions cost $0.0008 per call too, the same as a read; posting a new tweet is $0.0016. New accounts start with $0.50 in free credits.
| Call type | Price per call | Notes |
|---|---|---|
| Standard read | $0.0008 | About 20 tweets per call, roughly $0.04 per 1,000 tweets. |
| Simple write | $0.0008 | Like, retweet, bookmark, follow, each undo, and delete. |
| Tweet creation, DM reads | $0.0016 | tweet/create, dm/list, dm/conversation. |
| Full tweet history | $0.0024 | user/tweets/complete, auto-paginated. |
| Tweet thread | $0.004 | tweet/thread, full self-thread in one call. |
Your remaining credits, plan, and payment ledger live in the dashboard; they are not billable API calls.
See Rate limits for the full pay-per-call model.
Start building
Quickstart
Make your first request in under two minutes with curl, JavaScript, or Python.
Authentication
How the bearer token works and where to find your key.
Pagination
Walk past the first page with cursor-based pagination.
Errors
Status codes, the JSON error shape, and how to handle each.
Integrate
MCP Server
Connect @twitterapis/mcp to Claude, Cursor, and any MCP client. 37 tools, 27 read and 10 write, no glue code.
Client libraries
Copy-paste typed clients for JavaScript and Python, with retries and pagination handled.
Interactive testing
Every endpoint page has a live Try-it playground: paste your key, edit the parameters, and send a real request from the browser. To work in Postman instead, import the ready-made collection of all 41 requests, then set the apiKey and baseUrl collection variables.