# Pricing — xfetch

Twitter/X data API for read workflows. Self-serve, credits-only billing. No
enterprise contract. This file is the machine-readable mirror of
https://xfetch.io/pricing.

## Free

- Price: $0
- Credits: 1,000 on Google sign-in
- Credit expiry: free credits do not expire
- Rate limit: 60 req/min (~1 QPS)

## Pay as you go (PAYG)

- Price: $0.150 / 1K credits
- Top-up minimum: $10 (≈ 6,666 credits per $1)
- Credit expiry: PAYG credits do not expire
- Rate limit: 300 req/min (~5 QPS)

## Monthly plans

Subscription credits expire at period end and do not roll over.

| Plan | Price/mo | Credits/mo | Rate limit |
|------|----------|------------|------------|
| Starter monthly | $19 | 180,000 | 600 req/min (~10 QPS) |
| Growth monthly | $49 | 550,000 | 900 req/min (~15 QPS) |
| Pro monthly | $129 | 1,800,000 | 1,500 req/min (~25 QPS) |
| Scale monthly | $349 | 6,000,000 | 2,400 req/min (~40 QPS) |

## Credit costs (per pricing key)

Single-object lookups cost a flat credit. Standard collection, list, search,
and profile graph endpoints cost a base credit plus one credit per returned
primary item. Workflow endpoints and bulk graph-ID reads use their active
per-key rules from the shared pricing contract.

The rows below are billing dimensions, not the route count. The current public read catalog has 28 /v1 routes and 14 /2 compatibility routes.

| Endpoint key | What it does | Credit cost |
|--------------|--------------|-------------|
| `trend.lookup` | Trends by WOEID. | 1 base + 1 per item |
| `user.lookup` | Single user by id or username. | Flat 1 credit |
| `tweet.lookup` | Single tweet by id. | Flat 1 credit |
| `user.tweets` | A user's recent tweets with paginated next_token. | 1 base + 1 per item |
| `user.tweets.replies` | Replies authored by a user. | 1 base + 1 per item |
| `user.media` | A user's media-bearing tweets. | 1 base + 1 per item |
| `user.followers` | Follower profiles. | 1 base + 1 per item |
| `user.followers.ids` | Follower ids for high-volume graph reads. | 1 base + 1 per 20 items |
| `user.followers.profiles` | Follower profile objects for enriched graph reads. | 1 base + 1 per item |
| `user.followers.verified` | Verified followers for a user. | 1 base + 1 per item |
| `user.following` | Following profiles. | 1 base + 1 per item |
| `user.following.ids` | Following ids for high-volume graph reads. | 1 base + 1 per 20 items |
| `user.following.profiles` | Following profile objects for enriched graph reads. | 1 base + 1 per item |
| `search.recent` | Recent search by keyword, URL, hashtag, cashtag, or author filter. | 1 base + 1 per item |
| `search.enriched` | Recent search with deduped author objects for the page. | 2 base + 2 per item |
| `user.multi` | Batch user lookup by ids. | 1 base + 1 per item |
| `tweet.multi` | Batch tweet lookup by ids. | 1 base + 1 per item |
| `tweet.retweeters` | Accounts that retweeted a tweet. | 1 base + 1 per item |
| `tweet.quotes` | Quote tweets for a tweet. | 1 base + 1 per item |
| `tweet.conversation` | Paginated reply thread under a tweet. | 1 base + 1 per item |
| `tweet.context` | Tweet context workflow with author, quotes, and retweeters. | 3 base + 1 per item |
| `list.tweets` | Tweets from a list. | 1 base + 1 per item |
| `list.members` | List member profiles. | 1 base + 1 per item |
| `list.followers` | List follower profiles. | 1 base + 1 per item |
| `community.lookup` | Community by id. | Flat 1 credit |
| `community.search` | Search communities. | 1 base + 1 per item |
| `community.tweets` | Tweets from a community. | 1 base + 1 per item |
| `community.members` | Members of a community. | 1 base + 1 per item |
| `community.moderators` | Moderators of a community. | 1 base + 1 per item |
| `profile.lookup` | Profile workflow with user details and recent tweets. | 2 base + 1 per item |

## Billing rules

- New users receive 1,000 free credits on Google sign-in.
- Failed validation, authentication failures, insufficient credits, rate-limit rejections, and service-side errors are not charged.
- /v1 responses return credit metadata in `meta.credits`. /2 responses return credit metadata in headers (`x-credits-charged`, `x-credits-remaining`).
- All credit costs derive from a single source contract in @xfetch/shared.

## API surfaces

- /v1: recommended product API for new integrations (Basic Reads, Enriched Reads, Workflow APIs).
- /2: compatibility layer for migrating from the official X API read code.

## Resources

- Human pricing page: https://xfetch.io/pricing
- API reference: https://xfetch.io/docs/api-reference
- OpenAPI contract: https://xfetch.io/openapi.json
- LLM context: https://xfetch.io/llms-full.txt
