Find Tweets Between Two Users on X: Tested in 2026
One X search finds tweets between two users, with replies both ways, plus the @ and quote searches that catch the rest. Tested on NASA and a game.
Tarun Khatri
Published · Updated · 6 min read
To find tweets between two users on X, search for the replies each account sent the other with from: and to:, joined by OR.
This works for any two public accounts on X (Twitter), on the web or in the app. You get the search, the two searches that catch what it misses, and a real exchange we found between NASA and a video game.
We run Weir, the API in Step 5.
Paste this into X's search box, swap in both usernames, and pick Latest:
(from:NASA to:StarfieldGame) OR (from:StarfieldGame to:NASA)
- Search replies both ways(from:A to:B) OR (from:B to:A)
- Set the datessince: and until:, in UTC
- Add tags and quotes@username and quoted_user_id:
- Read the threadconversation_id: with the thread's first post id
- Script itWeir's query field takes the same string
Step 1: Find tweets between two users with from: and to:
Each half of the search finds one direction.
X's API docs define from: as "Matches Posts from a specific user" and to: as "Matches Posts in reply to a specific user."
from:NASA to:StarfieldGamefinds NASA's replies to the Starfield game account.from:StarfieldGame to:NASAfinds replies going the other way.ORin capitals joins them, and the brackets keep each pair together.
We needed two brand accounts that really talked.
In July 2022, the games site Time Extension reported a NASA exchange with Bethesda's Starfield account over the first James Webb images.
Step 2: Add a date range with since: and until:
Dates turn years of posts into one short stretch. We added July 2022 and ran the search through Weir on 24 October 2026:
(from:NASA to:StarfieldGame) OR (from:StarfieldGame to:NASA) since:2022-07-01 until:2022-08-01
It found NASA's reply, which quotes an Elder Scrolls game back at Starfield. Trimmed:
{
"text": "@StarfieldGame Neither can we! We once heard that \"the skies are marked with numberless sparks, ...",
"url": "https://x.com/NASA/status/1547568214002962434",
"createdAt": "2022-07-14T13:06:29.000Z",
"author": { "id": "11348282", "username": "NASA" },
"conversationId": "1546865270710566918",
"likeCount": 768
}
until: leaves out its own day, and both dates are whole days in UTC. Our search operators guide lists the other filters you can add.
Step 3: Catch mentions and quotes, because a quote isn't a reply
The reply search found only half of the exchange.
Starfield's post on 12 July 2022 quoted NASA's Webb post instead of replying to it, so to:NASA can't match it.
Two clues prove it. NASA's reply carries Starfield's post id as its conversationId, so that post started its own thread. And the Wayback Machine's copy of Starfield's post links to NASA's post as the one it quotes.
So run these too:
| To catch | Search |
|---|---|
| Replies both ways | (from:A to:B) OR (from:B to:A) |
| Tags both ways | (from:A @B) OR (from:B @A) |
| Quotes of B's posts by A | from:A quoted_user_id:B_ID |
| Every reply in one thread | conversation_id:ID |
quoted_user_id: takes an account's numeric id, not its handle. NASA's is 11348282, the author.id in our result, and our user ID lookup guide finds any other.
The @ search matters inside other people's threads. In our mentions test on 22 October 2026, one post tagged @NASA in a reply to someone else, which to:NASA would miss.
Starfield's quote didn't tag @NASA at all. Only the quote search looks for that kind of post.
Step 4: See the conversation between two people with conversation_id:
One reply leads to the rest. X's developer docs say every reply shares "the ID of the original post that started the conversation."
conversation_id:1546865270710566918
That lists every reply under Starfield's post, other people's included. Add from:NASA or from:StarfieldGame to keep one side.
The same operator works on X's own API. X's docs say recent search covers the last 7 days, and full-archive search goes back to March 2006.
Reads cost $0.005 per post as of October 2026. Our Twitter thread API guide walks through that route.
Step 5: Find replies between two accounts by API
Weir's POST /v1/x/search takes the same string in query:
curl --request POST \
--url https://api.weirapp.io/v1/x/search \
--header "Authorization: Bearer $WEIR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"query":"(from:NASA to:StarfieldGame) OR (from:StarfieldGame to:NASA) since:2022-07-01 until:2022-08-01","limit":20}'
Our run, at limit: 1, cost 2 credits: 1 for the call and 1 for the post. Page with meta.nextCursor until it is null.
Weir also has fromUsers and toUsers fields. They work for one direction: {"fromUsers":["NASA"],"toUsers":["StarfieldGame"]} works like from:NASA to:StarfieldGame.
What this search misses
- Protected accounts. X's Help Center says only the owner and approved followers can search protected posts.
- Deleted posts. X removes them from its search results.
- Quotes, unless you add the
quoted_user_id:search. - Tags inside a third account's thread, unless you add the
@search. - Some posts, on purpose. X's Help Center says it "may not show every post in search results."
Use these searches on public accounts such as brands and agencies. Don't use them to follow a private person's conversations.
When not to use Weir
- You check one pair by hand. X's search box is free and takes every search here.
- A protected account is involved. Weir reads public data only.
- You need a contract with X. X's own API reads posts at $0.005 each, as of October 2026.
- Price per post is all that matters. TwitterAPI.io lists $0.15 per 1,000 tweets.
Weir is read-only and isn't licensed by X, so access can change. X's Terms of Service say you "cannot scrape the Services without X's express written permission," so check what applies to you. This isn't legal advice.
FAQ
How do I find tweets between two users?
Search (from:A to:B) OR (from:B to:A) with both usernames, then pick Latest. Add since: and until: for a date range. Then run the @ and quoted_user_id: searches, because tags and quotes don't count as replies.
How do I see a conversation between two people on Twitter?
Find one reply between them, then search conversation_id: with its conversation id. That lists every reply in the thread, from both people and anyone else who joined. Both accounts must be public, or you must be an approved follower.
How do I find replies between two accounts?
Combine from: and to:. from:A to:B lists A's replies to B, and swapping the names lists B's replies to A. Join both with OR to see the whole back and forth in one list.
Why can't I see all the tweets between two users?
One of them may be protected, or a post was deleted. Quotes and tags aren't replies, so they need their own searches. X also says its search may not show every post.
Sources
All checked on 24 October 2026:
- X API search operators: https://docs.x.com/x-api/posts/search/integrate/operators
- X API conversation ID: https://docs.x.com/x-api/fundamentals/conversation-id
- X API search introduction: https://docs.x.com/x-api/posts/search/introduction
- X API pricing: https://docs.x.com/x-api/getting-started/pricing
- X Help Center, protected posts (Wayback, 19 September 2026): https://help.x.com/en/safety-and-security/public-and-protected-posts
- X Help Center, deleting posts (Wayback, 19 September 2026): https://help.x.com/en/using-x/delete-posts
- X Help Center, help with search (Wayback, 10 September 2025): https://help.x.com/en/using-x/x-search-not-working
- X Terms of Service, effective 9 October 2026 (Wayback, 17 October 2026): https://x.com/en/tos
- Time Extension, NASA and Starfield (15 July 2022, Wayback copy): https://www.timeextension.com/news/2022/07/random-nasa-just-quoted-elder-scrolls-to-the-official-starfield-twitter-account
- Wayback capture of Starfield's post, 12 July 2022: https://web.archive.org/web/20220712143412/https://twitter.com/StarfieldGame/status/1546865270710566918
- TwitterAPI.io pricing: https://twitterapi.io/pricing
- Weir searchX reference: https://docs.weirapp.io/reference/x/searchX
- Our search through Weir, 24 October 2026, 2 credits