# Pricing — xfetch

Twitter/X data API for read workflows. API calls use self-serve credits;
account monitoring is billed separately from API credits. No enterprise
contract. This file is the machine-readable mirror of
https://xfetch.io/pricing.

Last updated: 2026-07-13.

## 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 31 /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 50 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 50 items |
| `user.following.profiles` | Following profile objects for enriched graph reads. | 1 base + 1 per item |
| `user.relationship` | Bidirectional follow relationship between two accounts. | Flat 1 credit |
| `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. | 1 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.thread` | Root author's self-thread reconstructed from the conversation. | 1 base + 1 per item |
| `tweet.article` | Normalized X long-form Article for a tweet, as ordered content blocks. | Flat 1 credit |
| `tweet.context` | Tweet context workflow with author, quotes, and retweeters. | 1 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. | 1 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.

## Account monitoring

Account monitoring is separate from API credits. Monitor configuration is dashboard-only. Free and PAYG include one 10-day trial monitor slot; monthly plans include monitor slots (Starter 2, Growth 5, Pro 10, Scale 25). Each slot watches one account and can deliver to one Discord incoming webhook plus one generic signed webhook. The extra-account rate is $3 per account / month. Deliveries are not credit-metered.

| Access | Account monitors |
|--------|------------------|
| Free | 1 trial slot for 10 days |
| PAYG | 1 trial slot for 10 days |
| Starter | 2 |
| Growth | 5 |
| Pro | 10 |
| Scale | 25 |

Users can start from suggested accounts or resolve an exact public @handle in the dashboard add flow. Each selected account creates one monitor slot; to deliver the same account to multiple Discord channels, create multiple slots. There is no public monitor configuration API, keyword monitor, replay endpoint, guaranteed redelivery, or published delivery quota.

## 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
