
How to Classify Search Intent for Thousands of Keywords in 2026
You have a list of fifteen thousand keywords and you need one intent label on each of them. Doing it by hand is out of the question, and the tools you already pay for are no help, because they hand back blended labels. Ask a popular tool about “smartwatches” and it tags the term informational and commercial at once, which is technically defensible and completely useless when you have to pick a single page to build.
The good news is that intent at scale is a solvable problem, and you do not need a proprietary model to solve it. This piece covers the methods that actually work on a large list, from a spreadsheet first pass to batched language models to embeddings, and the one rule that keeps any of them from falling apart: the results page decides the intent, not the words.
Why the Tools Give You Two Answers
A mixed label is not a bug. A phrase like “smartwatches” genuinely carries more than one intent, because some people typing it want to read about the category and others want to buy one. The tool is reporting that split honestly. The problem is that a split label cannot be acted on. A page is one thing. It is a buying guide or a product listing or an explainer, and you have to commit before you write a word.
So the real task is not “find the intent.” It is “pick the one intent that the page ranking for this term has to serve.” That is a narrower and much more answerable question, and it has a reliable source of truth that most bulk classification skips entirely.
The Results Page Is the Only Real Answer
Before you automate anything, get one idea straight. Intent is whatever the search results are already serving. If the top ten results for a keyword are product pages and shopping listings, the intent is commercial, and no clever guess from the words changes that. If they are all how-to articles, it is informational. Google has already run the experiment for you and published the verdict on page one.
That reframes every method below. A spreadsheet rule, a language model, an embedding, all of them are just ways to approximate the results page cheaply across a list too long to check by hand. The closer a method gets to what the SERP is actually showing, the more accurate it is. The further it drifts into guessing from vocabulary alone, the more it misses. Keep that yardstick in mind and the choice between methods gets a lot clearer. If the underlying idea of reading intent is still fuzzy, our piece on matching keywords to intent covers it before you scale it.
Batch a Language Model With a Strict Schema
The quickest method that gets you close is to feed the list to a language model in batches, with a prompt that leaves it no room to hedge. The quality of the output depends almost entirely on the instructions, not the model. A vague prompt returns the same mixed labels you were trying to escape. A strict one returns clean single labels you can sort on.
Four things belong in that prompt. First, hard definitions of the four intents so the model is not inventing its own. Second, a rule that every keyword gets exactly one label, no blends allowed. Third, a tie-breaker for the genuinely ambiguous ones, and the sensible tie-breaker is to pick the intent furthest down the funnel, since a term that could be either is usually worth more treated as the buyer version. Fourth, a completeness rule: the number of rows out has to match the number of keywords in, or the model will quietly drop the hard ones.
What a good classification prompt contains
- A short, strict definition of each intent, so informational, navigational, commercial, and transactional mean the same thing on every row.
- A single-label rule stated plainly, with an explicit ban on outputs like “informational and commercial.”
- A tie-breaker that resolves ambiguity toward the deeper funnel stage, so “running shoes” lands on commercial rather than informational.
- A completeness contract and a request for the deciding signal in its own column, so you can audit why each call was made.
Ask for the output as a table with the keyword, the single intent, and a two or three word note on what drove the decision. That last column is not decoration. When you spot-check the results later, it tells you whether the model reasoned from a real signal or guessed, and it is the fastest way to catch a batch that went sideways.
The Accuracy Upgrade: Show It the SERP
Classifying from the words alone has a ceiling, and you hit it on the keywords that carry no obvious modifier. Take “plumber new york.” There is no “buy” or “best” in it, so a model working from vocabulary might call it informational. Look at the actual results, though, and it is wall to wall local service pages with phone numbers. The intent is transactional, and only the SERP told you that.
This is the extra mile that separates a decent classifier from an accurate one. For each keyword, fetch the top few results, pull the titles and the type of page each one is, and pass that into the model alongside the keyword. Now it is not guessing from the phrase, it is reading Google's own answer. It costs more, because you are fetching results for every term, so most people reserve it for the ambiguous middle of the list rather than running it on all fifteen thousand.
Same keyword, words versus SERP
The Spreadsheet First Pass
You do not have to start with a model. A large share of any keyword list is unambiguous, and a handful of rules in a spreadsheet will label those rows in seconds and for free. The trick is to treat this as a filter that clears the easy majority, not as the final verdict on the whole list.
| If the phrase contains | Label it |
|---|---|
| buy, price, cheap, coupon, order, deal | Transactional |
| best, top, vs, review, alternative, comparison | Commercial |
| how, what, why, guide, tutorial, examples | Informational |
| a brand name, login, sign in, support, hours | Navigational |
You can push this further by grabbing the top few result titles for each keyword, running the same word rules across those titles, and giving the keyword the majority label, breaking ties toward the deeper funnel stage. That is a poor person's version of reading the SERP, and it is surprisingly good.
Be honest about the ceiling, though. Rules only see the words that are there, so they are blind to implicit intent. “Plumber new york” slips right through, and so does any commercial term dressed up in neutral language. Use the spreadsheet to clear the obvious rows, then send everything it could not label with confidence to a model that can look at the results.
Zero-Shot Embeddings for Real Scale
If you are classifying lists like this regularly and you want consistency the LLM approach cannot promise, embeddings are the sturdier tool. The idea is simple even if the setup is not. You write a clear description of each of the four intents and turn each description into a vector. Then you turn every keyword into a vector the same way and measure which intent description it sits closest to. That nearest description is the label.
The appeal is that it scales to any size, stays consistent from run to run, and does not depend on how a model happened to feel about a batch that day. The cost is that it takes engineering to stand up, and the quality of your intent descriptions matters as much as the code. It is the right call when this is a recurring job, and overkill when you need to label one list once.
Whichever method you choose, hold on to one caution that experienced practitioners repeat: none of this is set and forget. A model or an embedding will get a meaningful slice of the list wrong, sometimes confidently. Automation gets you a strong first draft across thousands of rows in minutes. It does not get you a finished dataset you can trust without ever looking.
How to Force One Label When It Is Truly Split
Some keywords sit on a real fault line, and the SERP itself is mixed, showing a couple of guides next to a couple of product pages. When that happens, you still have to pick one, and there is a simple rule that keeps you consistent: assign the intent that represents the furthest progression toward a purchase that the evidence supports.
The logic is that a term which could be either is almost always more valuable handled as the buyer version, because that is where the money is and because the informational readers will find you anyway through your broader coverage. So transactional beats commercial, commercial beats informational, and you only step back down the ladder when the results page clearly refuses the higher rung. Apply that tie-breaker the same way every time and your labels stay coherent across the whole list instead of drifting with each judgment call.
A Bulk Classification Workflow That Holds Up
Stack the methods instead of picking one and the accuracy and the cost both land in a sensible place.
- Run the spreadsheet rules first to label the obvious majority of the list for free, and flag every row the rules could not settle.
- Send the flagged, ambiguous rows to a language model with a strict single-label prompt, and where accuracy matters most, pass in the top results so it reads the SERP rather than guessing.
- Apply the tie-breaker consistently on anything still split, choosing the deepest funnel stage the results actually support.
- Cross-check commercial calls against the numbers. On the keyword tool, a healthy cost-per-click and advertiser competition confirm buyers are involved, and a near-zero CPC is a quiet vote for informational.
- Spot-check a random sample against the live results page, using the model's stated signal column to find batches that reasoned badly.
- Group the labeled keywords by shared intent in the Keyword Grouping Tool so the classification turns into a page plan instead of a spreadsheet you never open again.
One more source worth mining while you are at it. If you want to hear intent in the searcher's own words rather than infer it from a keyword, the Reddit Topic Hunter surfaces the real questions people ask around a topic, and the way a question is phrased usually gives away whether the person is learning or buying.

