# X search operators: from, since, until, min_faves

2026-08-09

> twitter.fetcher.sh search passes X operators through. from: and since: are the product, not a slogan about APIs.

- Index: https://fetcher.sh/blog.md
- This page (HTML): https://fetcher.sh/blog/x-search-operators-from-since-until

![A monitor filled with source code in a dark room](https://images.unsplash.com/photo-1461749280684-dccba630e2f6?auto=format&fit=crop&w=1600&q=80)

Photo by Kevin Ku on [Unsplash](https://unsplash.com/?utm_source=fetcher_sh&utm_medium=referral).

X search is a language. `from:`, `to:`, `since:`, `until:`, `min_faves:`, `filter:` — those tokens are how you say “this account, this window, skip replies.” [twitter.fetcher.sh](https://twitter.fetcher.sh) search sends them through to X’s own search.

This is not the consumer search UI, and it is not a second “without official API” essay. That access story is [Twitter/X public data](/blog/twitter-x-public-data-without-developer-platform). Google’s `site:` and `filetype:` are a [different family](/blog/google-search-results-json-site-filetype) on google.fetcher.sh. Do not mix them.

A query is still just `query=`. Put the operators in that string; do not invent extra HTTP parameters for `from` or `since`. If search returns nothing, the operator is usually wrong, not the host.

## Operators the endpoint accepts

The host’s own examples are the right ones: everything from an account (`from:OpenAI`), a date window (`x402 since:2026-01-01 until:2026-02-01`), popular posts only (`ai agents min_faves:500 -filter:replies`). Sort Latest or Top as the endpoint allows.

`curl -H 'Authorization: Bearer bby_live_…' 'https://twitter.fetcher.sh/api/search?query=from:OpenAI%20since:2026-01-01&sort=Latest'`

`-filter:replies` is how you drop replies. Quotes are how you pin a phrase. `from:` is an account, not a free-text author name. Dates on `since:` and `until:` follow X’s own search grammar — if you invent a timestamp format, you get silence.

[Brand monitoring](/blog/brand-mention-monitoring-x-reddit-google-news) and [crypto/policy watch](/blog/crypto-regulation-policy-x-reddit-news) reuse these operators. Learn the language here, then point it at a job.

## Google operators are a different language

`site:` and `filetype:` belong on google.fetcher.sh. `from:` belongs here. Mixing them in one query is how you get empty results and blame the host.

`site:x.com OpenAI` on Google is a SERP about pages. `from:OpenAI` on this host is tweets from an account. Both can be useful. They are not interchangeable. OSINT workflows that need both should issue two GETs, not one confused string.

## A case: a week of one account, no replies

A policy analyst wants everything @OpenAI posted in January, not the quote-tweet pile, sorted latest-first.

The query is `from:OpenAI since:2026-01-01 until:2026-02-01 -filter:replies`. That is one string. They page through results. They do not scrape the profile UI. They do not ask Google `site:x.com` and hope.

They still resolve the handle if they later want a timeline path that wants an id. Search operators do not replace [handle resolution](/blog/resolving-a-social-handle-to-a-stable-id). They replace a week of scrolling.

## A case: “popular only” without a dashboard

A newsroom wants posts about `ai agents` that already moved, not the entire firehose of mentions.

`ai agents min_faves:500 -filter:replies`, sort Top. That is a blunt instrument and it is honest about it. It is not an engagement dashboard. It is a filter. They pair it with a News pass when they need headlines, because faves are not a journal.

If the keyword is also a ticker slang, they quote the phrase and they still skim. Operators reduce the pile. They do not understand your beat for you.

`to:` is useful when the public conversation is happening *at* an account. It is not a DM. Combined with `since:` it is “what did people publicly ask this lab last week.” Combine too many operators and you get silence; add them one at a time. `min_faves:` is a popularity floor, not quality. A ratioed post can still clear 500 faves.

Date windows that span years will feel like a firehose even with `from:`. Page, store ids, stop when you have the story. We do not sell a full historical archive as a dump file.

A policy desk that uses this weekly should keep a small library of query strings, not a blank search box. `from:thelab since:last-monday -filter:replies` is a ritual. `min_faves:` is for “what already moved.” Quoted phrases are for terms of art. If a query returns nothing, remove operators from the right until it returns something, then add back. That is debugging the language, not the host.

Google still does not speak `from:`. Two GETs if you need both worlds.

## Keep Google’s tokens off this host

`site:` and `filetype:` belong on google.fetcher.sh. `from:` belongs here. Docs on [twitter.fetcher.sh](https://twitter.fetcher.sh). Same payment as every other search on the catalog. If a query returns nothing, paste it into X’s own search UI before you file a bug — the language is X’s, passed through. Keep a gist of known-good queries next to the cron. Operators are easier to copy than to reinvent under deadline. `until:` is exclusive in the way X documents it — if a day is missing, check the grammar before you assume the host dropped tweets. Keep Google’s `site:` in the other tab.
