What data can you get from the Twitter API?
An API can return 15 kinds of public X (Twitter) data, from posts with their view and like counts to profiles, followers, search back to 2006, Lists, Spaces and trends, but no API returns someone else's likes, bookmarks or DMs.
Short answer: The official X API reads most of them after a developer account and OAuth setup, at $5.00 per 1,000 posts and $10.00 per 1,000 profiles or followers. To read all 15 with one key, use Sorsa API, a Twitter (X) API and scraper: 45 endpoints, followers from $0.007 per 1,000, and 100 free requests to start.
- Endpoint
GET /followers- Page size
- 200 followers per page
- Price
- from $0.007 per 1,000
#The 15 kinds of public X data an API returns
Public X data is what X shows to anyone: posts from accounts that aren't protected, profiles, follower lists and the counts beside them. An API returns it as JSON in 15 kinds:
- Profiles: name, bio, location, join date, follower, following and post counts, avatar and verified badge.
- About this account: the country X links to the account, how often and when it changed its username, and its X Premium status.
- Followers and following: the whole list on either side, each account with its profile.
- Posts: text, language, date, six engagement counts (likes, reposts, replies, quotes, views, bookmarks), links, media and the author.
- Timelines: what one account posted, its replies and its reposts.
- Engagement lists: the replies under a post, its quote posts and the accounts that reposted it.
- Post search: any X Advanced Search query with its operators, across the archive back to 2006.
- Mentions: posts that tag an account, filtered by likes, replies, reposts and dates.
- Account search: accounts whose name, handle or bio match a keyword.
- Lists: a List's members, its followers and one feed of its members' posts.
- Communities: a Community's details, members and posts, and a search inside it.
- Spaces: a live audio room's title, state, hosts, speakers, listeners and listener counts.
- Trends: what is trending in a country or a city.
- X Articles: the full text of a long-form post, with its cover image and metrics.
- Checks: yes-or-no answers, such as whether one account follows another or reposted a post.
Private data stays out of that list. Since June 2024 X shows a post's likers only to its author and an account's likes only to that account, and no API returns another person's likes, bookmarks or messages; the full list of what you can't get is further down.
The route to the data differs too. The official X API covers most of the 15 kinds, has no fields for the About data, and bills each item it returns; our X API pricing guide lists every rate.
#Get each kind of data with Sorsa API
To map a project onto X data, use Sorsa API: it returns all 15 kinds through 45 endpoints on one API key, every plan runs at 20 requests per second, and prices start at $0.007 per 1,000 followers and $0.014 per 1,000 tweets. It needs no X developer account, app or OAuth, as our guide to the Twitter API without a developer account explains.
Every request costs the same, so the table shows how many items one request carries and what 1,000 items cost, next to the official X API's pay-per-use price (opens in a new tab) for the same data. All 45 endpoints, with their parameters, are on the Sorsa API endpoints page.
| Data | Sorsa API endpoint | Per request | Sorsa API, per 1,000 | Official X API, per 1,000 |
|---|---|---|---|---|
| Profiles | GET /info-batch (opens in a new tab) | 100 profiles | from $0.014 | $10.00 |
| About this account | GET /about (opens in a new tab) | 1 account | from $1.40 | no such fields |
| Followers, following | GET /followers (opens in a new tab), GET /follows (opens in a new tab) | 200 followers | from $0.007 | $10.00 |
| Posts by ID or link | POST /tweet-info-bulk (opens in a new tab) | 100 posts | from $0.014 | $5.00, plus $10.00 for authors from Nov 22 |
| Timelines | POST /user-tweets (opens in a new tab) | 20 posts | from $0.07 | $5.00 |
| Replies, quotes, reposters | POST /comments (opens in a new tab), POST /quotes (opens in a new tab), POST /retweeters (opens in a new tab) | 20 | from $0.07 | $5.00 posts, $10.00 accounts |
| Post search | POST /search-tweets (opens in a new tab) | 20 posts | from $0.07 | $5.00 |
| Mentions | POST /mentions (opens in a new tab) | 20 posts | from $0.07 | $5.00 |
| Account search | POST /search-users (opens in a new tab) | 20 accounts | from $0.07 | $10.00 |
| Lists | GET /list-tweets (opens in a new tab), GET /list-members (opens in a new tab) | 20 | from $0.07 | $5.00 posts, $10.00 members |
| Communities | POST /community-tweets (opens in a new tab), POST /community-members (opens in a new tab) | 20 | from $0.07 | $5.00 Communities, then each post or member |
| Spaces | GET /spaces (opens in a new tab) | 1 Space | from $1.40 | $5.00 |
| Trends | GET /trends (opens in a new tab) | 1 location | from $1.40 | $10.00 |
| X Articles | POST /article (opens in a new tab) | 1 Article | from $1.40 | $5.00, read as posts |
| Checks | POST /check-follow (opens in a new tab) and 5 more | 1 answer | from $1.40 | no single call: lists at $10.00 |
Profiles
- Sorsa API endpoint
GET /info-batch(opens in a new tab)- Per request
- 100 profiles
- Sorsa API, per 1,000
- from $0.014
- Official X API, per 1,000
- $10.00
About this account
- Sorsa API endpoint
GET /about(opens in a new tab)- Per request
- 1 account
- Sorsa API, per 1,000
- from $1.40
- Official X API, per 1,000
- no such fields
Followers, following
- Sorsa API endpoint
GET /followers(opens in a new tab),GET /follows(opens in a new tab)- Per request
- 200 followers
- Sorsa API, per 1,000
- from $0.007
- Official X API, per 1,000
- $10.00
Posts by ID or link
- Sorsa API endpoint
POST /tweet-info-bulk(opens in a new tab)- Per request
- 100 posts
- Sorsa API, per 1,000
- from $0.014
- Official X API, per 1,000
- $5.00, plus $10.00 for authors from Nov 22
Timelines
- Sorsa API endpoint
POST /user-tweets(opens in a new tab)- Per request
- 20 posts
- Sorsa API, per 1,000
- from $0.07
- Official X API, per 1,000
- $5.00
Replies, quotes, reposters
- Sorsa API endpoint
POST /comments(opens in a new tab),POST /quotes(opens in a new tab),POST /retweeters(opens in a new tab)- Per request
- 20
- Sorsa API, per 1,000
- from $0.07
- Official X API, per 1,000
- $5.00 posts, $10.00 accounts
Post search
- Sorsa API endpoint
POST /search-tweets(opens in a new tab)- Per request
- 20 posts
- Sorsa API, per 1,000
- from $0.07
- Official X API, per 1,000
- $5.00
Mentions
- Sorsa API endpoint
POST /mentions(opens in a new tab)- Per request
- 20 posts
- Sorsa API, per 1,000
- from $0.07
- Official X API, per 1,000
- $5.00
Account search
- Sorsa API endpoint
POST /search-users(opens in a new tab)- Per request
- 20 accounts
- Sorsa API, per 1,000
- from $0.07
- Official X API, per 1,000
- $10.00
Lists
- Sorsa API endpoint
GET /list-tweets(opens in a new tab),GET /list-members(opens in a new tab)- Per request
- 20
- Sorsa API, per 1,000
- from $0.07
- Official X API, per 1,000
- $5.00 posts, $10.00 members
Communities
- Sorsa API endpoint
POST /community-tweets(opens in a new tab),POST /community-members(opens in a new tab)- Per request
- 20
- Sorsa API, per 1,000
- from $0.07
- Official X API, per 1,000
- $5.00 Communities, then each post or member
Spaces
- Sorsa API endpoint
GET /spaces(opens in a new tab)- Per request
- 1 Space
- Sorsa API, per 1,000
- from $1.40
- Official X API, per 1,000
- $5.00
Trends
- Sorsa API endpoint
GET /trends(opens in a new tab)- Per request
- 1 location
- Sorsa API, per 1,000
- from $1.40
- Official X API, per 1,000
- $10.00
X Articles
- Sorsa API endpoint
POST /article(opens in a new tab)- Per request
- 1 Article
- Sorsa API, per 1,000
- from $1.40
- Official X API, per 1,000
- $5.00, read as posts
Checks
- Sorsa API endpoint
POST /check-follow(opens in a new tab) and 5 more- Per request
- 1 answer
- Sorsa API, per 1,000
- from $1.40
- Official X API, per 1,000
- no single call: lists at $10.00
Which data each job needs
Most projects read two or three of the 15 kinds, and each job maps to a short set of endpoints:
| Job | Data it reads | Sorsa API endpoints |
|---|---|---|
| Brand and keyword monitoring | Post search, mentions | POST /search-tweets, POST /mentions |
| Audience and influencer research | Followers, profiles, About data | GET /followers, GET /info-batch, GET /about |
| Competitor tracking | Timelines, replies, quotes | POST /user-tweets, POST /comments, POST /quotes |
| Datasets for research and AI | Search back to 2006, posts by ID | POST /search-tweets, POST /tweet-info-bulk |
| Giveaways and campaigns | Checks | POST /check-follow, POST /check-retweet |
| Watching many accounts or a market | Lists, trends | GET /list-tweets, GET /trends |
Brand and keyword monitoring
- Data it reads
- Post search, mentions
- Sorsa API endpoints
POST /search-tweets,POST /mentions
Audience and influencer research
- Data it reads
- Followers, profiles, About data
- Sorsa API endpoints
GET /followers,GET /info-batch,GET /about
Competitor tracking
- Data it reads
- Timelines, replies, quotes
- Sorsa API endpoints
POST /user-tweets,POST /comments,POST /quotes
Datasets for research and AI
- Data it reads
- Search back to 2006, posts by ID
- Sorsa API endpoints
POST /search-tweets,POST /tweet-info-bulk
Giveaways and campaigns
- Data it reads
- Checks
- Sorsa API endpoints
POST /check-follow,POST /check-retweet
Watching many accounts or a market
- Data it reads
- Lists, trends
- Sorsa API endpoints
GET /list-tweets,GET /trends
Your first request
Three steps take you from no account to your first profile:
-
Get a key. Sign up and copy your API key from the dashboard. The first 100 requests are free.
-
Ask for a profile. Call
GET /info(opens in a new tab) with the key in theApiKeyheader and name the account with exactly one ofusername,user_idoruser_link.Terminal curl -G "https://api.sorsa.io/v3/info" \ -H "ApiKey: YOUR_API_KEY" \ --data-urlencode "username=orbit_data_studio"Response200 OK { "id": "1593004418823766016", "username": "orbit_data_studio", "display_name": "Orbit Data Studio", "description": "Charts and notes on public conversation.", "location": "Lisbon", "created_at": "2022-11-16T09:41:12Z", "followers_count": 18420, "followings_count": 312, "tweets_count": 4127, "favourites_count": 9230, "media_count": 688, "verified": false, "protected": false, "can_dm": true, "possibly_sensitive": false, "bio_urls": ["https://orbit-data.example"], "pinned_tweet_ids": ["1981442093318201344"], "profile_image_url": "https://pbs.twimg.com/profile_images/orbit.jpg" } -
Follow the cursor on lists. Endpoints that return lists add
next_cursor; send it back with the next request until it comes back empty. A 401 means a wrong key, a 403 a missing key or no requests left, and a 429 more than 20 requests in one second.
#What a post contains: 22 fields and its author
A post from Sorsa API carries 22 fields, and the author's full profile sits inside it: POST /tweet-info (opens in a new tab) returns one post by link or ID, and POST /tweet-info-bulk returns up to 100 in one request. Replies, quotes and reposts bring the original post along, with its author too.
The official X API starts smaller. Its post lookup returns three fields by default, id, text and edit_history_tweet_ids, as its fields guide (opens in a new tab) says; the rest takes tweet.fields, and the author takes an expansion that X bills as a $0.010 user read from November 22, 2026, according to X's notice (opens in a new tab).
Here is every field, with the name the official X API v2 uses for the same thing, so code written against either one maps across:
| Sorsa API field | What it holds | Official X API v2 field |
|---|---|---|
id, created_at, lang | The post's ID as a string, its ISO 8601 date and its language code | id, created_at, lang |
full_text | The whole text, long posts included | text, or note_tweet.text for long posts |
likes_count, retweet_count, reply_count, quote_count, bookmark_count | Engagement counts at the moment of the request | public_metrics.like_count, retweet_count, reply_count, quote_count, bookmark_count |
view_count | Views, which X calls impressions | public_metrics.impression_count |
conversation_id_str | ID of the thread's first post | conversation_id |
is_reply, in_reply_to_tweet_id, in_reply_to_username | Whether it replies, to which post and to whom | referenced_tweets, in_reply_to_user_id |
is_quote_status, quoted_status, retweeted_status | The quoted post or the original of a repost, in full | referenced_tweets plus an expansion |
entities | Photos, videos and links: type, link, preview | entities, attachments plus a media expansion |
user | The author's full profile | author_id plus an expansion |
is_replies_limited, paid_partnership, made_with_ai | Reply limits, and X's paid-partnership and made-with-AI labels | reply_settings, paid_partnership |
id,created_at,lang- What it holds
- The post's ID as a string, its ISO 8601 date and its language code
- Official X API v2 field
id,created_at,lang
full_text- What it holds
- The whole text, long posts included
- Official X API v2 field
text, ornote_tweet.textfor long posts
likes_count,retweet_count,reply_count,quote_count,bookmark_count- What it holds
- Engagement counts at the moment of the request
- Official X API v2 field
public_metrics.like_count,retweet_count,reply_count,quote_count,bookmark_count
view_count- What it holds
- Views, which X calls impressions
- Official X API v2 field
public_metrics.impression_count
conversation_id_str- What it holds
- ID of the thread's first post
- Official X API v2 field
conversation_id
is_reply,in_reply_to_tweet_id,in_reply_to_username- What it holds
- Whether it replies, to which post and to whom
- Official X API v2 field
referenced_tweets,in_reply_to_user_id
is_quote_status,quoted_status,retweeted_status- What it holds
- The quoted post or the original of a repost, in full
- Official X API v2 field
referenced_tweetsplus an expansion
entities- What it holds
- Photos, videos and links: type, link, preview
- Official X API v2 field
entities,attachmentsplus a media expansion
user- What it holds
- The author's full profile
- Official X API v2 field
author_idplus an expansion
is_replies_limited,paid_partnership,made_with_ai- What it holds
- Reply limits, and X's paid-partnership and made-with-AI labels
- Official X API v2 field
reply_settings,paid_partnership
To read 100 posts at once, send their IDs or links to the batch endpoint:
import requests
URL = "https://api.sorsa.io/v3/tweet-info-bulk"
HEADERS = {"ApiKey": "YOUR_API_KEY"}
ids = ["1985274530112847105", "1985190021774452736"] # up to 100
r = requests.post(URL, headers=HEADERS, json={"tweet_links": ids})
r.raise_for_status()
for t in r.json()["tweets"]:
print(t["id"], t["view_count"], t["likes_count"], t["user"]["username"])
Good to know
Every count is a snapshot.
likes_count,view_countand the rest are the values at the moment of your request and keep growing after it, so store the time of each read before you compare one post with another.
#What a profile contains, and the About data
A profile from Sorsa API has 19 fields, from GET /info for one account or GET /info-batch for up to 100. GET /about adds 7 more that X shows only on an account's "About this account" page.
| Sorsa API field | What it holds | Official X API v2 field |
|---|---|---|
id | The permanent account ID, as a string | id |
username, display_name | The handle without @, and the display name | username, name |
description, bio_urls, location, created_at | Bio, the links in it, location as typed, join date | description, entities, location, created_at |
followers_count, followings_count, tweets_count, favourites_count, media_count | Followers, following, posts, posts liked, media posted | public_metrics counts |
verified, protected, possibly_sensitive, can_dm | Badge, protected posts, sensitive flag, open to DMs | verified, protected, receives_your_dm |
pinned_tweet_ids, profile_image_url, profile_background_image_url | Pinned posts, avatar and banner | pinned_tweet_id, profile_image_url, profile_banner_url |
id- What it holds
- The permanent account ID, as a string
- Official X API v2 field
id
username,display_name- What it holds
- The handle without @, and the display name
- Official X API v2 field
username,name
description,bio_urls,location,created_at- What it holds
- Bio, the links in it, location as typed, join date
- Official X API v2 field
description,entities,location,created_at
followers_count,followings_count,tweets_count,favourites_count,media_count- What it holds
- Followers, following, posts, posts liked, media posted
- Official X API v2 field
public_metricscounts
verified,protected,possibly_sensitive,can_dm- What it holds
- Badge, protected posts, sensitive flag, open to DMs
- Official X API v2 field
verified,protected,receives_your_dm
pinned_tweet_ids,profile_image_url,profile_background_image_url- What it holds
- Pinned posts, avatar and banner
- Official X API v2 field
pinned_tweet_id,profile_image_url,profile_banner_url
The About data has no counterpart in the official X API: its data dictionary (opens in a new tab) lists no country or username history for a user. GET /about returns:
country: the country X associates with the account;username_change_countandlast_username_change_at: how many times the handle changed, and when it last did;is_blue_verifiedandpremium_start_at: the X Premium checkmark, and since when;sourceandaffiliate_username: the account's source as X shows it, and the account behind its affiliation badge.
For one account, the free Twitter Account Location Finder shows the same country in the browser.
Good to know
Keep IDs as strings. Post and account IDs are 64-bit numbers that JavaScript rounds when it parses them as numbers. Store the account
id, not theusername, which the owner can change at any time.
#Followers, engagement lists and yes-or-no checks
Account lists come in pages of full profiles. GET /followers, GET /follows and GET /verified-followers (opens in a new tab) return up to 200 per request, so 1M followers take 5K requests, from $7; the guide to export Twitter followers has the cursor loop and the CSV.
Around a single post, three endpoints return its public engagement, 20 items a page:
POST /comments: the replies under it, sorted by relevance, recency or likes;POST /quotes: the posts that quote it, each with its author;POST /retweeters: the accounts that reposted it, newest first, as full profiles.
An account's own output comes from POST /user-tweets, with type set to posts, replies or retweets. It pages back through the whole timeline, past the newest 3,200 posts where the official X API's timeline endpoint stops; the guide to download all tweets from a user turns it into a file.
Checks answer one question per request, from $0.0014 each:
POST /check-follow: does one account follow another;POST /check-retweet(opens in a new tab): did an account repost a post, scanning 100 reposts per request;POST /check-quoted(opens in a new tab):quoted,retweetornot_found;GET /check-comment(opens in a new tab): did an account reply, and the reply itself;POST /check-community-member(opens in a new tab): is an account in a Community;GET /check-shadowban(opens in a new tab): search ban and search suggestion ban,clean,bannedorunknown, cached for an hour.
The Twitter verification API guide runs them for a giveaway or a campaign.
#Search, Lists, Communities, Spaces, trends and Articles
POST /search-tweets takes any X Advanced Search query, with from:, to:, since:, until:, exact phrases and hashtags, sorted by popular or latest, across the archive back to 2006. The guide to historical Twitter data covers pulls by date range.
POST /mentions finds posts that tag an account and adds filters: min_likes, min_replies, min_retweets, and since_date and until_date in YYYY-MM-DD. POST /search-users finds accounts by a word in their name, handle or bio.
A List watches many accounts at once: one GET /list-tweets request returns the newest posts of all its members, and a List holds up to 5,000 accounts. GET /list-members and GET /list-followers (opens in a new tab) return its accounts as profiles.
Communities have five endpoints: POST /community-info (opens in a new tab) (name, description, member count, banner, creator and creation time as a Unix timestamp), POST /community-members, POST /community-tweets and POST /community-search-tweets (opens in a new tab) (popular or latest), and POST /search-communities (opens in a new tab), up to 10 per request.
GET /spaces takes a Space ID or link and returns its title, state, scheduled start and creator, the participants split into admins, speakers and listeners, its settings such as replay and clipping, and its stats: live listeners, participants and replay views. Its times come as Unix numbers, while the rest of the API uses ISO 8601 dates.
GET /trends takes a WOEID, the Where On Earth ID of a country or a city, and returns each trend's name, search query and link. POST /article returns an X Article: full text, preview, cover image, publication date, its counts with views in views_count, and the author's profile.
#What no Twitter API returns
No API returns data that X keeps private, and the official X API is no exception. On June 11, 2024, X announced (opens in a new tab) that its likes endpoints return likes and likers only for the authenticated account's own posts, and an empty result for every other post.
Each row below has a public signal you can read instead:
| Data | Why no API returns it | What you can read instead |
|---|---|---|
| Who liked a post | Private since June 2024: only the post's author sees it | likes_count, plus the public replies, quotes and reposters |
| An account's likes | Private to that account since June 2024 | favourites_count, how many posts it liked |
| Bookmarks | Private to the account that saved them | bookmark_count on each post |
| Direct messages | Private between their participants | can_dm, whether the account accepts them |
| Posts of protected accounts | Visible only to approved followers | The profile, with protected: true |
| Deleted posts | Gone from X once deleted | Only copies you stored before |
| Who viewed a post or profile | X shows views only as a number | view_count |
| Past follower lists, follow dates | X keeps no public history of who followed when | Export the list on a schedule and compare by id |
| Email, phone number | Never public on X | Nothing |
Who liked a post
- Why no API returns it
- Private since June 2024: only the post's author sees it
- What you can read instead
likes_count, plus the public replies, quotes and reposters
An account's likes
- Why no API returns it
- Private to that account since June 2024
- What you can read instead
favourites_count, how many posts it liked
Bookmarks
- Why no API returns it
- Private to the account that saved them
- What you can read instead
bookmark_counton each post
Direct messages
- Why no API returns it
- Private between their participants
- What you can read instead
can_dm, whether the account accepts them
Posts of protected accounts
- Why no API returns it
- Visible only to approved followers
- What you can read instead
- The profile, with
protected: true
Deleted posts
- Why no API returns it
- Gone from X once deleted
- What you can read instead
- Only copies you stored before
Who viewed a post or profile
- Why no API returns it
- X shows views only as a number
- What you can read instead
view_count
Past follower lists, follow dates
- Why no API returns it
- X keeps no public history of who followed when
- What you can read instead
- Export the list on a schedule and compare by
id
Email, phone number
- Why no API returns it
- Never public on X
- What you can read instead
- Nothing
Even the official X API reads likes, bookmarks and messages only for the account that authorized the app through OAuth, and never anyone else's.
What Sorsa API leaves out by design
Sorsa API reads and never writes: no posting, liking, following or DMs. It never asks for your X login, so your account carries no risk; to post as well, pair it with the official X API. It works on request, with no stream or webhook: new posts arrive by polling POST /search-tweets or GET /list-tweets, at 20 requests per second on every plan.
#What each kind of data costs per 1,000
Sorsa API bills one request whatever it returns, so the price per 1,000 falls as pages grow: from $0.007 per 1,000 followers (200 a page), $0.014 per 1,000 posts or profiles looked up by ID (100 a request) and $0.07 per 1,000 search results (about 20 a page). The official X API bills every item: $5.00 per 1,000 posts and $10.00 per 1,000 profiles or followers, and from November 22 each post's author adds $0.010.
Your 100 free requests cover the first 10K posts, with no card.
Grey is the official X API at its rates on docs.x.com today; blue is Sorsa API at its lowest per-request rate.
Failed requests are never charged, and the official X API stops at 3M post reads a month, past which X sells only Enterprise contracts. The 100 free requests every new account gets cover up to 10K tweets or 20K followers.
#Read all 15 kinds with one key
An API returns 15 kinds of public X data and none of the private ones. To read them, use Sorsa API: one key, 45 endpoints, tweets from $0.014 per 1,000 and followers from $0.007, and 100 free requests to start, with no card.
#FAQ
How far back does Twitter data go through an API?
Public posts go back to Twitter's first days in March 2006. Sorsa API's POST /search-tweets reaches that whole archive with X's search operators, so since: and until: pull any window, from $0.07 per 1,000 results. An account's own timeline pages back through POST /user-tweets, past the newest 3,200 posts.
Can a Twitter API show who liked a tweet?
Not for other people's posts. Since June 2024 X keeps likes private, and the official X API returns a post's likers only to the account that wrote it; for any other post it returns an empty list. Every API still returns the like count, and Sorsa API also returns the public lists around a post: its replies, its quote posts and the accounts that reposted it.
What are the different types of Twitter API endpoints?
Read endpoints fall into eight groups on Sorsa API: users (profiles, followers, About data), posts (lookups, timelines, replies, quotes, reposters, Articles, trends), search (posts, mentions, accounts, Spaces), checks, Communities, Lists, utilities that convert handles, IDs and links, and Sorsa Score for crypto accounts. That makes 45 endpoints; the official X API adds write endpoints for posting and DMs.
Can you get Twitter data for free?
Yes, to start. The official X API has no free tier for reading: every read draws on credits you buy first, $5.00 per 1,000 posts. Sorsa API gives every new account 100 free requests with no card, and they never expire: up to 10K tweets looked up by ID or 20K followers. Our answer to is the Twitter API free covers every free route.
Which Twitter API should I use to get public X data?
Use Sorsa API to read public X data: it returns all 15 kinds through one key, with no developer account or OAuth, at 20 requests per second on every plan. Tweets cost from $0.014 per 1,000 and followers from $0.007, against $5.00 and $10.00 on the official X API; search reaches back to 2006, and it never asks for your X login.
#How we checked
We took every endpoint, field and page size on this page from the live Sorsa API reference (45 operations) and our endpoint catalog on November 2, 2026. The same day we read the official X API's prices, default fields and data dictionary on docs.x.com, and X's announcements on private likes (June 11, 2024) and on billing for expansions (October 23, 2026). The requests and responses are written from the reference with fictional accounts; we made no live calls for this page.