Local SEO keyword research
Find the local searches already associated with the site and the pages receiving that demand. Start with Search Console data, then add landing-page geography or exact local results only where the added context would change the decision.
Install and run the report
Install the CLI once, then run seo start to connect your site and Google data. After setup you can run this report yourself or ask your agent to run it.
Install the SEO CLI globally.
npm i -g seoRun setup after installation.
seo startFind returned location-specific demand before requesting paid live results.
seo reports run local-search-demand --params '{"site":"sc-domain:example.com","locationTerms":["london","manchester"],"days":90}' --jsonWhat you get from this report
Find local Search Console queries, landing pages and repeated templates. Add measured visitor geography or a few exact local results only when needed.
- Best for
- You want owner-verified evidence for place names, nearby wording, or postal-code searches.
- Needs
- Connected Search Console property
- You get
- Find local Search Console queries, landing pages and repeated templates. Add measured visitor geography or a few exact local results only when needed.
- Use next
- Prioritise keyword opportunities
Every report follows the same rules for missing data and outside estimates.See how report data works.
What you need before you run it
The report uses the information below. Optional sources are only used when you ask for them.
Connected Search Console property
Provides finalized query and landing-page rows for the selected dates, up to one explicit row limit.
Location terms and evidence thresholds
Add the place names and aliases that matter to the site while bounding the minimum impressions and returned opportunities.
Optional exact search market
Adds up to three paid live result snapshots for one canonical location, device, language, and search engine.
Optional Google Analytics property
Adds limited country, region, city, and session context only for exact returned local landing-page paths.
Use a different report for these jobs
These jobs need a different report or a manual review.
You need all Search Console opportunities, including searches without explicit local wording.
Run keyword opportunities first, then use this report to isolate the returned searches whose wording supports local intent.
You need one exact result page for a query you already chose.
Run SERP results directly with the required canonical location and device instead of scanning Search Console demand first.
Use the report with an agent or in code
The command above is enough for most work. These options let an agent, script or application run the same report with explicit input and structured output.
CLI
Use the report catalog when an agent, script or CI job needs predictable JSON instead of the normal terminal output. Check the current input first, then run the report with the validated parameters.
Check the current input before the agent or script runs the report.
seo reports describe local-search-demand --jsonOnce the input is valid, run the report through the report catalog.
seo reports run local-search-demand --params '{"site":"sc-domain:example.com","locationTerms":["london","manchester"],"days":90,"minImpressions":10,"limit":25}' --jsonMCP
An MCP agent follows the same two-step flow. It inspects the current schema, fills the required fields and only then runs the report.
Ask the MCP server for the current report input.
{
"id": "local-search-demand"
}Run the report after the agent has checked and filled the input.
{
"id": "local-search-demand",
"params": {
"site": "sc-domain:example.com",
"locationTerms": [
"london",
"manchester"
],
"days": 90,
"minImpressions": 10,
"limit": 25
}
}TypeScript
Install the package in a Node 22 project when your application needs to run the report directly. The result includes the same evidence, warnings and limits returned through the CLI and MCP server.
Add the SEO package to your project.
npm install seoRun the report from your TypeScript application.
import { executeReport } from 'seo/mcp'
const result = await executeReport(
'local-search-demand',
{
"site": "sc-domain:example.com",
"locationTerms": [
"london",
"manchester"
],
"days": 90,
"minImpressions": 10,
"limit": 25
},
)
console.log(result)What to do next
Start with the returned local queries and their landing pages. Inspect repeated page families before expanding them. Add Analytics geography or exact local results only when that context would change the work, and classify recurring result domains before treating them as comparable businesses.
- 01Inspect the leading query-page pairs and representative pages from repeated templates.
- 02Add the real place names and aliases used in the market when the automatic patterns are too narrow.
- 03Run exact local results for no more than three decision-critical queries when live context is needed.
- 04Classify recurring result domains before treating them as comparable businesses or using them in a competitor plan.
Related reports
Combine Search Console quick wins, second-page queries and striking-distance evidence with optional keyword estimates and programmatic SEO clusters.
Research ways to expand an existing programmatic page system with Search Console, keyword ideas, current results and competitor pages before building more.
Inspect exact organic ranks, domains, URLs, titles, snippets and result features for one keyword, location, language and device-specific search snapshot.
Track exact organic positions for a saved keyword set by location and device. Compare ranking changes with local history, coverage and provider cost.
Sources used by this report
These primary sources define the provider data or search controls used by the result.