Shopping & Ads

List local businesses

Changed on

Local businesses (shops, restaurants, services) listed inside AI answers, one row per business: its name at its address, so two locations of a chain are two rows. Each row carries its appearance count, the number of prompts that listed it, its average rating and average position in the list, its review count, and whether it is yours or a tracked competitor. Every response also carries a totals block matching the KPI cards in the app. Local business lists come from a subset of models and only for prompts with local intent. Available on every plan.

get/dimensions/local_businesses

Request

  • Base URL
    https://api.llmpulse.ai/api/v1
  • URL
    https://api.llmpulse.ai/api/v1/dimensions/local_businesses
  • Auth
    API key in header Authorization

Query parameters

project_idinteger required

Project ID

pageinteger
per_pageinteger
ownedboolean

Return only listings identified as the tracked brand's own locations. The totals block stays account-wide.

order'appearances' | 'business' | 'rating' | 'reviews' | 'avg_position' | 'prompts'

Sort field

direction'asc' | 'desc'
querystring

Case-insensitive substring filter on the business name or address

model'chatgpt' | 'perplexity' | 'ai_mode' | 'ai_overview' | 'gemini' | 'copilot' | 'amazon_rufus' | 'claude' | 'grok' | 'deepseek' | 'naver_ai' | 'baidu_ai' | 'meta_ai' | 'naver_ai_tab' | 'qwen' | 'doubao'

Filter by one AI model. It must be a model enabled for the API key's user: an unknown value, or a model the user has not enabled, returns 422 ERR_INVALID_PARAM with the valid values in the message.

collection_idstring

One collection/tag ID or a comma-separated list of IDs. A query value is always a string on the wire, so it is typed as one: the previous integer-or-string union made generators emit a wrapper type they could not serialize.

country_codestring

One ISO country code or a comma-separated list (e.g. US,GB,DE)

language_codestring

One ISO language code or a comma-separated list (e.g. en,es,de)

promptinteger

Filter by prompt ID

prompt_typestring

One prompt type or a comma-separated list: informational, navigational, commercial, transactional

brand_kind'brand' | 'brand_other' | 'non_brand'

Filter by brand kind: brand (own brand/products), brand_other (competitors/other brands), non_brand (generic, no brand named). For fair 1:1 brand-vs-competitor comparisons (visibility, share of voice), use non_brand: brand-focused prompts skew results toward the brand they name. The in-app Overview page applies non_brand by default.

rangeinteger

Number of days to look back (alternative to from/to)

fromstring date-time
tostring date-time

End of the window. A date-only value such as 2026-09-01 covers that whole day. Pass a full timestamp to end the window earlier.

output'flat' | 'csv'

Rectangular output for BI tools (Tableau, Excel, Sheets, ELT). Omit for the default nested JSON. 'flat' returns the same metadata plus 'columns' and 'rows'; 'csv' returns those rows as text/csv. Errors are always returned as JSON.

Response

Paginated local business rows plus totals

project_idinteger
pageinteger
per_pageinteger
totalinteger
request_idstring

Changes