v1Resources/SEO/postAdd tracked keywords to a location
Add tracked keywords to a location
Starts tracking one or more keywords on a location's local-search ranking grid, configuring the grid size and radius the first time the location is set up. Keywords are deduped case-insensitively and capped at 25 per location. Triggers a background ranking scan for each newly added keyword — poll GET /api/v1/seo/keywords afterward to see results land.
post
seo:write/api/v1/seo/keywordsRequest body
locationIdstringrequired
The location to track keywords for.
clientIdstringoptional
The location's client.
keywordsarray of stringrequired
Keywords to start tracking, up to 25 (deduped case-insensitively; the first spelling submitted wins).
gridSizeinteger (3 | 5 | 7)optional
Grid size (3, 5, or 7 points per side). Only applied the first time this location's grid is configured — later calls that omit it, or that target an already-configured location, leave the stored grid size unchanged.
distanceKmnumberoptional
Distance in kilometers between adjacent grid points. Same first-time-only rule as gridSize; defaults to 1.5 km when the location has no grid configured yet.
excludedarray of objectoptional
Grid points to exclude from measurement — e.g. a lake, a rival's territory. Points are still scraped either way; this only controls whether they count toward stats.
rowintegeroptional
Grid row index, 0-indexed.
colintegeroptional
Grid column index, 0-indexed.
Response
dataobjectoptional
keywordsarray of objectoptional
The keywords that were added or reactivated by this call.
idstringoptional
Unique identifier for the tracked keyword.
keywordstringoptional
The keyword text as stored (using the first spelling submitted).
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
422The request is missing a required parameter or is otherwise malformed.
429Too many requests. Retry after the number of seconds in the Retry-After header.
post/api/v1/seo/keywords
Your API key
Request body*
{
"data": {
"keywords": [
{
"id": "cm_kw_abc123",
"keyword": "dentist near me"
}
]
}
}Guides that use this endpoint
- What Is a Local SEO API?A local SEO API measures how a business ranks in local search, with geo-grid rank tracking, profile analytics and AI visibility, not just backlinks.
- How to Add Local Marketing Features to Your SaaSAdd listings management, reviews, Google posts, profile analytics, rank tracking and AI visibility to a SaaS product with the Synup API, tenant by tenant.
- How to Build an AI Agent for Local SEOBuild an AI agent that audits and fixes listings, tracks local rankings, checks AI visibility and drafts review replies with Synup's MCP server or REST tools.
- How to Track Local Rankings with an APITrack local search rankings on a geo grid through an API, add keywords, read the grid and trend, and compare against competitors and citation coverage.
- How to Monitor Local SEO Across Multiple LocationsMonitor local SEO across hundreds of locations through rollup endpoints, with rank and AI visibility per location and the weakest surfaced first.
- Fetch Local Keyword Rankings via APITrack local search rankings on a geo grid with the Synup API, add keywords for a location, and read the rank trend once the background scan lands.