How to See Comments and Mentions on X (And Why the Counts Never Add Up)

8 min readSocialAPI Engineering

How to See Comments and Mentions on X (And Why the Counts Never Add Up)

"Comments" is not a thing X has. What people mean by it is replies — and once you go looking for them programmatically, ★you discover that the conversation around a post is split across three separate lists★, only one of which shows up underneath it.

Missing the other two is why most reply analysis is incomplete without anyone noticing.


Three lists, not one

What Where it lives Notifies the author
Replies ★Under the post★ Yes
Quotes ★A separate tab★ Yes
Mentions On the mentioner's own timeline Yes

★A reply is in the thread. A quote is its own post. A mention is a post that names you without replying to you.★

The practical consequence: if you read only the replies, ★you see the part of the conversation that chose to stay inside your thread★ — and commentary about you frequently happens outside it, on purpose.

All three are public and readable — three calls, three shapes.


Reading all three

import requests

BASE = "https://api.socialapi.tech"
KEY  = "your_api_key"
HDRS = {"X-API-Key": KEY}

def conversation(tweet_id):
    """Replies and quotes on a post — the two halves under discussion."""
    out = {}
    for name, path in (("replies", "/v1/tweet/replies"),
                       ("quotes",  "/v1/tweet/quotes")):
        r = requests.get(f"{BASE}{path}",
                         params={"id": tweet_id, "limit": 100},
                         headers=HDRS, timeout=60)
        r.raise_for_status()
        out[name] = r.json()["data"]
    return out

def mentions(username, limit=50):
    """Posts that name this account — including ones that are not replies."""
    r = requests.get(f"{BASE}/v1/user/mentions",
                     params={"username": username, "limit": limit},
                     headers=HDRS, timeout=60)
    r.raise_for_status()
    return r.json()["data"]

c = conversation("1234567890123456789")
print(f"{len(c['replies'])} replies · {len(c['quotes'])} quotes")

★Note that mentions key off the account, not the post.★ A mention is not attached to any particular post of yours — it is someone else writing your handle in their own post, which is why it needs a different lookup entirely.


★Why the reply count never matches★

This is the part that generates support tickets everywhere.

A post shows 500 replies. You fetch replies and get 380. ★Nothing is broken.★

Four reasons the number on the post is not the number you can retrieve:

1. Deleted replies still counted. ★The counter does not always decrement★ when a reply is removed.

2. Replies from suspended or deactivated accounts. They count but no longer resolve.

3. Replies from protected accounts. ★Counted, not publicly readable★ — and correctly so.

4. Nested replies. Replies-to-replies belong to a different conversation node. Whether they are counted depends on where you look.

★Treat the displayed count as an upper bound, not a target.★ Code that retries until the counts match will loop forever — which is the actual failure this causes.

Our replies and quotes calls page cleanly to whatever is publicly retrievable — the gap against the counter is the platform's, not the fetcher's.


Originals versus everything else

A separate problem: an account's timeline mixes original posts, replies, and reposts, and most content analysis wants only the first.

★Filtering locally is the obvious approach and it wastes most of what you fetched★ — on a reply-heavy account, you might discard 80% of every page.

def originals(username, limit=100):
    """Original posts only — no replies, no reposts."""
    r = requests.get(f"{BASE}/v1/user/last_tweets",
                     params={"username": username, "limit": limit,
                             "exclude": "replies,retweets"},
                     headers=HDRS, timeout=60)
    r.raise_for_status()
    return r.json()["data"]

★The filtering runs before your limit is applied★ — ask for 100 and you get 100 originals, not 100 mixed posts filtered down to whatever survives. And you are billed on what comes back, which is the point of the previous paragraph: you never pay to fetch a page and discard most of it.

⚠️ ★The two questions are genuinely different★, and using a mixed timeline for the first one inflates volume and skews every per-post average you compute from it.


Questions people ask

How do I see comments on Twitter? Comments are replies. ★Fetch the replies for that post ID★ — they are public.

