# Get search keywords

Retrieves the top search keywords that led users to find the filtered locations within a date range. Each keyword includes its occurrence count. Defaults to the last week if startDate is not provided.

Endpoint: GET /dashboard/search-keywords
Version: 20260701

## Query parameters:

  - `startDate` (any)
    Start date (inclusive) as an ISO-8601 date or date-time, with or without zone/offset (e.g. 2025-01-01, 2025-01-01T14:30:00, 2025-01-01T14:30:00Z, 2025-01-01T14:30:00%2B02:00). Zone-aware values are normalised to UTC. The formats yyyy.MM.dd, dd.MM.yyyy, dd-MM-yyyy HH:mm:ss and dd.MM.yyyy HH:mm:ss are also accepted. Optional for most endpoints — defaults to a period before end date if omitted.

  - `endDate` (any)
    End date (inclusive) as an ISO-8601 date or date-time, with or without zone/offset. Zone-aware values are normalised to UTC. The formats yyyy.MM.dd, dd.MM.yyyy, dd-MM-yyyy HH:mm:ss and dd.MM.yyyy HH:mm:ss are also accepted. Defaults to today.

  - `group` (string)
    Overrides the automatic granularity of the date range. Case-insensitive. When omitted, granularity is derived from the range length. Legacy values DAY, WEEK, MONTH and YEAR are also accepted. HOUR returns the whole range as a single bucket holding the ACTIONS_PHONE hour-of-day profile (phone0..phone23) and is only valid for the ACTIONS_PHONE metric; other endpoints treat it as DAILY.

  - `filterCategory` (string)
    Filter strategy to use for scoping locations

  - `locationIds` (any)
    Comma-separated location IDs (used when filterCategory=location)

  - `businessIds` (any)
    Comma-separated business IDs (used when filterCategory=business)

  - `labels` (any)
    Label names (used when filterCategory=labels)

  - `locationGroupIds` (any)
    Location group IDs (used when filterCategory=location-groups)

  - `excludedLocationIds` (any)
    Comma-separated location IDs to exclude from results

  - `excludedBusinessIds` (any)
    Comma-separated business IDs to exclude from results

  - `excludedLabels` (any)
    Label names to exclude from results

  - `excludedLocationGroupIds` (any)
    Location group IDs to exclude from results

## Response 200 fields (*/*):

  - `status` (any, required)
    Response status
    Example: SUCCESS

  - `response` (object, required)
    Response payload

  - `response.keywords` (array, required)
    List of keywords ranked by occurrence count

  - `response.keywords.keyword` (any, required)
    The search keyword text
    Example: pizza near me

  - `response.keywords.value` (any, required)
    Number of times this keyword appeared in search queries

  - `response.total` (any, required)
    Total number of distinct keywords

  - `response.parameters` (object, required)

  - `response.parameters.startMonth` (any)

  - `response.parameters.startYear` (any)

  - `response.parameters.endMonth` (any)

  - `response.parameters.endYear` (any)

  - `response.parameters.currentMonth` (any)

  - `response.parameters.currentMonthUnlockDate` (any)

  - `response.parameters.previousMonth` (any)

  - `response.parameters.previousMonthUnlockDate` (any)

  - `response.parameters.limitStartMonth` (any)

  - `response.parameters.limitStartYear` (any)

  - `response.parameters.limitEndMonth` (any)

  - `response.parameters.limitEndYear` (any)

