LSD

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-volume
Cost: 1 credit per 50 keywords ($0.005)
Rate Limit: Varies by plan
Response: ~2-5 seconds

Parameters

ParameterTypeRequiredDescription
keywordsstring[]YesArray of keywords (max 1,000)
locationstringYesCity and state (e.g. "Denver, Colorado, United States")
languagestringNoLanguage 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

FieldTypeDescription
keywordstringThe keyword queried
search_volumeinteger | nullAverage monthly search volume for the location; null means the source has no data (not zero searches)
cpcfloat | nullAverage cost-per-click in USD
competitionfloat | nullCompetition index (0-1)
competition_levelstringHIGH, MEDIUM, or LOW
monthly_searchesarray12-month breakdown of search volume by month
location_usedstringCanonical location the volumes are actually scoped to
location_alternativesarraySibling 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_scopestring"local" (city/state-level data) or "country" (national numbers — used when no local data exists)
data_sourcestring"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.