Frequently Asked Questions
Why do keyword tools give mixed intent labels?
Because the keyword genuinely has more than one intent. A term like “smartwatches” is used by both readers and buyers, and the tool reports that honestly. The label is accurate but not actionable, which is why you force a single intent based on what the results page actually rewards.
Can I just ask an AI to label all my keywords?
You can, and it will give you a fast, decent first draft. Just do not treat it as finished. A model classifying from the words alone misses implicit intent and gets a real slice of any list wrong. Give it the search results for the ambiguous terms and spot-check a sample before you rely on it.
Is a spreadsheet good enough on its own?
For the obvious portion of a list, yes. Simple word rules label clear transactional, commercial, informational, and navigational terms instantly. They fail on keywords with no modifier, like a local service term, so use the spreadsheet as a first pass and escalate the rest to a method that can read the SERP.
What are embeddings for intent classification?
You turn each intent definition into a vector, turn every keyword into a vector, and label each keyword with whichever intent it sits closest to. It scales to huge lists and stays consistent across runs, but it takes engineering to set up, so it suits a recurring job more than a one-off.
How do I pick one intent when the SERP is mixed?
Choose the intent furthest down the funnel that the results support. Transactional beats commercial, commercial beats informational, and you only drop back when the page clearly refuses the higher stage. Applying that tie-breaker the same way every time keeps the whole list consistent.
Do CPC and competition tell me the intent?
They are strong supporting signals, not the whole answer. Advertisers do not bid high to reach people who are only browsing, so a healthy cost-per-click and competition point to commercial or transactional intent, while a near-zero CPC usually means informational. Use them to confirm the label, not to set it alone.
Classifying intent at scale is not about finding a magic tool, it is about approximating the results page cheaply and forcing a single label you can act on. Clear the obvious rows with rules, hand the ambiguous ones to a model that can read the SERP, resolve ties toward the buyer, and check a sample. Then group the labeled list by intent in the Keyword Grouping Tool so all that classification becomes a plan for what to build.