Keyword Search Volume
Get search volume, CPC, and competition data for up to 1,000 keywords at once in any location. The most fundamental keyword research endpoint — answers 'how many people search for this?'
When to use this
You want to know how many people are actually searching for something in your area each month. Is "emergency plumber Denver" searched 50 times or 5,000 times? This tells you, so you can focus on keywords that will actually bring in customers.
POST
/v1/keywords/search-volumeCost: 1 credit per 50 keywords ($0.005)
Rate Limit: Varies by plan
Response: ~2-5 seconds
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| keywords | string[] | Yes | Array of keywords (max 1,000) |
| location | string | Yes | City and state (e.g. "Denver, Colorado, United States") |
| language | string | No | Language code. Default: "en" |
Example Request
curl -X POST https://api.localseodata.com/v1/keywords/search-volume \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["plumber near me", "emergency plumber", "pipe repair"],
"location": "Denver, Colorado, United States"
}'Example Response
JSON
{
"status": "success",
"credits_used": 1,
"data": {
"keywords": [
{
"keyword": "plumber near me",
"search_volume": 2400,
"cpc": 45.20,
"competition": 0.87,
"competition_level": "HIGH",
"monthly_searches": [
{ "month": "2026-02", "volume": 2200 },
{ "month": "2026-01", "volume": 2800 },
{ "month": "2025-12", "volume": 2100 }
]
},
{
"keyword": "emergency plumber",
"search_volume": 880,
"cpc": 62.50,
"competition": 0.92,
"competition_level": "HIGH",
"monthly_searches": [
{ "month": "2026-02", "volume": 820 },
{ "month": "2026-01", "volume": 1100 },
{ "month": "2025-12", "volume": 750 }
]
},
{
"keyword": "pipe repair",
"search_volume": 320,
"cpc": 28.40,
"competition": 0.54,
"competition_level": "MEDIUM",
"monthly_searches": [
{ "month": "2026-02", "volume": 300 },
{ "month": "2026-01", "volume": 390 },
{ "month": "2025-12", "volume": 280 }
]
}
],
"location": "Denver, Colorado, United States",
"location_used": "Denver,Colorado,United States",
"volume_scope": "local",
"data_source": "google_ads"
}
}Response Fields
| Field | Type | Description |
|---|---|---|
| keyword | string | The keyword queried |
| search_volume | integer | null | Average monthly search volume for the location; null means the source has no data (not zero searches) |
| cpc | float | null | Average cost-per-click in USD |
| competition | float | null | Competition index (0-1) |
| competition_level | string | HIGH, MEDIUM, or LOW |
| monthly_searches | array | 12-month breakdown of search volume by month |
| location_used | string | Canonical location the volumes are actually scoped to |
| location_alternatives | array | Sibling geo entities in the same state (e.g. "Hamilton Township" alongside "Hamilton") — distinct entities whose volumes can differ 3-5x; re-query with the alternative name for its numbers |
| volume_scope | string | "local" (city/state-level data) or "country" (national numbers — used when no local data exists) |
| data_source | string | "google_ads" (localized) or "labs" (country-level fallback) |
Notes
- Volumes are location-specific — a keyword can have 2,400 searches in Denver but 150,000 nationally. Check volume_scope to confirm the numbers are local.
- When no local data exists the API falls back to country-level numbers and labels them (volume_scope: "country") instead of passing them off as local.
- Send up to 1,000 keywords in a single request for bulk analysis.
- CPC data reflects Google Ads pricing and indicates commercial intent.