
X data for your AI agents, priced per call.
Profiles, tweets, search and followers over one REST API. Every call has a fixed token price, known before you make it.
1,000 free tokens on signup · no card · failed calls refunded
- Tweets9
- Search3
- Profiles3
- Social graph2
- Lists1
- Trends1
From signup to your first paid call in three steps
One balance, one key, one price per endpoint. Watch a call spend its tokens: pick an endpoint in the console.
Sign up, confirm your email
Your account starts with 1,000 tokens. No card, no plan to pick.
Create your API key
One key per account, shown once. Send it as the x-api-key header.
Each call spends its price
Every response carries x-tokens-cost and x-tokens-remaining. Calls that fail on our side are refunded.

balance1,000tokens
Built to sit inside an agent loop
Wrap any endpoint as a tool. Your agent sees the price of what it is about to do, and the balance after.
Price known before the call
Every endpoint has a fixed token price from one catalog. Your agent can budget before it acts.
Cost on every response
x-tokens-cost and x-tokens-remaining ride on each reply, so spend is visible inside the loop.
Failures are refunded
Upstream errors and timeouts give the tokens back. Only real answers, including not-found, are charged.
// One tool, one fixed price: 1 token per call.
const API = "https://api.xscraper.online";
export const getXProfile = {
name: "get_x_profile",
description: "Look up an X profile by username.",
parameters: {
type: "object",
properties: { username: { type: "string" } },
required: ["username"],
},
async run({ username }: { username: string }) {
const res = await fetch(
`${API}/api/v1/twitter/users/profile_by_username/${username}`,
{ headers: { "x-api-key": process.env.XSCRAPER_KEY! } },
);
// Cost and balance come back as headers on every call.
const cost = res.headers.get("x-tokens-cost");
const left = res.headers.get("x-tokens-remaining");
console.log(`spent ${cost}, ${left} left`);
return (await res.json()).data;
},
};Pricing, per call
19 endpoints, all GET. Flat endpoints cost the same every time. Paged endpoints cost a base price plus a per-page amount, so the price grows with the count you ask for.
| Endpoint | Path | Min | Max |
|---|---|---|---|
| Tweets | |||
| User tweets | 3 | 7 | |
| Latest tweet | 1 | 1 | |
| User tweets and replies | 3 | 7 | |
| User tweets by ID | 3 | 7 | |
| User tweets and replies by ID | 3 | 7 | |
| Liked tweets | 4 | 8 | |
| Tweet by ID | 1 | 1 | |
| Tweet replies | 4 | 4 | |
| Tweet quotes | 4 | 4 | |
| Search | |||
| Search profiles | 4 | 6 | |
| Search tweets | 6 | 14 | |
| Advanced search | 8 | 12 | |
| Profiles | |||
| Profile by username | 1 | 1 | |
| Profile by user ID | 3 | 3 | |
| Username to user ID | 1 | 1 | |
| Social graph | |||
| Followers | 4 | 4 | |
| Following | 4 | 4 | |
| Lists | |||
| List tweets | 3 | 7 | |
| Trends | |||
| Trends | 2 | 2 | |
Questions
What does a token buy?
A profile lookup costs 1 token. Endpoints that page through results cost a base price plus a per-page amount, so asking for 100 tweets costs more than asking for 5. The pricing table lists every endpoint.
Am I charged when a call fails?
Not when it fails on our side. Tokens are taken when the call starts and returned automatically on errors and rate limits. A not-found answer (the user or tweet does not exist) is a real answer and is charged.
What happens when I run out?
Calls return HTTP 402 with the price and your balance. Nothing is billed to a card, because there is no card.
Can I buy more tokens?
Not yet. Paid top-ups are planned. For now every account gets 1,000 tokens after confirming its email.
Is there a rate limit?
Yes, 100 requests per minute per key. Responses include X-RateLimit headers, and a 429 tells you when to retry.
Why only one API key?
It keeps the free tokens fair. You can rotate your key at any time from the dashboard.

1,000 tokens are waiting for you.
Create an account, confirm your email, make your first call.
Create account