# Get insight metrics

Retrieves insight metrics (Google Impressions, Clicks, Driving Directions, Facebook interactions, Bing, Yelp) for filtered locations within a date range. Metrics are grouped by time period with granularity auto-determined by the date range: daily (<=31d), weekly (<90d), monthly (<=365d), or quarterly (>365d). Defaults to the last 30 days if startDate is not provided. group=HOUR is only valid for the ACTIONS_PHONE metric and returns the whole range as a single bucket whose count is the hour-of-day profile keyed phone0..phone23.

Endpoint: GET /dashboard/insights-data
Version: 20260701

## Query parameters:

  - `v` (any)
    API version. Defaults to the latest version. Versions older than 20260713 label each period by granularity (weekly '2025 3', monthly and quarterly 2025-3, yearly 2025) instead of returning the ISO start date of the period.

  - `metrics` (any)

  - `type` (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 (*/*):

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

  - `response` (object, required)
    Response payload

  - `response.matchedLocationsCount` (any, required)
    Number of locations that had data in the queried range

  - `response.metrics` (array, required)
    List of metrics with time-series data

  - `response.metrics.name` (any, required)
    Metric name (e.g. QUERIES_DIRECT, VIEWS_MAPS)
    Example: QUERIES_DIRECT

  - `response.metrics.data` (array, required)
    Data points per time period

  - `response.metrics.data.period` (any, required)
    Start date of the period as an ISO date. API versions older than 20260713 instead get a label formatted by granularity: daily 2025-01-15, weekly '2025 3' (ISO year+week), monthly and quarterly 2025-1, yearly 2025
    Example: 2025-01-01

  - `response.metrics.data.count` (any, required)
    Metric count for this period. An integer for normal metrics; for the ACTIONS_PHONE hour-of-day profile (group=HOUR) it is an object of the 24 hourly counts keyed phone0..phone23.
    Example: 42

  - `response.granularity` (string, required)
    Time period granularity. Auto-determined by the date range span unless overridden by the `group` query parameter.
    Enum: "HOUR", "DAILY", "WEEKLY", "MONTHLY", "QUARTERLY", "YEARLY"

  - `response.isPartialData` (any, required)
    True when some periods in the range have incomplete data

