AI SEO In Detail › Module C · Demand and Keyword Research › Episode 23
Keyword Ideas and Related Terms With the DataForSEO API
Episode 23 of AI SEO In Detail, a free course in practical SEO analysis: Keyword Ideas and Related Terms With the DataForSEO API.
Video coming soonThis episode is scripted and in production. The transcript below is the script as written; it may change before the video is published.
Full transcript
967 words · script draft, under review.
Intro
Every keyword analysis starts with a list. And most lists start the same way: someone types a few words into a tool and exports whatever comes out.
That list decides everything that follows. If it's missing a whole group of searches, no amount of clever analysis will find them later. And if it's full of junk and duplicates, you'll pay to analyze noise.
In this episode we build the list properly, with three DataForSEO endpoints that each find keywords in a different way. I'll show what each one is good at, how to choose seeds, how to remove duplicates, and what it costs per row.
Three endpoints, three ways of finding keywords
DataForSEO's Labs has three endpoints for keyword discovery. They sound alike, but they work very differently.
Keyword suggestions finds phrases that contain your seed. Take our fictional coffee equipment shop, with made-up examples. Seed "espresso grinder" gives you "espresso grinder for home", "espresso grinder parts", "espresso grinder under three hundred". It's the long tail of one phrase. Precise, but it never leaves the words you gave it.
Related keywords works from the results page. Google shows related searches at the bottom of a page. This endpoint follows those links, and then the related searches of those, a few levels deep. So it finds other ways people phrase the same need, like "single dose grinder". It's the one that surprises you most.
Keyword ideas works from categories. It looks at which product and service categories your seeds belong to, and returns keywords from the same categories. It takes several seeds at once and goes the widest. It also drifts the furthest from your topic.
My order: suggestions for depth, related for different wordings, and ideas only when I want to find adjacent topics.
Choosing seeds
Seeds decide what you find. Three rules.
Short and central. "Espresso grinder" is a good seed. "Best cheap espresso grinder for beginners" is not, because suggestions can only return phrases that contain all those words.
Cover different needs, not different wordings. One seed per thing the customer wants to do: grind, brew, maintain, buy parts. Wordings are what the related endpoint finds for you.
Use your own data. Your top queries in Search Console are tested seeds. They already bring impressions, so you know real people use those words.
Five to ten good seeds usually beat fifty mediocre ones. And test them before you spend real money. Run one small call per seed with a low limit, read the first rows, and only raise the limit for the seeds that return what you expected.
Cost per row, and how to control it
Now money. Labs endpoints cost about one cent per task plus a small amount per row returned. A thousand rows comes to roughly thirteen cents. Ten thousand rows, a bit over a dollar.
That's cheap. But it's easy to multiply. Ten seeds, three endpoints, deep related searches, several countries, and suddenly you're paying for a hundred thousand rows, most of them duplicates.
So control it in the request. Set a limit on every call. Use filters, for example a minimum word count or excluding phrases that contain words you don't want. And cache every raw response to disk before you parse it, as we set up in episode six. If you need the data again, you read the file instead of paying twice.
One filter I don't use is "volume greater than zero". As we saw in episode nineteen, zero means below the measurement floor, not no demand. Filter on relevance, not on volume.
Dedupe and merge
The three endpoints overlap a lot. So the next step is merging.
Normalize each keyword first: lowercase, trim spaces, collapse double spaces. Then deduplicate on the normalized form. Keep one row per keyword, but record every endpoint and seed that found it. A keyword found by all three endpoints from two different seeds is probably central to your topic. That's useful information. Don't throw it away.
What not to merge: singular and plural. They look like duplicates, but as we saw in episode twenty, they may be different keywords with different volumes. Keep both, and let the validation step decide.
Cleaning out the drift
After the merge, the list still contains drift. Especially from the ideas endpoint, and from deep related searches. A seed about espresso grinders can bring back spice grinders, barista jobs, or a brand you'll never compete with.
I clean it in three passes.
A negative word list. Words that signal a different need: jobs, salary, free download, or a product category you don't cover. Any keyword containing one gets flagged.
A brand list. Competitors' brand names and big retailers. Those searches are navigational, and you won't win them.
And a quick manual scan, sorted by volume. The top few hundred rows are where an off-topic keyword would distort your analysis most, so that's where your eyes are worth it.
Notice I said flagged, not deleted. Keep the rows with a status column. A word that's off-topic today can be a new category next year. And if you delete rows, you'll pay to pull them again.
Volumes: whose number?
Labs returns a search volume for every row. That's useful for a first sort. But remember episode eighteen: one volume source per dataset. If the rest of your analysis uses Google Ads volumes, pull those for the final list, after deduplication, a thousand keywords per task. Pulling them after the merge means you pay for each keyword once.
The output of this episode is a clean master list. One row per keyword, with its sources, its seed, and a volume from one consistent source. That list is the input for everything in the next modules.
Wrap-up
Three endpoints, a handful of good seeds, a limit on every call, and a careful merge. The keyword discovery script is linked in the description. Next episode: grouping those keywords into clusters by how much their search results overlap. See you there.