Skip to content

Keyword Research

Every other part of Kitbase looks backwards: analytics says what happened, site audit says what's broken, backlinks says who links to you. Keyword research answers the question a content team actually starts its week with — what should we write about, and is it worth it?

You type a topic, pick a market, and get back related keywords with their monthly search volume, ranking difficulty, cost-per-click and search intent. The ones worth pursuing get saved to the project, where they sit alongside the rankings and AI citations you already track.

This feature spends credits per use

Unlike the rest of Kitbase, every search here buys data from an external provider — roughly 3–9 credits per search, and about 70 credits to refresh 5,000 saved keywords. The cost of what you're about to do is shown before you run it, cached results are free, and everything is metered against your plan's monthly credits.

Researching a topic

The Research tab opens on a single centred search box. Enter one seed topic — "event lead capture", "crm for nonprofits" — pick the market, and search. Once results arrive the same controls compress into a strip above the table, so the next search is one edit away.

Mode decides where the ideas come from:

ModeWhat it returns
Auto (default)Tries related keywords, then suggestions, then broad ideas, stopping as soon as it finds enough. Costs one to three provider calls.
RelatedKeywords the provider considers semantically adjacent to the seed.
SuggestionsLonger phrases that contain the seed — the long tail.
IdeasThe broadest set: everything topically connected.

Auto is the right default and the reason the price is quoted as a range: a rich seed answers on the first call, a thin one walks all three before giving up.

Result limit (150 / 300 / 500) is a price knob as well as a display one — the provider bills per row returned.

Clickstream volumes is an optional toggle that buys search volumes refined with real clickstream data instead of the standard estimates. It doubles the price of the call, so it's off by default and labelled with what it costs.

Reading the results

ColumnWhat it means
VolumeAverage monthly searches in the selected market.
CPCWhat advertisers pay per click — the clearest signal of commercial value.
CompetitionHow contested the keyword is in paid search, 0–1.
DifficultyHow hard it is to rank organically, 0–100.
IntentInformational, commercial, transactional or navigational.

Competition and difficulty are colour-banded on the same scale — green is winnable, amber and orange are contested, red is not worth starting — so a 500-row table can be scanned for the openings before any number is read. Hovering a banded value names the band. Intent is coloured by category rather than by rank: transactional green, commercial violet, informational blue, with brand-seeking navigational searches left neutral.

A dash means the provider doesn't measure that value for this market — not that the value is zero. That distinction matters in Google-Ads-served countries (see Markets), where difficulty and intent are never available.

Cached answers

Search results are cached for 24 hours and shared across the whole install, because search volume is public data — the same number for every Kitbase customer who asks. When you see a result marked as cached, it cost nothing, and the age of the answer is shown so you know what you're looking at.

Recent searches

A result lives on the page you ran it from — reload, and the table is gone. The Recent searches tab is how you get back to it: a paged table of what this project has already searched for, newest first, with the market, source, how many keywords came back and who ran it.

Each row opens its own page, at its own URL, so a past search can be linked to — and opening one is always free. The keywords a search returned are stored for 30 days and read straight back from Kitbase; nothing is re-run, nothing reaches the provider, and the page cannot spend your credits. That also means anyone with keywords.view can read a search a colleague ran, without needing permission to spend.

A row marked Free to re-run is about the other thing: whether running the search again would cost anything. Fresh results are cached for 24 hours, so a search run this morning re-runs for nothing — including one a colleague paid for — while last week's is bought again at the usual price, which the estimate above the search bar shows before you commit.

Past 30 days the stored answer is deleted. Its page then says so and offers to run the search again, which is the one moment on that screen where credits are in question.

The Research tab is left alone throughout: it keeps showing the search you ran there, across tab switches, until New search clears it.

Running the same search twice does not add a second entry; it moves the existing one to the top and counts the repeat.

Markets

A keyword's volume, CPC and difficulty are facts about a market, not about the phrase — "crm software" is a different business decision in the US than in Germany. Kitbase supports 142 countries, and each project has a default market you set once (Project settings → Keyword market), which every search then inherits unless you override it for that search.

