Google Dorking for Investigators: The Operators That Work and How to Verify the Rest
Google dorking is the use of advanced search operators to pull a narrow slice out of the public index: exposed documents, forgotten subdomains, a name that appears in a file nobody meant to publish. For an investigator it is a targeting technique, not a source of truth. The operator narrows the search. Confirming that each returned item actually satisfies the query is still your job.
Key Takeaways
- Google documents a short operator set for users: exact-match quotes,
site:, the minus exclusion,before:,after:andfiletype:. Everything else in a cheat sheet is undocumented behaviour that can change without notice. - Your dork can lie to you. Undocumented operators like
inurl:andintext:are honored inconsistently, so a result list can contain items that do not satisfy the query you ran. - Verify item by item before a finding enters a report: open the URL, confirm the term is really where the operator claimed, capture the page, log the exact query and timestamp.
- An empty result is not evidence of absence. Google states that a
site:query does not necessarily return every indexed URL. - Collection and use are separate legal questions. Querying a public index is not unauthorized access, but what you do with personal data afterwards is governed by GDPR and the LGPD.
What Is Google Dorking, and Why Do Investigators Use It?
Google dorking, sometimes called Google hacking, is query engineering. Instead of asking Google a question, you describe the shape of the document you want: which host it sits on, which file format it uses, which exact string it contains. The engine then returns a slice of its index rather than a ranked answer. The technique is catalogued publicly in the Google Hacking Database, maintained on Exploit-DB.
Investigators use it for two jobs. The first is targeting: you already know the entity and you want the artefact, a supplier list in a spreadsheet, a PDF that carries an internal email address, a profile page on a forum. The second is exposure testing: you point the same queries at your own client to see what a stranger can reach without logging in anywhere. If you are new to the wider discipline, our primer on what OSINT is and how it works sets the frame, and the OSINT recon workflow shows where dorking sits in a full engagement.
One thing dorking is not: a private data source. Everything a dork returns was already crawled and served publicly. That matters legally, and it also sets the ceiling on what the technique can do for you.
Which Operators Does Google Actually Document?
Fewer than any cheat sheet suggests. Google Search Help documents a compact set for users: quotes for an exact-match phrase, site: to restrict a search to one site or domain, the minus sign to exclude a term, before: and after: for date ranges, and filetype: for a specific format. That is the list you can actually rely on.
Google also gives one syntax rule that quietly ruins more queries than any other mistake: there must be no space between the operator and the term. site:nytimes.com works. site: nytimes.com does not, and it fails silently, returning a normal text search that looks plausible. If a dork suddenly behaves like a plain keyword query, check the whitespace first.
What filetype: can actually reach
The operator can only return formats Google is able to index, and Google publishes that list. It covers .pdf, .ps, .epub, .hwp, the Office family (.xls, .xlsx, .ppt, .pptx, .doc, .docx), OpenDocument formats (.odp, .ods, .odt), .rtf, and flat formats such as .csv, .txt, .xml, .kml, .kmz and .gpx. The full reference sits in Google Search Central.
Read that list as a boundary on your conclusions. A filetype:sql dork that returns nothing tells you very little either way. Plain text extensions fall under the catch-all text entry in that documentation, and the operator also matches the URL extension, so an empty result is not evidence the dumps are not there. For host-level coverage, pair dorks with certificate transparency and DNS work, as covered in our guide to domain intelligence and DNS recon.
Which Operators Quietly Stopped Working?
This is where cheat sheets age badly. Operators outside the documented set are undocumented behaviour, which means Google owes nobody a warning when they change. Some are gone. Some still work most of the time and fail without telling you, which is worse, because a silent partial failure still returns a confident-looking list of results.
| Operator | Status in 2026 | What to do instead |
|---|---|---|
cache: | Retired by Google in 2024. Cached links no longer appear in results. | Use a web archive for history, and capture the live page yourself |
inurl: / allinurl: | Undocumented. Honored inconsistently, especially through APIs | Keep it, but verify the term is in the URL of every item |
intext: / allintext: | Undocumented. Frequently relaxed into an ordinary text match | Prefer quoted exact match, then confirm in the page body |
intitle: / allintitle: | Undocumented, still the most reliable of the group | Check the title tag of each result, not the SERP heading |
link: | No longer returns a backlink list | Use a dedicated backlink or CT-log source |
info: / related: | Undocumented and unreliable for investigative work | Query the host directly with site: |
daterange: | Legacy Julian-date syntax, superseded | Use the documented before: and after: |
+term and ~synonym | Dead. The plus and tilde prefixes do nothing | Quote the term for exact match; write synonyms out |
AROUND(n) | Undocumented proximity operator, works often, guaranteed never | Use it to explore, never to support a claim |
The practical rule we work by: an undocumented operator is a hint to the ranking system, not a filter on the index. You can build a query around it. You cannot build a conclusion on it without checking the results yourself.
How Do You Combine Operators Without Breaking the Query?
Chaining is where dorks fall apart, and the failure is always silent. Google will happily accept a query with six operators and then return results that satisfy three of them. Keep the query as small as the question allows, and build it one operator at a time so you can see the moment the result set stops making sense.
- No space after the colon. The single most common broken dork.
- Quote anything with spaces or punctuation.
"acme holdings ltd"behaves; the same words unquoted do not. - Exclude with the minus sign, tightly.
-site:linkedin.com, never- site:linkedin.com. - Write
ORin capitals. Lowercase "or" is read as a word. - Distrust parentheses. Grouping is undocumented and handled inconsistently. If the answer depends on the grouping, split the dork into two queries and merge the results yourself.
- Stop at two or three operators. Long chains are exactly where relaxation kicks in, and you lose the ability to tell which constraint was dropped.
Investigative Objective to Dork: A Working Table
Cheat sheets list operators. What an investigator needs is the mapping from a question to a query, plus an honest note on what the result can and cannot support. These are the patterns we reach for most, written for a fictional target host.
| Objective | Dork pattern | What to expect |
|---|---|---|
| Public documents on a company host | site:example.com filetype:pdf | Only indexable formats. Anything blocked by robots or noindex never appears |
| Corporate addresses in published files | site:example.com "@example.com" | Mostly role addresses. Confirm each one exists before using it |
| Forgotten subdomains | site:example.com -site:www.example.com | Never exhaustive. Treat certificate transparency as the primary source |
| Spreadsheets holding contact data | site:example.com filetype:xlsx | Often stale. Check the dates inside the file, not the crawl date |
| A person named in third-party filings | "Firstname Lastname" filetype:pdf -site:example.com | Namesakes dominate. You need a second identifier to disambiguate |
| A handle reused across forums | "the_handle" -site:instagram.com | Common handles collide between strangers. Corroborate before linking |
| Adverse mentions of a counterparty | "Vendor Ltd" lawsuit, then "Vendor Ltd" complaint | Separate queries beat one grouped query, because grouping is unreliable |
| Coverage inside a time window | "Vendor Ltd" after:2025-01-01 before:2026-01-01 | Dates reflect Google's estimate of when the document was last updated, which is not the same as publication |
Each row ends at an identifier, and an identifier is the start of the next stage, not the end of the case. An address found this way feeds the workflow in our guide on how to find someone's email address. A handle feeds a cross-platform username search. A counterparty name feeds the structured checks in our fraud investigation toolset.
Why Did Your Dork "Work" and Still Return Noise?
Because search engines optimize for useful answers, not for literal compliance with your syntax. When a strict reading of your query would return little or nothing, the system tends to loosen the constraint and give you something. You get a populated result list, which reads like success, while one or more of your operators were quietly ignored.
We hit this hard in our own product. Our name search runs dork-style queries through a SERP API, and in July we instrumented one query to find out why users saw results that vanished when they clicked through to Google. The same dork, inurl:"akageluv", repeated eight times, returned zero organic results on some calls and six on others. Of the six, only one item actually had that string in its URL. The provider had relaxed the operator and answered with a free-text search.
That was an API layer, and Google's own interface honored the operator on the same query. The lesson generalizes anyway, because the failure mode is identical from the analyst's chair: confident results, an operator that was not applied, no error message. We now discard any item that cannot be shown to satisfy the operators of the dork that produced it.
Three other reasons a "working" dork returns items that do not fit. The page changed after Google crawled it. The term sits in navigation, a comment thread or an ad rather than in the content. Or it appears on a page that links to the result, not on the result itself. All three look identical in a SERP.
inurl:"j.smith" site:example.com
- Items returned by the enginea full first page
- Term actually present in the URLa minority of them
- Host actually matches site:all of them
- Live page still shows the contentfewer still, after click through
- Verdictonly the verified items are reportable
The Verification Protocol Before a Finding Enters a Report
Treat every dork result as a claim made by a third party about a page it does not control. Your job is to test that claim on the page itself. This protocol takes about a minute per item, and it is the difference between a finding and an embarrassment.
Seven steps, per item
- Open the URL directly. Not the snippet, not a preview. The cached copy is no longer an option anyway.
- Test the operator literally. Was the claim
inurl:? Read the address bar.intitle:? Read the title tag in the source, not the visible heading.intext:or a quoted phrase? Search the rendered body. - Confirm the page is live and unchanged. If the snippet and the page disagree, the index is stale and the snippet is not evidence.
- Check the host, not the brand. Look-alike domains satisfy a careless reading of
site:in your head, never in the query. - Capture it. Full-page screenshot with URL and clock visible, the saved HTML or PDF, and a hash of the file.
- Log the query. Exact string, engine, interface, date and time with timezone.
- Classify it. Satisfies the dork, snippet only, stale, or false positive. Only the first class becomes a finding; the rest go to a working annex.
The annex matters more than people expect. Showing what you rejected is what tells a reviewer, or an opposing expert, that the surviving findings were filtered rather than collected.
Why Does an Empty Result Prove Nothing?
Because the index was never a complete inventory. Google Search Central states plainly that a site: query does not necessarily return all the URLs indexed under the given prefix, that results are not always exhaustive, and that without additional search terms the ordering is relatively random. If the vendor says its own operator is not exhaustive, a zero-result screenshot cannot carry a negative claim.
A document can be missing from your results for reasons unrelated to its existence: never crawled, blocked by robots.txt, carrying a noindex tag, deduplicated against a near-identical page, behind a login, in a format Google does not index, or simply not surfaced for your session.
Browser or SERP API: The Reproducibility Problem
A dork is not reproducible by default, and that surprises people who come to OSINT from a database background. Two analysts running the same string at the same minute can get different lists, because the query is evaluated against a personalized, geographically weighted view of an index that changes continuously. Where you run it changes the answer too.
| Dimension | Browser session | SERP API |
|---|---|---|
| Personalization | Session, history and account state affect results | Closer to neutral, but not guaranteed neutral |
| Geography | Inferred from your IP and locale | Set by a country and language parameter you control |
| Operator handling | Undocumented operators applied inconsistently | Same, plus the provider's own relaxation on top |
| Evidence output | Screenshot and saved page | Structured payload you can archive and diff |
| Repeatability | Low. Hard to reconstruct the session later | Higher. Parameters are explicit and loggable |
| Best used for | Confirming and capturing a specific item | Sweeping at volume, then handing items to a human |
Use both, deliberately. Sweep with the API, then confirm and capture in a clean browser session, because that is what produces an exhibit. Whichever you used, name it in the report. "Run through a SERP API with country set to US" is a materially different statement from "run in a signed-out browser in Sao Paulo", and a reviewer will ask which one you mean.
How Do You Record a Dork Finding So It Survives Challenge?
Assume every dork-derived finding will be re-run by someone trying to break it, and that it will not reproduce. That is a property of the index, not a flaw in your work. What protects you is a record complete enough to explain the difference.
Fields to log for every dork
- The query string verbatim, copied, never retyped from memory.
- Engine and interface: which search engine, browser or API, and which provider.
- Date and time with timezone, plus the country and language parameters in force.
- Session state: signed in or out, VPN or direct, which profile.
- Result position of the item and the total returned on that page.
- The artefact: screenshot, saved page, and the hash of each file.
- Verification outcome: which operator you checked by hand, and what you found.
Teams that triage large volumes should template this, because the discipline collapses the moment it depends on memory. Our notes on OSINT triage for law enforcement cover the wider prioritization loop these records feed into.
Where Does the Legal Line Sit?
Most English-language guides answer "is Google dorking illegal" with a paragraph about the Computer Fraud and Abuse Act and stop there. That answers half the question. Querying a public index is not unauthorized access to a system. Under the US CFAA (18 U.S.C. § 1030) liability attaches to accessing a computer without authorization, and in Van Buren v. United States (2021) the Supreme Court narrowed how broadly "exceeds authorized access" can be read.
The line moves when you act on what you found. A dork that surfaces a login panel, an exposed configuration file or a credential dump has told you something exists. Opening it, authenticating to it or downloading it is a different act with a different analysis. Finding is search; entering is access.
The half those guides skip is what happens after collection. If your subject is a person, what you gathered is personal data, and processing it needs its own legal basis regardless of how public the source was. In the EU that means GDPR, usually Article 6(1)(f) legitimate interest, which demands a balancing test you should be able to show. In Brazil it means the LGPD (Law 13.709/2018), which requires a lawful basis and purpose limitation even for publicly accessible data. Our overview of whether OSINT is legal covers both regimes.
Running the Same Pivots Inside espectrosint
Be clear about the division of labour: espectrosint is not a dork console, and you should not expect to paste an arbitrary operator string into it. What it does is take the identifiers a dork surfaces and run the pivot stage for you, cross-referencing 200+ public sources into a single correlated profile with the source recorded on each finding.
- Use a dork to surface the identifier: a name in a filing, an address in a PDF, a handle on a forum, a host in a certificate.
- Run that identifier as a search by name, email, username, phone or domain and let the platform fan it across public sources and breach data.
- Read the correlated profile, the connection graph and the timeline, and pivot on any new identifier without leaving the case.
- Export to PDF, CSV or JSON so the dork record and the correlated profile live in the same case file.
One implementation detail is relevant here, because it came out of the failure described above. Where the name search uses dork-style queries internally, each returned item is checked against the operators of the query that produced it, and anything that fails is dropped before it becomes a card. Same protocol this guide asks you to run by hand, applied in code, for the same reason: a result list is a claim, not a fact.
Turn a dork hit into a documented profile
espectrosint correlates the name, email, username, phone or domain your dork surfaced across 200+ public sources, with source attribution and case-ready export.
Run a search See a live exampleFrequently Asked Questions
What is Google dorking and how does it work?
Google dorking is querying Google with advanced operators so the index returns a narrow slice instead of general results. Operators such as site:, filetype: and quoted exact match tell the engine where to look and what format to return. It surfaces material that is already public and indexed, and it never touches anything private or protected.
Is Google dorking illegal?
Running a query against a public index is not unauthorized access. Under the US Computer Fraud and Abuse Act (18 U.S.C. § 1030) liability attaches to accessing a system without authorization, and Van Buren v. United States (2021) narrowed the reading of exceeding authorized access. What you do next is the real question: logging into an exposed panel is a different act from finding it.
Does the cache: operator still work?
No. Google retired the cache: operator in 2024 and cached links no longer appear in results. For a historical copy, use a web archive, and capture the live page yourself with a visible timestamp. If your workflow treated the Google cache as evidence, replace it with your own capture and a file hash.
Why does the same dork return different results?
Because a Google query is not a database query. Results shift with your session, geography and device, and the index itself changes constantly. Undocumented operators are honored inconsistently, and Google states that a site: query does not necessarily return every indexed URL. Treat a dork result as an observation at a timestamp, not a reproducible fact.
Do Google dorks work on Bing and DuckDuckGo?
Partly. Most engines offer equivalents of site: and filetype:, but the syntax and the handling differ and the result sets rarely match Google. Cross-engine checks are useful precisely because the indexes differ: a document missing from Google may sit in Bing. Verify each item against the rules of the engine you actually used.
Conclusion
Operators are the easy part of Google dorking, and they are the only part most guides cover. Learn the documented set, know that everything beyond it is undocumented behaviour with no guarantee attached, and accept that a populated result list is a claim rather than a finding. The value of the technique for an investigator is not in the cleverness of the query. It is in the discipline applied to what comes back.
So build the habit that survives review: verify each item against the operator that supposedly produced it, capture the page yourself, log the query with its engine and timestamp, and phrase negative results as what the query returned rather than what exists. Then pivot. The tooling that carries an identifier from a dork into a correlated profile is covered in our roundup of the best OSINT tools for investigators, and the stage-by-stage method around it lives in the OSINT recon guide. Before any of it touches an account, read OPSEC for OSINT investigators, and log every query the way digital evidence preservation describes.