> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sorsa.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Pricing

# Pricing, Plans, and Cost per Request

Sorsa API uses a flat pricing model: **1 API call = 1 request from your quota**, regardless of which endpoint you hit. A complex tweet search costs the same as a simple ID conversion. There are no "credit multipliers," no per-endpoint pricing tiers, and no hidden charges for user data embedded in tweet responses. This page explains the available plans, breaks down the effective cost per data unit for every endpoint, and shows how to estimate your monthly spend for common workflows.

***

## Plans

|                        | Starter  | Pro       | Enterprise |
| :--------------------- | :------- | :-------- | :--------- |
| Monthly requests       | 10,000   | 100,000   | 500,000    |
| Price                  | \$49/mo  | \$199/mo  | \$899/mo   |
| Cost per request       | \$0.0049 | \$0.00199 | \$0.0018   |
| Rate limit             | 20 req/s | 20 req/s  | 20 req/s   |
| All endpoints included | Yes      | Yes       | Yes        |

**Start with 100 free requests.** Every new account gets 100 requests at no cost, with no credit card required. They never expire and work across all 40 endpoints, so you can test any part of the API before choosing a plan.

**Custom plans.** If you need more than 500,000 requests per month (for AI training, large-scale scraping, or continuous monitoring across thousands of accounts), we offer custom volumes with dedicated rate limits. Get in touch through [Talk to Sales](https://api.sorsa.io/talk-to-sales) or reach us on [Discord](https://discord.com/invite/uwAefKCj7X).

**Rate limit is the same on all standard plans.** Every standard plan gets 20 requests per second. Upgrading from Starter to Pro does not change your speed, only your monthly quota. Custom plans can include higher, dedicated rate limits.

***

## The Flat-Rate Principle

Many X data providers use credit-based pricing, where different endpoints consume different numbers of credits per call. A search might cost 25 credits, a profile lookup 5 credits, and a follower extraction 50 credits. This makes budgeting difficult and creates situations where the same data costs wildly different amounts depending on how you access it.

Sorsa does not work this way. Every request to every endpoint costs exactly 1 request from your quota. On top of that:

* **User data is included for free in tweet responses.** When `/search-tweets`, `/user-tweets`, `/comments`, `/mentions`, or any tweet endpoint returns results, each tweet includes the full author profile (ID, username, bio, follower count, verified status, and more). You are not charged extra for this embedded data.
* **Batch endpoints exist for high-volume lookups.** `/info-batch` and `/tweet-info-bulk` let you fetch up to 100 items in a single request, so the effective cost per item drops significantly when you use them.
* **Follower and following endpoints return up to 200 profiles per request.** This is one of the highest per-request yields available.

***

## Cost per Data Unit

The real question is not "how much does a request cost?" but "how much does it cost to get the data I need?" The answer depends on how many items each endpoint returns per request.

### Tweet Data

| Endpoint           | Items per request | Starter   | Pro       | Enterprise |
| :----------------- | :---------------- | :-------- | :-------- | :--------- |
| `/search-tweets`   | \~20 tweets       | \$0.00025 | \$0.0001  | \$0.00009  |
| `/user-tweets`     | \~20 tweets       | \$0.00025 | \$0.0001  | \$0.00009  |
| `/mentions`        | \~20 tweets       | \$0.00025 | \$0.0001  | \$0.00009  |
| `/comments`        | \~20 tweets       | \$0.00025 | \$0.0001  | \$0.00009  |
| `/quotes`          | \~20 tweets       | \$0.00025 | \$0.0001  | \$0.00009  |
| `/list-tweets`     | \~20 tweets       | \$0.00025 | \$0.0001  | \$0.00009  |
| `/tweet-info-bulk` | up to 100 tweets  | \$0.00005 | \$0.00002 | \$0.000018 |
| `/tweet-info`      | 1 tweet           | \$0.0049  | \$0.00199 | \$0.0018   |

**Takeaway:** Always use `/tweet-info-bulk` instead of looping `/tweet-info`. The per-tweet cost difference is roughly 100x. For collecting tweets by keyword, topic, or user, the search and timeline endpoints are the most efficient at \~\$0.0001 per tweet on Pro.

### User Profile Data

| Endpoint              | Items per request  | Starter    | Pro       | Enterprise |
| :-------------------- | :----------------- | :--------- | :-------- | :--------- |
| `/followers`          | up to 200 users    | \$0.000025 | \$0.00001 | \$0.000009 |
| `/follows`            | up to 200 users    | \$0.000025 | \$0.00001 | \$0.000009 |
| `/verified-followers` | up to 200 users    | \$0.000025 | \$0.00001 | \$0.000009 |
| `/community-members`  | \~20 users         | \$0.00025  | \$0.0001  | \$0.00009  |
| `/list-members`       | \~20 users         | \$0.00025  | \$0.0001  | \$0.00009  |
| `/retweeters`         | \~20 users         | \$0.00025  | \$0.0001  | \$0.00009  |
| `/search-users`       | \~20 users         | \$0.00025  | \$0.0001  | \$0.00009  |
| `/info-batch`         | up to 100 profiles | \$0.00005  | \$0.00002 | \$0.000018 |
| `/info`               | 1 profile          | \$0.0049   | \$0.00199 | \$0.0018   |

**Takeaway:** Follower and following extraction is extremely cost-efficient at \$0.00001 per profile on Pro. For bulk profile lookups, always use `/info-batch` instead of looping `/info`.

### Verification Checks

| Endpoint                  | Items per request | Starter  | Pro       | Enterprise |
| :------------------------ | :---------------- | :------- | :-------- | :--------- |
| `/check-follow`           | 1 check           | \$0.0049 | \$0.00199 | \$0.0018   |
| `/check-retweet`          | 1 check           | \$0.0049 | \$0.00199 | \$0.0018   |
| `/check-quoted`           | 1 check           | \$0.0049 | \$0.00199 | \$0.0018   |
| `/check-comment`          | 1 check           | \$0.0049 | \$0.00199 | \$0.0018   |
| `/check-community-member` | 1 check           | \$0.0049 | \$0.00199 | \$0.0018   |

Verification endpoints are one-check-per-request by design (each checks a specific user against a specific action). For a campaign with 1,000 participants and 5 tasks each, budget 5,000 requests.

### Utility Endpoints

| Endpoint                | Items per request | Starter  | Pro       | Enterprise |
| :---------------------- | :---------------- | :------- | :-------- | :--------- |
| `/about` (country data) | 1 result          | \$0.0049 | \$0.00199 | \$0.0018   |
| `/username-to-id`       | 1 conversion      | \$0.0049 | \$0.00199 | \$0.0018   |
| `/id-to-username`       | 1 conversion      | \$0.0049 | \$0.00199 | \$0.0018   |
| `/link-to-id`           | 1 conversion      | \$0.0049 | \$0.00199 | \$0.0018   |
| `/score`                | 1 result          | \$0.0049 | \$0.00199 | \$0.0018   |

***

## What You Get Without Extra Requests

Some data comes at zero additional cost because it is embedded in responses you are already making:

**User profiles inside tweet responses.** Every tweet from `/search-tweets`, `/user-tweets`, `/mentions`, `/comments`, `/quotes`, and `/list-tweets` includes the full author profile. If you search for 1,000 tweets and they come from 400 unique users, you now have 400 complete profiles without a single `/info` call.

**Comment text inside verification responses.** When `/check-comment` returns `commented: true`, the response includes the full tweet object of the comment. There is no need to call `/comments` separately to read what the user wrote.

**Quote text inside quote verification.** When `/check-quoted` returns `status: "quoted"`, the response includes the quote text and timestamp.

**Article data inside `/article`.** The `/article` endpoint returns the full article text, engagement metrics, and the author profile in one call.

***

## Budget Estimation for Common Workflows

### Social Listening: monitor a keyword and collect tweets

You poll `/search-tweets` every 30 seconds, 24/7, to capture tweets about your brand.

* 1 request per 30 seconds = 2 req/min = 2,880 req/day = **86,400 req/month**
* Fits in the **Pro plan** (\$199/mo)
* Each request returns \~20 tweets, so you collect up to \~1.7M tweets/month

### Competitor Analysis: profile, content, and mentions for 5 competitors

* 5 profile lookups via `/info`: 5 requests
* 50 pages of tweets per competitor via `/user-tweets`: 250 requests
* 10 pages of mentions per competitor via `/mentions`: 50 requests
* Total per run: **305 requests**
* Run weekly: \~1,220 req/month, fits comfortably in the **Starter plan**

### Audience Research: extract and geo-analyze 50,000 followers

* 50,000 followers via `/followers` (200/page): 250 requests
* 50,000 country lookups via `/about`: 50,000 requests
* Total: **50,250 requests**
* Fits in the **Pro plan** (\$199/mo)
* Cost: \~\$100 (50,250 x \$0.00199)

### Campaign Verification: 2,000 participants, 5 tasks each

* 2,000 x 5 verification checks: 10,000 requests
* Fits in the **Starter plan** (\$49/mo)

### Large-Scale Data Collection: full timeline scrape of 100 accounts

* Average 500 tweets per account, \~20 per page = 25 pages per account
* 100 accounts x 25 pages = 2,500 requests
* Plus you get \~50,000 tweets with embedded user profiles
* Fits in the **Starter plan** (\$49/mo)

### Real-Time Monitoring: track 200 accounts via X List, 5-second interval

* 1 request per 5 seconds = 17,280 req/day = **518,400 req/month**
* This is just over the Enterprise quota of 500,000, so it needs a **custom plan** (or a slightly longer polling interval to fit Enterprise at \$899/mo)
* A single `/list-tweets` request per cycle covers all 200 accounts

***

## Cost Optimization Strategies

These are covered in depth in the [Optimizing API Usage](https://docs.sorsa.io/optimizing-api-usage) guide, but here is the summary:

**Use batch endpoints.** `/tweet-info-bulk` (up to 100 tweets/request) and `/info-batch` (up to 100 profiles/request) exist specifically to reduce request counts for bulk lookups.

**Use `/list-tweets` for multi-account monitoring.** Monitoring 50 accounts individually costs 50x more requests than grouping them in an X List and polling once.

**Extract user data from tweet responses.** Every tweet endpoint embeds author profiles. Build your user database from search and timeline results instead of making separate `/info` calls.

**Use `/info` instead of conversion plus lookup.** If you need both the user ID and the full profile, call `/info` once (it accepts usernames, IDs, and links) instead of calling `/username-to-id` and then `/info` separately.

**Choose the right plan for your volume.** Moving from Starter to Pro cuts your cost per request by 59% (\$0.0049 to \$0.00199). Moving from Pro to Enterprise cuts it by another 10%. If you consistently use more than 80% of your plan's quota, upgrading saves money.

> **How does this compare to the official X API?** The official X API uses pay-per-use pricing at \$0.005 per post read, with author profiles billed separately at \$0.010 each, and caps pay-per-use accounts at 2M post reads per month. Reading around 1M posts runs about \$5,000/mo. On Sorsa Pro at \$199/mo, 100,000 requests yield roughly 2M tweets with author profiles included, which works out to about \$0.0001 per tweet versus \$0.005 on the official API. Authentication is also simpler: a single API key header instead of OAuth 2.0. For a full walkthrough, see the [Migration from the official X API](https://docs.sorsa.io/migration-from-official-x-api) guide.

***

## Checking Your Current Usage

Use `GET /key-usage-info` to see your current request consumption and remaining quota:

```text theme={null}
curl "https://api.sorsa.io/v3/key-usage-info" \
  -H "ApiKey: YOUR_API_KEY"
```

```json theme={null}
{
  "key_requests": 100000,
  "remaining_requests": 87340,
  "total_requests": 512680,
  "valid_until": "2026-08-01T00:00:00Z"
}
```

* `key_requests` - total requests allocated for the current billing period (your plan's quota)
* `remaining_requests` - requests still available in the current period
* `total_requests` - cumulative requests used across all billing periods
* `valid_until` - when the current request balance expires

Build this check into your monitoring scripts to alert you before you approach your quota limit. You can also view usage history visually on the [Usage stats](https://api.sorsa.io/overview/usage) dashboard page.

***

## Next Steps

* [Optimizing API Usage](https://docs.sorsa.io/optimizing-api-usage) - detailed patterns for deduplication, batch endpoints, and avoiding redundant calls.
* [Rate Limits](https://docs.sorsa.io/rate-limits) - handling the 20 req/s limit, 429 errors, and backoff strategies.
* [API Reference](https://docs.sorsa.io/api-reference-guide) - full specification for all endpoints.