Countries fall into two groups:

  • Full coverage (94 countries) — volume, CPC, competition, difficulty and intent.
  • Volume-only coverage (48 countries) — volume, CPC and competition, but no ranking difficulty and no search intent, because the underlying source doesn't provide them. These are priced per request rather than per row.

Which group a country is in is shown in the market picker, and the mode and clickstream controls are hidden for volume-only markets, where they don't apply.

Only the languages a country is actually served in can be selected. This isn't fussiness: the provider charges for a request with an unsupported language before rejecting it, so the combination is validated before anything is bought.

Saved keywords

Selecting rows and saving them adds them to the project's list. Saving is free — the metrics you're looking at travel with the save, so nothing is re-bought to store them.

The saved list is filterable by search text, include/exclude terms, volume, CPC and difficulty ranges, and tags; sortable by any metric; and exportable. A keyword saved in two markets is two rows, with two sets of metrics, because they're two different opportunities.

Exporting

Export on the results table, the saved list, or a keyword's page-one panel writes what is on screen to a CSV file or an Excel file. Nothing is re-fetched, so an export never costs credits, and it never disagrees with the table it came from. Metrics are written as numbers rather than as formatted text — competition is 46, not 46% — so a spreadsheet can sort and chart them straight away.

Tags

Tags are project-level labels — "pillar", "competitor", "q3" — that you can apply in bulk from the saved list. Deleting a tag that's still on saved keywords is refused rather than silently untagging them; remove it from the keywords first, or delete it once nothing carries it.

Refreshing metrics

Search volumes shift monthly. Refresh metrics re-fetches volume, CPC, difficulty and intent for every saved keyword.

This is the most expensive action in the feature: the list is grouped by market and split into batches of up to 700 keywords, one paid call each, so 5,000 saved keywords is eight calls. The estimate before you start tells you exactly how many.

It runs as a background job rather than blocking on the page, which is what makes it safe: if it's interrupted, it resumes at the batch it reached instead of paying again for the ones that already finished. Progress is shown while it runs.

The keyword panel

Results open with the first keyword selected, and its detail sits in a column beside the table rather than in a window over it — so you can walk the list and watch the panel change instead of opening and closing something 40 times. The selected keyword is part of the URL, which means a link carries the keyword you wanted to talk about, not just the search that found it.

The panel carries only what the row cannot: the metrics stay in the table, where they can be compared against every other keyword.

Its search trend, up to twelve months of monthly volume, draws immediately and costs nothing: the history travelled with the search that listed the row. It answers what an average volume cannot, which is whether demand is seasonal, climbing, or already over.

Page one shows who currently ranks for it in that market, with each result's estimated traffic value and backlink profile — the difference between "this keyword has 2,400 searches" and "this keyword is winnable".

Live results are fetched only when you ask for them — selecting a keyword never buys anything, and neither does hovering one, because each lookup is a paid call. Results are cached for 12 hours across the whole install, and a page one you have already loaded is kept: coming back to that keyword shows it again for nothing, with the age of the answer stated. Keywords whose page one is already in hand carry a small marker in the results table, so you can see what is free before you select it.

Costs and budgets

Every paid call is metered in credits against your organization's monthly allowance — the same pot that covers AI visibility, backlink and site data. The estimate shown before each action includes the credits you have spent this month and your monthly allowance.

When the allowance runs out, new searches are refused with a link to billing, where a credit pack extends it — but cached results keep working, because they cost nothing to serve.

Permissions

PermissionGrants
keywords.viewRead the saved list, tags and cost estimates.
keywords.manageRun searches and SERP lookups, save and tag keywords, refresh metrics.

keywords.manage is a spending permission, not just a writing one — it commits the organization to provider costs. Owners, admins and developers get both; analysts get keywords.view.

Setup

Keyword research needs DataForSEO credentials on the server (DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD) — the same account that powers AI Visibility's Google surfaces and the Backlinks link graph. If you already use either of those, nothing new is required. Without them, the feature reports itself as unavailable rather than failing at search time.

Released under the MIT License.