ReadX is a read-only X/Twitter JSON API. Profiles, timelines, tweets, search, lists, followers & following — pay per call with x402 micropayments in USDC on Base or Solana. No API keys.
Price
from $0.0100
up to $0.0500 per request
Network
base
Category
search
On-chain txns
0
Uptime
100%
Avg latency
33ms
Checks
83
Status
Healthy
Discovered from on-chain x402 payment activity. Prices shown are per-call in USDC.
A user's timeline: tweets, retweets and quotes. Example: GET /api/jack
Account info: join date, base location, verification, username changes. Example: GET /api/jack/about
Account info: join date, base location, verification, username changes. Example: GET /api/jack/about
A user's followers (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/followers
A user's followers (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/followers
A user's followers as shown on the web (~70 per page, capped at ~800; paginate with cursor until has_more is false). Example: GET /api/jack/followers_web
Accounts a user follows (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/following
Accounts a user follows (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/following
Resolve an @handle to its numeric user id. Example: GET /api/jack/id
A user's profile info: id, name, bio, location, follower/following counts, verification. Example: GET /api/jack/info
A list's metadata by owner @handle and list slug. Example: GET /api/jack/lists/engineering
Tweets that mention a user (paginate with cursor until has_more is false). Example: GET /api/jack/mentions
Just the user's pinned tweet, if any. Example: GET /api/jack/pinned
Just the user's pinned tweet, if any. Example: GET /api/jack/pinned
Full profile: bio, counts, banner, pinned tweet and a photo rail. Example: GET /api/jack/profile
Whether one user follows another (and related block/mute/DM flags). Example: GET /api/jack/relations?name=elonmusk
A single tweet with its full conversation: tweets before, after and replies. Example: GET /api/jack/status/20
A tweet's edit history: the latest version plus every prior revision. Example: GET /api/jack/status/20/history
A single tweet with its full conversation: tweets before, after and replies. Example: GET /api/jack/tweets/20
A user's verified followers (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/verified_followers
A user's timeline filtered to tweets with media. Example: GET /api/jack/with_media
A user's timeline including their replies. Example: GET /api/jack/with_replies
An X article by its entity rest_id (owner-only; requires auth_token). Example: GET /api/article-entities/1?auth_token=…
An X article by its entity rest_id (owner-only; requires auth_token). Example: GET /api/article-entities/1?auth_token=…
An X article (long-form post) by its wrapper tweet id (public). Example: GET /api/articles/1
An X article (long-form post) by its wrapper tweet id (public). Example: GET /api/articles/1
A Spaces / broadcast: title, state, watch count, replay m3u8. Example: GET /api/broadcasts/1
Search for users by query (paginate with cursor until has_more is false). Example: GET /api/search/users?q=jack
A Space's metadata: title, host, state, listener counts, and whether audio is downloadable. Example: GET /api/spaces/1vOxwrneqBqJB
Resolve an @handle to its numeric user id. Example: GET /api/tools/get_user_id?username=jack
Resolve up to 20 @handles to numeric user ids (map; null on per-handle failure). Example: GET /api/tools/get_user_ids?usernames=jack,elonmusk
Resolve a numeric user id to its current @username. Example: GET /api/tools/get_username?user_id=12
Resolve up to 20 numeric user ids to @usernames (map; null on per-id failure). Example: GET /api/tools/get_usernames?user_ids=12,44196397
Trending topics for a location (worldwide by default; filter with country or woeid). Example: GET /api/trends?country=US
Replies to a tweet (paginate with cursor until has_more is false). Example: GET /api/tweets/20/replies
# one-time setup
npx @apihubio/cli register
npx @apihubio/cli topup 10
# call it
npx @apihubio/cli call https://readx.sh \
-X POST \
-d '{ /* check provider docs for input */ }'
# or save it to Claude/Cursor/Codex
npx @apihubio/cli install
npx @apihubio/cli add https://readx.shimport { wrapFetchWithPayment } from "@x402/fetch";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";
const account = privateKeyToAccount("0xYOUR_PRIVATE_KEY");
const client = createWalletClient({ account, chain: base, transport: http() });
const x402Fetch = wrapFetchWithPayment(client);
const res = await x402Fetch("https://readx.sh", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ /* check provider docs for input */ }),
});
const data = await res.json();This is an external service not operated by APIHub. Listing data is sourced from public on-chain records and third-party indexes. Payment goes directly to the service provider via the x402 protocol. APIHub does not guarantee availability, accuracy, or quality of external services.