← Back to marketplace

ReadX — X/Twitter JSON API, Paid Per Call

external

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.

by Readx40 endpoints100% uptime81ms avg

Price

from $0.0100

up to $0.0500 per request

Network

base

Category

search

On-chain txns

0

Uptime

100%

Avg latency

81ms

Checks

79

Status

Healthy

Base URL

https://readx.sh

Endpoints (40)

Discovered from on-chain x402 payment activity. Prices shown are per-call in USDC.

POST/api/%7Bname%7D/about
base$0.0100

Account info: join date, base location, verification, username changes. Example: GET /api/jack/about

POST/api/%7Bname%7D/about
base$0.0500

Account info: join date, base location, verification, username changes. Example: GET /api/jack/about

POST/api/%7Bname%7D/affiliates
base$0.0100

Accounts affiliated with a user (e.g. an organization's members). Example: GET /api/jack/affiliates

POST/api/%7Bname%7D/followers
base$0.0100

A user's followers (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/followers

POST/api/%7Bname%7D/followers
base$0.0500

A user's followers (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/followers

POST/api/%7Bname%7D/following
base$0.0100

Accounts a user follows (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/following

POST/api/%7Bname%7D/following
base$0.0500

Accounts a user follows (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/following

POST/api/%7Bname%7D/id
base$0.0500

Resolve an @handle to its numeric user id. Example: GET /api/jack/id

POST/api/%7Bname%7D/lists/%7Bslug%7D
base$0.0100

A list's metadata by owner @handle and list slug. Example: GET /api/jack/lists/engineering

POST/api/%7Bname%7D/lists/%7Bslug%7D
base$0.0500

A list's metadata by owner @handle and list slug. Example: GET /api/jack/lists/engineering

POST/api/%7Bname%7D/mentions
base$0.0100

Tweets that mention a user (paginate with cursor until has_more is false). Example: GET /api/jack/mentions

POST/api/%7Bname%7D/pinned
base$0.0100

Just the user's pinned tweet, if any. Example: GET /api/jack/pinned

POST/api/%7Bname%7D/pinned
base$0.0500

Just the user's pinned tweet, if any. Example: GET /api/jack/pinned

POST/api/%7Bname%7D/profile
base$0.0500

Full profile: bio, counts, banner, pinned tweet and a photo rail. Example: GET /api/jack/profile

POST/api/%7Bname%7D/status/%7Bid%7D
base$0.0500

A single tweet with its full conversation: tweets before, after and replies. Example: GET /api/jack/status/20

POST/api/%7Bname%7D/status/%7Bid%7D/history
base$0.0500

A tweet's edit history: the latest version plus every prior revision. Example: GET /api/jack/status/20/history

POST/api/%7Bname%7D/tweets/%7Bid%7D
base$0.0100

A single tweet with its full conversation: tweets before, after and replies. Example: GET /api/jack/tweets/20

POST/api/%7Bname%7D/tweets/%7Bid%7D/history
base$0.0100

A tweet's edit history: the latest version plus every prior revision. Example: GET /api/jack/tweets/20/history

POST/api/%7Bname%7D/verified_followers
base$0.0100

A user's verified followers (~200 per page; paginate with cursor until has_more is false). Example: GET /api/jack/verified_followers

POST/api/%7Bname%7D/with_media
base$0.0100

A user's timeline filtered to tweets with media. Example: GET /api/jack/with_media

POST/api/%7Bname%7D/with_replies
base$0.0100

A user's timeline including their replies. Example: GET /api/jack/with_replies

POST/api/%7Bname%7D/with_replies
base$0.0500

A user's timeline including their replies. Example: GET /api/jack/with_replies

POST/api/article-entities/%7Barticle_id%7D
base$0.0500

An X article by its entity rest_id (owner-only; requires auth_token). Example: GET /api/article-entities/1?auth_token=…

POST/api/articles/%7Bid%7D
base$0.0100

An X article (long-form post) by its wrapper tweet id (public). Example: GET /api/articles/1

POST/api/articles/%7Bid%7D
base$0.0500

An X article (long-form post) by its wrapper tweet id (public). Example: GET /api/articles/1

POST/api/broadcasts/%7Bid%7D
base$0.0500

A Spaces / broadcast: title, state, watch count, replay m3u8. Example: GET /api/broadcasts/1

POST/api/hashtag/%7Btag%7D
base$0.0500

Tweet search for a hashtag. Same as `/api/search?q=%23tag`. Example: GET /api/hashtag/typescript

POST/api/lists/%7Bid%7D
base$0.0100

A list's metadata (name, owner, description, member count). Example: GET /api/lists/1

POST/api/lists/%7Bid%7D
base$0.0500

A list's metadata (name, owner, description, member count). Example: GET /api/lists/1

POST/api/lists/%7Bid%7D/members
base$0.0100

The users that belong to a list. Example: GET /api/lists/1/members

POST/api/lists/%7Bid%7D/members
base$0.0500

The users that belong to a list. Example: GET /api/lists/1/members

POST/api/lists/%7Bid%7D/timeline
base$0.0100

The combined timeline of every account in a list. Example: GET /api/lists/1/timeline

POST/api/lists/%7Bid%7D/timeline
base$0.0500

The combined timeline of every account in a list. Example: GET /api/lists/1/timeline

POST/api/search
base$0.0500

Search tweets. Start the query with @ (or add f:user) to search users instead. Example: GET /api/search?q=typescript

POST/api/search/tweets
base$0.0100

Search for tweets by query (optional product filter; paginate with cursor). Example: GET /api/search/tweets?q=typescript

POST/api/search/users
base$0.0100

Search for users by query (paginate with cursor until has_more is false). Example: GET /api/search/users?q=jack

POST/api/status/%7Bid%7D
base$0.0500

A single tweet on its own, without the surrounding conversation. Example: GET /api/status/20

POST/api/tools/get_user_id
base$0.0100

Resolve an @handle to its numeric user id. Example: GET /api/tools/get_user_id?username=jack

POST/api/tools/get_username
base$0.0100

Resolve a numeric user id to its current @username. Example: GET /api/tools/get_username?user_id=12

POST/api/tweets/%7Bid%7D
base$0.0100

A single tweet on its own, without the surrounding conversation. Example: GET /api/tweets/20

Payment

Protocolx402 (direct payment, USDC)
Networkbase

How to call

Via APIHub (recommended)No wallet · pay with credits · gasless
# 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.sh
APIHub pays the provider on your behalf and debits your credit balance for the exact amount. No wallet setup, no gas, no per-call signing.
Via direct x402 (advanced)Bring your own wallet
import { 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();
Requires USDC on Base and gas on each call. The @x402/fetch client signs EIP-3009 transferWithAuthorization for each 402 response and retries.

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.