How do I see comments on a tweet? Same call. ★Quotes will not be in there★ — they are a separate list.

How do I view comments on Twitter? Open the post, or fetch its replies programmatically. Both show the same thread.

Why can I not see all the comments? Deleted, suspended, and protected repliers still count toward the number shown. ★The count is an upper bound.★

Why does the reply count not match what I fetch? ★Four reasons: deletions, suspensions, protected accounts, and nested replies.★ A mismatch is normal, not a bug.

How do I see who replied to a tweet? The replies list returns full profiles, so you can rank repliers by audience.

What is the difference between a reply and a comment? Nothing — ★"comment" is what people call it, "reply" is what the platform calls it★.

What is the difference between a reply and a quote? ★A reply lives in the thread; a quote is a new post embedding yours.★ The full mechanic.

How do I see quote tweets? A separate call for the quotes list. ★This is the half most authors never check.★

How do I see my mentions? A mentions lookup keyed on the account, not on any single post.

What counts as a mention? ★Any post containing your handle★ — including ones that are not replies to you.

Are mentions the same as replies? No. ★A reply is always a mention; a mention is often not a reply.★

How do I search my mentions? Fetch them and filter locally, or use search syntax with your handle.

Can I see mentions of an account I do not own? ★Yes — mentions are public posts.★ Nothing about them is private.

How do I search for my reply in a long thread? ★Search from:yourhandle plus a distinctive word★ — far faster than scrolling.

How do I see replies to a specific person? Search to:username — that is what a mentions lookup does underneath.

Do replies show in the author's timeline? Yes, in the replies tab — which is why an originals-only view is a different question.

How do I get only original posts? Add exclude=replies,retweets to the timeline call — the filtering runs server-side, before your limit, so no local filtering is needed.

Why does an account's post count seem inflated? Because the timeline mixes originals, replies, and reposts. ★Analysing it as "their content" overstates volume.★

How do I tell a repost from an original? Reposts carry the original author's data. ★Check whether the post references another author★ rather than trusting position.

How do I see retweets of a post? The reposters list returns who relayed it — and quotes are separate again.

Can I see who liked a post? Only partly — ★X restricted like data in 2023 and no API returns it★. Reposts and quotes are the reliable signals.

Is there a comment picker for giveaways? Fetch the replies and select locally. ★The list is public; the picking is ordinary code.★

How many replies can I fetch? Paginated — follow the cursor. ★Do not stop on a short page.★

Can I get replies to replies? They belong to a different conversation node. ★Fetch that reply's own ID★ to go deeper.

Do deleted replies disappear from the thread? Yes, leaving a gap — what deletion removes.

Can I monitor mentions in real time? Poll or stream — how monitoring works.

Why do I get mentions from accounts I do not know? Anyone can name you publicly. ★That is what makes mentions public data.★

Can I see mentions from protected accounts? No — ★their posts are not public, so their mentions are not either★.

Does a mention notify the person? Yes, though notification settings vary. ★The data is public regardless of whether they saw it.★

How do I count total engagement on a post? Replies plus reposts plus quotes plus likes — ★four separate counts, and adding them double-counts nothing★.

Should I analyse replies or quotes for sentiment? ★Quotes tend to carry stronger opinions★, because writing one takes more effort than replying.


The short version

★The conversation about a post is split across three lists — replies, quotes, and mentions — and only replies appear underneath it.★ Reading just those means missing the commentary that deliberately happened elsewhere.

★And the reply count will never match what you retrieve.★ Deleted, suspended, and protected repliers still count toward the displayed number. ★Treat it as an upper bound — code that retries until the numbers agree will loop forever.★

Our API returns replies, quotes, and mentions as three calls, plus an exclude filter that strips replies and reposts server-side for content analysis that should not include participation. Read-only, flat price per call.

What no API returns: likes lists, since X restricted that data in 2023, and anything from protected accounts. ★Those are boundaries, not coverage gaps.★

Related reading: why quotes are a separate list · what the engagement metrics mean · monitoring mentions continuously · what deletion actually removes.