xdataapi
Read-only public X (Twitter) data for developers and AI agents. Profiles, tweets, timelines, threads,
followers, and search with the x.com operators. One credit per tweet or profile returned. Empty results
and errors are free.
Not affiliated with X Corp. Public data only. No write endpoints.
MCP
Claude Code, as a plugin — the server plus a skill that teaches the search operators and the cost rules:
claude plugin marketplace add xdataapi/xdataapi
claude plugin install xdataapi@xdataapi
Or the server on its own, in any MCP client:
claude mcp add --transport http xdataapi https://api.xdataapi.io/mcp
The server signs you in with OAuth on first use. Clients without OAuth pass a key instead:
{
"mcpServers": {
"xdataapi": {
"url": "https://api.xdataapi.io/mcp",
"headers": { "x-api-key": "xd_live_..." }
}
}
}
Stdio-only clients can bridge with mcp-remote:
{
"mcpServers": {
"xdataapi": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.xdataapi.io/mcp", "--header", "x-api-key:${XDATAAPI_KEY}"],
"env": { "XDATAAPI_KEY": "xd_live_..." }
}
}
}
Tools: get_user, get_users, get_user_tweets, get_followers, get_following, get_follower_ids,
search_tweets, get_tweet, get_tweets, get_thread, get_replies, get_quotes, get_retweeters,
get_balance. All read-only. Listed on the official MCP Registry as io.xdataapi/xdataapi.
REST
curl "https://api.xdataapi.io/v1/tweets/search?q=from:x%20since:2026-09-01&count=20" \
-H "x-api-key: xd_live_..."
Every response carries credits_charged and balance_remaining. Pages return next_cursor; pass it back as cursor.
SDKs
TypeScript, npm install xdataapi:
import { xdataapi } from 'xdataapi';
const api = xdataapi({ apiKey: process.env.XDATAAPI_KEY! });
const { data } = await api.searchTweets({ query: { q: 'from:x', count: 20 } });
Python, pip install xdataapi:
from xdataapi import AuthenticatedClient
from xdataapi.api.tweets import search_tweets
client = AuthenticatedClient(base_url="https://api.xdataapi.io", token=KEY, prefix="", auth_header_name="x-api-key")
page = search_tweets.sync(client=client, q="from:x", count=20)
The TypeScript client has no runtime dependencies; npm install xdataapi pulls one package.
Both are generated from openapi.yaml by sdk/generate.sh; the source
is in sdk/typescript and sdk/python. Nothing in them is hand-written
except the small wrapper in sdk/typescript/src/index.ts and the READMEs, so an API change means
regenerating rather than editing.
Framework packages
Installable tools for agent frameworks. Each one carries the credit cost in every tool description, so
the model can see what a plan costs before it runs it, and each takes a max_results cap so one agent
step cannot empty the balance.
For anything else, see examples/: CrewAI, the Vercel AI SDK, and the OpenAI Agents SDK.
An agent that speaks MCP needs none of them.
Pricing
Prepaid credit packs from $10. Credits never expire. No per-call minimum. Rate limit rises with lifetime spend.
Details: https://xdataapi.io/#pricing
Support
hello@xdataapi.io. Security reports: https://xdataapi.io/.well-known/security.txt