# Get customer feedback overview

Retrieves aggregated customer review statistics including average rating, count by each star rating, reply counts, and contributing directory types. Optionally filters by a specific directory type. Defaults to all available data (from 1970-01-01 up to today) if startDate is not provided.

Endpoint: GET /dashboard/customer-feedback
Version: 20260701

## Query parameters:

  - `v` (any)
    API version. Defaults to the latest version. Versions older than 20260713 additionally return interactionCount, unreadInteractionCount and unreadInteractions.

  - `directoryType` (any)

  - `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

  - `textFilter` (any)
    Deprecated: use the newer `query` parameter instead. Free-text location search that narrows results to matching locations (matches name, address, identifier and label fields). Supports #label and @group tokens (e.g. "main st #premium @north"), combined with AND semantics. Applied only when no filterCategory is set.

  - `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 (application/json):

  - `averageRating` (any, required)
    Average rating across all reviews
    Example: 4.2

  - `countByRating` (array, required)
    Review count breakdown by star rating (1-5)

  - `countByRating.rating` (any, required)
    Star rating value (1-5)
    Example: 5

  - `countByRating.count` (any, required)
    Number of reviews with this rating

  - `countByRating.replied` (any, required)
    Number of reviews with this rating that were replied to

  - `ratingCount` (any, required)
    Total number of ratings

  - `repliedCount` (any, required)
    Number of reviews that received a reply

  - `directoryTypes` (array, required)
    Directory types that contributed reviews

  - `directoryTypes.name` (any, required)

  - `directoryTypes.category` (string, required)
    Enum: "search", "voice.search", "social", "mobile.and.navigation", "ev", "aggregators", "doctor.dot.com", "general"

  - `interactionCount` (any, required)
    Number of reviews and photos in the requested period
    Example: 42

  - `unreadInteractionCount` (any, required)
    Number of unread reviews and photos. Read state is per-user and lives only in the monolith, so this service mirrors interactionCount, matching the monolith for users who never marked an interaction as read.
    Example: 42

  - `unreadInteractions` (array)
    Deprecated. Always null. Historically held the last three unread interactions.

  - `matchedLocationsCount` (any, required)
    Number of locations that matched the filter
    Example: 3

