WEIR

How to See Quote Tweets on X in 2026 (App, Web, API)

See quote tweets in the X app or on desktop, find the ones the list hides with one search, and save every quote to a CSV with a short Python script.


Published · Updated · 7 min read

Cover image: Counted vs. listed quotes

To see quote tweets, open the post on X and tap its quotes tab, or search quoted_tweet_id: followed by the post's id.

This works on any public post on X (Twitter), yours or anyone else's. You also get why some quotes never show, and a script that saves them all to a CSV. We run Weir, the API in the script.

Paste this into X's search box, then pick Latest:

quoted_tweet_id:2041557036274475228

That's NASA's "Hello, Moon" post. For any other post, use the digits after /status/ in its link.

  1. Open the postTap or click it so it fills the screen.
  2. Open its quotesQuote posts in the app, View post activity on the web.
  3. Search for the restquoted_tweet_id: plus the digits after /status/.
  4. Export every quotePage through the quotes endpoint into a CSV.

Step 1: See quote tweets in the app or on desktop

Open the post, then its quotes. Where you find them depends on your app version.

  • In the X app, X's Help Center says the post's detail page counts its quote posts. "To view who quote posted you, tap the Quote posts tab."
  • On desktop, roboin.io reported in February 2026 that X's web app dropped its Show quotes button. Click View activity under the post, or View post activity in its ••• menu.
  • From the repost icon, NotPeople's September 2026 guide reaches the quotes through View post engagements.

We couldn't check these screens ourselves, because they need a signed-in account. If yours differ, look for "activity" or "engagements" near the post. You can open the quotes of anyone's public post, not only yours.

Step 2: Search for the quotes the list misses

Search works in the app and on the web. Type quoted_tweet_id: and the post's id into the search box, then pick Latest.

Igor Brigadir's operator reference on GitHub lists two more ways in:

  • The post's link. roboin.io found that searching it can surface quotes the list skips. Drop the ?s= tail first, since leftover tracking codes break the match.
  • quoted_user_id: finds quotes of every post by one account, using its numeric id. Our user ID lookup guide shows how you get it.

We ran the same search through Weir on 22 October 2026, on NASA's "Hello, Moon" post:

9,052quotes X counted on the post
5quotes on our first page
6credits that page cost

Our search operators guide covers the rest.

Why are quote tweets not showing?

X's count is a raw total, but the list holds only the quotes you're allowed to see and X chooses to show.

  • Protected accounts. X's Help Center says protected posts are "only visible to your X followers," and those accounts can still quote you.
  • Blocks. Quotes from accounts you blocked, or that blocked you, stay hidden from you, roboin.io notes.
  • Search filters. X says search "may not show every post," and it drops posts it judges spam or low quality.
  • Deleted posts and suspended accounts. Neither shows in search, Brigadir's reference notes.
  • Your notifications. X's quality filter "filters lower-quality content from your notifications," so you may never hear about some quotes.

We saw the gap ourselves. On 22 October 2026, we walked every quote of two @XDevelopers posts through Weir:

