Skip to content

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.
Public data: an API returns it Private: no API returns it Accounts Profiles About this account Followers and following Posts Posts with six counts Timelines Replies, quotes, reposters X Articles Search Posts, back to 2006 Mentions Accounts Groups and live Lists Communities Spaces Trends Checks Follows, reposts, quotes, replies, Community members, shadowbans Someone else's likes Who liked a post Bookmarks Direct messages Protected accounts' posts Deleted posts Who viewed a post Email and phone number Readable only by the account that owns them
Fifteen kinds of public data come back from an API; what X keeps private stays out of every API, the official one included.

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.

DataSorsa API endpointPer requestSorsa API, per 1,000Official X API, per 1,000
ProfilesGET /info-batch (opens in a new tab)100 profilesfrom $0.014$10.00
About this accountGET /about (opens in a new tab)1 accountfrom $1.40no such fields
Followers, followingGET /followers (opens in a new tab), GET /follows (opens in a new tab)200 followersfrom $0.007$10.00
Posts by ID or linkPOST /tweet-info-bulk (opens in a new tab)100 postsfrom $0.014$5.00, plus $10.00 for authors from Nov 22
TimelinesPOST /user-tweets (opens in a new tab)20 postsfrom $0.07$5.00
Replies, quotes, repostersPOST /comments (opens in a new tab), POST /quotes (opens in a new tab), POST /retweeters (opens in a new tab)20from $0.07$5.00 posts, $10.00 accounts
Post searchPOST /search-tweets (opens in a new tab)20 postsfrom $0.07$5.00
MentionsPOST /mentions (opens in a new tab)20 postsfrom $0.07$5.00
Account searchPOST /search-users (opens in a new tab)20 accountsfrom $0.07$10.00
ListsGET /list-tweets (opens in a new tab), GET /list-members (opens in a new tab)20from $0.07$5.00 posts, $10.00 members
CommunitiesPOST /community-tweets (opens in a new tab), POST /community-members (opens in a new tab)20from $0.07$5.00 Communities, then each post or member
SpacesGET /spaces (opens in a new tab)1 Spacefrom $1.40$5.00
TrendsGET /trends (opens in a new tab)1 locationfrom $1.40$10.00
X ArticlesPOST /article (opens in a new tab)1 Articlefrom $1.40$5.00, read as posts
ChecksPOST /check-follow (opens in a new tab) and 5 more1 answerfrom $1.40no 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:

JobData it readsSorsa API endpoints
Brand and keyword monitoringPost search, mentionsPOST /search-tweets, POST /mentions
Audience and influencer researchFollowers, profiles, About dataGET /followers, GET /info-batch, GET /about
Competitor trackingTimelines, replies, quotesPOST /user-tweets, POST /comments, POST /quotes
Datasets for research and AISearch back to 2006, posts by IDPOST /search-tweets, POST /tweet-info-bulk
Giveaways and campaignsChecksPOST /check-follow, POST /check-retweet
Watching many accounts or a marketLists, trendsGET /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:

  1. Get a key. Sign up and copy your API key from the dashboard. The first 100 requests are free.

  2. Ask for a profile. Call GET /info (opens in a new tab) with the key in the ApiKey header and name the account with exactly one of username, user_id or user_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"
    }
    
  3. 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).

Official X API GET /2/tweets/:id Returns by default id text edit_history_tweet_ids Everything else is opt-in tweet.fields for counts and dates expansions=author_id for the author Each author billed $0.010 from Nov 22 Sorsa API POST /tweet-info Returns in one request full_text, created_at, lang Six counts: likes, reposts, replies, quotes, views, bookmarks entities: photos, videos, links user: the author's full profile quoted_status, retweeted_status 22 fields and the author, 1 request
The official X API's default post lookup returns 3 fields; Sorsa API returns the whole post and its author in one request.

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 fieldWhat it holdsOfficial X API v2 field
id, created_at, langThe post's ID as a string, its ISO 8601 date and its language codeid, created_at, lang
full_textThe whole text, long posts includedtext, or note_tweet.text for long posts
likes_count, retweet_count, reply_count, quote_count, bookmark_countEngagement counts at the moment of the requestpublic_metrics.like_count, retweet_count, reply_count, quote_count, bookmark_count
view_countViews, which X calls impressionspublic_metrics.impression_count
conversation_id_strID of the thread's first postconversation_id
is_reply, in_reply_to_tweet_id, in_reply_to_usernameWhether it replies, to which post and to whomreferenced_tweets, in_reply_to_user_id
is_quote_status, quoted_status, retweeted_statusThe quoted post or the original of a repost, in fullreferenced_tweets plus an expansion
entitiesPhotos, videos and links: type, link, previewentities, attachments plus a media expansion
userThe author's full profileauthor_id plus an expansion
is_replies_limited, paid_partnership, made_with_aiReply limits, and X's paid-partnership and made-with-AI labelsreply_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, or note_tweet.text for 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_tweets plus an expansion
  • entities

    What it holds
    Photos, videos and links: type, link, preview
    Official X API v2 field
    entities, attachments plus a media expansion
  • user

    What it holds
    The author's full profile
    Official X API v2 field
    author_id plus 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_count and 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 fieldWhat it holdsOfficial X API v2 field
idThe permanent account ID, as a stringid
username, display_nameThe handle without @, and the display nameusername, name
description, bio_urls, location, created_atBio, the links in it, location as typed, join datedescription, entities, location, created_at
followers_count, followings_count, tweets_count, favourites_count, media_countFollowers, following, posts, posts liked, media postedpublic_metrics counts
verified, protected, possibly_sensitive, can_dmBadge, protected posts, sensitive flag, open to DMsverified, protected, receives_your_dm
pinned_tweet_ids, profile_image_url, profile_background_image_urlPinned posts, avatar and bannerpinned_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_metrics counts
  • 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_count and last_username_change_at: how many times the handle changed, and when it last did;
  • is_blue_verified and premium_start_at: the X Premium checkmark, and since when;
  • source and affiliate_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 the username, 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:

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:

DataWhy no API returns itWhat you can read instead
Who liked a postPrivate since June 2024: only the post's author sees itlikes_count, plus the public replies, quotes and reposters
An account's likesPrivate to that account since June 2024favourites_count, how many posts it liked
BookmarksPrivate to the account that saved thembookmark_count on each post
Direct messagesPrivate between their participantscan_dm, whether the account accepts them
Posts of protected accountsVisible only to approved followersThe profile, with protected: true
Deleted postsGone from X once deletedOnly copies you stored before
Who viewed a post or profileX shows views only as a numberview_count
Past follower lists, follow datesX keeps no public history of who followed whenExport the list on a schedule and compare by id
Email, phone numberNever public on XNothing
  • 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_count on 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.

Data
Amount
$5,000
on the official X API
$5.00 per 1,000 posts; from Nov 22, each post's author adds $0.010
from $14
on Sorsa API
10K requests at 100 posts each, authors included

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.

By the Sorsa API team. We build and run Sorsa API, the read-only Twitter/X API and scraper, in production since 2022 (formerly TweetScout API) with 6B+ requests served. About Sorsa API

What changed
  • Rewritten from scratch: 15 kinds of public data mapped to their endpoints with prices per 1,000 on both APIs, post and profile fields from the live API reference with the official field names, a table of what no API returns, a data map and a cost calculator.
  • First published.