Quick answer: A search operator is a special command you add to a search query to narrow what comes back. Type site:example.com pricing and Google only returns pages from example.com that mention pricing. Operators turn a general web search into a scoped query against a specific site, file type, title, or URL pattern, and they work both in the search box and programmatically through a search API.
I use maybe eight operators regularly. This post covers those eight, the recipes I actually reach for, and how to run operator queries in code, because that's where they get genuinely powerful.
The Operators Worth Knowing
Google supports a long tail of operators, many half-broken or deprecated. Here are the ones that reliably work and earn their place:
| Operator | What it does | Example |
|---|---|---|
site: |
Only results from a domain or path | site:docs.python.org asyncio |
"exact phrase" |
Results must contain this exact phrase | "connection reset by peer" |
-term |
Exclude results containing a term | jaguar -car -football |
intitle: |
Term must appear in the page title | intitle:changelog |
inurl: |
Term must appear in the URL | inurl:careers |
filetype: |
Only files of this type | filetype:pdf annual report |
OR |
Match either term (must be uppercase) | pricing OR plans |
* |
Wildcard inside a quoted phrase | "the * of programming" |
Operators combine freely, and combining is where the leverage is. site:example.com intitle:pricing -inurl:blog is a very specific question that would be tedious to answer any other way.
A few honest caveats. Google treats operator-heavy queries as a bot signal, so hammering them manually can trigger CAPTCHAs. site: results are not a complete index of a domain, so don't use the result count as a page inventory. And some old favorites like +term and link: are dead; anything a listicle from 2015 promises should be tested before you rely on it.
Practical Recipes
Operators become useful when you stop thinking of them as syntax and start thinking of them as questions. These are the ones I run most:
Find where a competitor talks about a topic.
site:competitor.com "rate limiting"
Search only documentation, excluding the marketing site.
site:docs.stripe.com webhooks
Find guest post or contributor opportunities.
intitle:"write for us" SaaS
Locate public PDFs and reports on a topic.
filetype:pdf "state of devops" 2026
Check what a site says about you, minus your own domain.
"link.sc" -site:link.sc
Find duplicate or scraped copies of your content.
"a distinctive sentence from your article" -site:yoursite.com
Scope a search to a URL structure, like only job pages or only changelogs:
inurl:changelog "breaking changes" 2026
The pattern in all of these: you're not searching the web, you're querying a slice of it. That mental shift is the whole trick.
Operators for Scoped Research
Where operators really shine is research workflows, whether the researcher is you or an LLM agent.
Say you're evaluating how five competitors handle SSO. The naive approach is searching "competitor SSO" five times and wading through results. The scoped approach is site:competitor.com (SSO OR SAML OR "single sign-on") per competitor, which jumps you straight to their docs and pricing pages.
The same applies to content gap analysis. site:yoursite.com "kubernetes operators" returning nothing while the same query on a competitor returns twelve results is a finding, and it took ten seconds.
For AI agents, operators matter even more. An agent doing research burns tokens and time on irrelevant results; a scoped query returns a smaller, denser result set. If you're building agents that search, I'd argue teaching them site: and exact-phrase quoting is one of the cheapest quality upgrades available. More on that pattern in the best search API for AI agents.
Using Operators Programmatically
Everything above works in a search API. Operators are just part of the query string, so a scoped search through link.sc looks like this:
curl https://api.link.sc/v1/search \
-H "x-api-key: lsc_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"q": "site:news.ycombinator.com \"web scraping\" legal",
"engine": "google"
}'
This matters for two reasons. First, running operator-heavy queries by hand in a browser gets you CAPTCHA-walled fast; Google is suspicious of exactly the kind of queries that are most useful. Going through a search API sidesteps that entirely, which I covered in how to avoid Google blocking automated searches.
Second, code lets you run an operator template across a list. Here's the competitor topic scan as a script:
import requests
API_KEY = "lsc_your_api_key"
competitors = ["competitor-a.com", "competitor-b.com", "competitor-c.com"]
topic = '"single sign-on" OR SAML'
for domain in competitors:
resp = requests.post(
"https://api.link.sc/v1/search",
headers={"x-api-key": API_KEY},
json={"q": f"site:{domain} ({topic})", "engine": "google"},
)
results = resp.json()["serpData"]["results"][:5]
print(f"\n{domain}: {len(results)} pages")
for r in results:
print(f" - {r['title']}: {r['targetUrl']}")
Each result gives you a title, description, and target URL. When you need the actual page text, one follow-up call to the fetch endpoint per URL returns it as markdown:
page = requests.post(
"https://api.link.sc/v1/fetch",
headers={"x-api-key": API_KEY},
json={"url": r["targetUrl"], "format": "markdown"},
).json()["content"]
For an LLM pipeline, that means two API calls get you from "scoped question" to "context ready to reason over."
Operators That Don't Work Anymore
Worth listing so you don't waste time debugging them:
link:for finding backlinks, dead for years+termfor forcing inclusion, retired; use quotes instead~termfor synonyms, retired; Google does this by defaultinfo:andcache:, both removed
If you need backlink data, that requires a dedicated index, not an operator. And related: still technically exists but returns results so thin it's rarely worth typing.
The Takeaway
Search operators are the difference between asking the web a vague question and asking it a precise one. Learn site:, exact quotes, -exclude, intitle:, and filetype:, combine them, and move the queries you repeat into code. The link.sc docs cover the search endpoint if you want to script them, and the free tier is plenty for experimenting.
Want to run scoped, operator-powered searches from code without CAPTCHAs? Sign up for link.sc and get 500 free credits a month.