→ get_x_quotes {"id": "2111172163776708859", "limit": 5}
← 1 quote · 2 credits · nextCursor set      (X's count: 2)
→ the same call with that cursor
← 0 quotes · 1 credit · nextCursor null
→ get_x_quotes {"id": "2107952088038998396", "limit": 5}
← 0 quotes · 1 credit · nextCursor null     (X's count: 1)

The first is @XDevelopers' post about a new Chat API guide. Weir's quotes list comes from X's search, the same quoted_tweet_id: query, so it can't see what search hides. We don't know which rule hid these two.

Step 3: Export every quote with the API

To export quotes, you call Weir's GET /v1/x/posts/{id}/quotes. It takes sort, either latest or top, plus limit up to 20 and a cursor for the next page.

Here is one quote from our NASA call, trimmed, from Figma's account:

{
  "id": "2041575254766878901",
  "text": "Good to know https://t.co/2gekT7uUt7",
  "url": "https://x.com/figma/status/2041575254766878901",
  "createdAt": "2026-04-07T17:54:06.000Z",
  "author": { "username": "figma", "followersCount": 578866 },
  "likeCount": 1687,
  "quotedPost": { "id": "2041557036274475228", "quoteCount": 9052 }
}

Every quote carries the original post as quotedPost. Our top sort is X's own ranking, not a likes sort: the fifth quote had more likes than the three before it.

Get a free key, set it as WEIR_API_KEY, and install requests. Then start the script:

import csv, os, re, sys, time, requests

session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['WEIR_API_KEY']}"

This generator walks the pages until the cursor is null:

def quote_pages(post_id, max_pages=50):
    url = f"https://api.weirapp.io/v1/x/posts/{post_id}/quotes"
    params = {"limit": 20}
    for _ in range(max_pages):
        r = session.get(url, params=params, timeout=60)
        if r.status_code == 429:  # too fast: wait, then retry the same page
            time.sleep(int(r.headers.get("Retry-After", "10")))
            continue
        r.raise_for_status()  # 402: out of credits; 404: no such post
        page = r.json()
        yield from page["data"]
        if not page["meta"]["nextCursor"]:
            return  # a null cursor is the end
        params["cursor"] = page["meta"]["nextCursor"]

Then write one row per quote. You can pass a post's link or just its id:

match = re.search(r"status/(\d+)", sys.argv[1])  # a post URL or a bare id
post_id = match.group(1) if match else sys.argv[1]
FIELDS = ["id", "createdAt", "username", "followers", "likeCount", "text", "url"]

with open(f"quotes-{post_id}.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.DictWriter(file, fieldnames=FIELDS, extrasaction="ignore")
    writer.writeheader()
    for quote in quote_pages(post_id):
        author = quote["author"]
        writer.writerow({**quote, "username": author["username"],
                         "followers": author["followersCount"]})

Save the three blocks as quotes.py and run python quotes.py <post link>. We tested it offline on 22 October 2026 against pages shaped like our real responses.

What the loop gets right:

  • A null cursor ends it. The last call often comes back empty, and that one costs 1 credit.
  • A page ceiling. max_pages caps the bill, so lower it while you test.
  • 429 and 402 differ. A 429 clears after Retry-After, but a 402 means you're out of credits.

What does exporting quote tweets cost?

Weir charges you one credit per call, plus one per quote. A full page holds 20 quotes.

Cost of 1,000 quotes, October 2026
X API$5.00
Weir, $5 packabout $0.21
TwitterAPI.io$0.15

TwitterAPI.io beats our smallest pack: its price list shows $0.00015 per quote. Our biggest pack brings the same job to about $0.105.

X's own endpoint is GET /2/tweets/{id}/quote_tweets, at up to 100 posts a page. As of October 2026, X's pricing page lists $0.005 per post read but doesn't name this endpoint, so check what your console charges.

Your free monthly credits on Weir cover about 4,760 quotes. Price your own job with the X API cost calculator.

When not to use Weir

  • A quick look is enough. The Quote posts tab and X's search cost nothing.
  • You need the quotes X hides. Weir reads X's public search, so it misses them too.
  • Price per quote matters most. TwitterAPI.io charges less per quote than our $5 pack.
  • You need a contract with X, or to post. Only X's own API is first-party and can post.

Weir is read-only and isn't licensed by X, so access can change. X's terms may limit what you do with the data, so check what applies to you; this isn't legal advice.

FAQ

How do I see quote tweets on X?

Open the post and tap Quote posts in the app, or click View post activity on the web. If some seem missing, search quoted_tweet_id: with the post's id on the Latest tab. It works for any public post.

Why can't I see all the quote tweets on my post?

X's count includes quotes you can't see. Quotes from protected accounts or from accounts that blocked you stay hidden, and so do posts X filters out. When we walked an @XDevelopers post, we found one of the two quotes X counted.

How do I see who quoted my tweet?

Open your post and tap Quote posts, or search quoted_tweet_id: with its id. Each quote shows the account that made it. For a list you can sort by followers or likes, run the Step 3 script on your post's link.

Can you see quote tweets from private accounts?

Only if you follow the account. X's Help Center says protected posts are visible only to approved followers, and protected accounts can still quote. So a quote can count toward a post's total while staying hidden from you.

Sources

All checked on 22 October 2026: