Twitter advanced search, every operator that works in 2026
The complete Twitter advanced search reference: every operator grouped by the job you need done, from dates and accounts to language, engagement and post type.
Twitter advanced search is the difference between scrolling through a hashtag and actually querying it. Most people never get past typing two words into the box.
That works until the day you need something specific. Every post a competitor published last quarter. Every complaint about your app written in Spanish. The ten posts about your campaign that actually travelled.
For that you need operators. They are short instructions you type next to your words, and they turn the search box into something closer to a query language.
Everything below works in the search bar at x.com and in the official API. If you would rather skip the manual work, we can build the report for you from the same data, gathered within the Twitter compliance rules.
How to search for a word or an exact phrase
Typing words on their own matches them anywhere in the post, in any order. Wrapping them in double quotes matches the phrase exactly as written. OR in capitals widens a search to any of several terms. These three are the base everything else sits on.
A plain keyword is a tokenised match. X splits the post text on punctuation and symbols, then compares your word against those pieces. coca-cola becomes coca and cola, so searching the hyphenated form without quotes will not do what you expect.
battery life "battery life is terrible" refund OR chargeback OR "money back"
Use quotes whenever your term contains punctuation. Use OR when the same idea has several common spellings, which is most of the time.
How to search by hashtag, mention or cashtag
Three symbols cover the entities X recognises inside a post. # matches a hashtag, @ matches a mention of an account, and $ matches a cashtag, which is how tickers are written.
These are exact matches, not tokenised ones. #thanku will not match #thankunext.
#COP30 @nasa $TSLA
The difference between @nasa and from:nasa catches people out constantly. The first finds posts that mention the account. The second finds posts written by it.
How to search tweets from a specific account
from: returns posts written by an account. to: returns replies directed at it. retweets_of: returns reposts of that account. All three take the username without the @, or the numeric user ID.
You can only pass one account per operator, so several accounts means several operators joined with OR.
from:nasa to:nasa retweets_of:nasa from:nasa OR from:esa
There is also list:, which restricts results to posts by members of a given list. It takes the list ID, not its name, and only one list per query.
How to search tweets by date
since: and until: take dates in YYYY-MM-DD format and bound the period. Both still work in the search bar. One detail matters: until: is exclusive, so until:2026-02-01 returns posts up to 31 January, not 1 February.
from:nasa since:2026-01-01 until:2026-07-01
That query returns the first half of 2026, not the first half plus one day. Get this wrong in a monthly report and every month will overlap by a day.
In the official API the period is set with start_time and end_time parameters rather than with operators, which is worth knowing if you are moving a query from the search box into a script.
How to filter by minimum engagement
Three operators set a floor on interactions, so only posts above a threshold come back. In the search bar they are min_likes:, min_reposts: and min_replies:. In API query syntax the equivalents are written the same way min_likes:, min_reposts: and min_replies:.
#COP30 min_reposts:300 #COP30 min_likes:500 #COP30 min_replies:100
This is the fastest way to cut a noisy hashtag down to the posts that actually moved. A conversation with forty thousand posts usually has fewer than two hundred that anyone saw.
Pick the threshold after looking at the conversation, not before. A floor of 300 reposts is nothing in a football match and enormous in a B2B launch.
How to search by language
lang: restricts results to posts X has classified as a given language, using BCP 47 codes. Each post carries one language only, so combining two lang: operators returns nothing. Posts X cannot classify are marked und.
"customer service" lang:es "customer service" lang:pt
Useful when a brand operates across markets and the complaint volume in one language needs separating from the rest.
How to search posts from a place
place: matches posts tagged with a specific location, and place_country: matches an ISO two letter country code. has:geo returns any post carrying location data at all. Multi-word place names go in quotes.
place:"buenos aires" place_country:MX #COP30 has:geo
One limitation to keep in mind: none of these match reposts, because a repost carries the location of the original post rather than its own.
How to filter by type of post
Four operators separate posts by what they are. is:retweet keeps only reposts, is:reply only replies, is:quote only quote posts and is:verified only posts from verified accounts.
#COP30 -is:retweet from:nasa is:reply "climate summit" is:quote #COP30 is:verified
The minus sign negates any operator, which is where these earn their keep. -is:retweet strips the reposts out and leaves the original posts, which is almost always what you want when you are counting how much was actually said.
How to find posts with images, video or links
A family of has: operators filters by what a post contains. has:media covers photos, GIFs and video. has:images and has:video_link narrow that to one kind. has:links finds posts carrying a link, has:hashtags posts carrying at least one hashtag, has:cashtags posts with a ticker, and has:mentions posts naming another account.
#COP30 has:images from:nasa has:video_link "product launch" has:links
Native video only. Clips hosted elsewhere and linked into a post will not match has:video_link, though they will match has:links.
Splitting a conversation this way answers a question most reports skip: whether the posts carrying an image earned a bigger share of the reach than their share of the volume.
How to search by link or domain
url: performs a tokenised match against the URLs in a post, and it checks both the shortened link and the expanded one. So a post linking to a site through a shortener can be found by either form.
url:"nature.com" from:nasa url:"nasa.gov"
Anything with punctuation or a protocol goes in double quotes. This is the operator to reach for when you want to know who shared a specific article, rather than who talked about its subject.
How to follow a specific conversation
Three operators work from a post ID rather than from text. in_reply_to_tweet_id: finds the replies to a given post, retweets_of_tweet_id: finds its reposts and quotes_of_tweet_id: finds the quote posts built on it.
in_reply_to_tweet_id:1539382664746020864 quotes_of_tweet_id:1539382664746020864
Pass the ID of an original post, not of a repost. This is how you measure the aftermath of one specific announcement instead of the whole topic around it.
How to search for emojis
An emoji works like a keyword and is matched against the tokenised text. Emojis with a variant, such as those carrying a skin tone or a variation selector, need double quotes.
(🔥 OR 💀) #COP30 "🗳️" lang:es
Sounds trivial. It is not, when the reaction to a campaign is mostly emoji and barely any words.
How to combine operators into one query
Operators stack. Space between them means AND, OR in capitals means either, brackets group, and a minus sign excludes. A long query is usually easier to read if you build it in parts and test each one before joining them.
(#COP30 OR "climate summit") -is:retweet lang:en min_faves:200 since:2026-06-01
That reads as: posts mentioning either term, excluding reposts, in English, with at least 200 likes, from June onwards.
Two habits save time here. Test the base term first and check the volume is sane. Then add one operator at a time, so when the result set collapses to nothing you know which one did it.
What the search box will not give you
The search box shows you posts. It does not give you totals, ratios, rankings or a file you can hand to someone else. There is no count of how many accounts took part, no reach figure, no way to tell which posts carried the conversation.
That is the point where a query stops being enough and you need the data behind it.
We run the query, return a full report and the dataset behind it, and everything is gathered within the Twitter compliance rules. Tell us what you need to measure and we will tell you what the report would show.