Google Business Profile
Google Business Profile API provides endpoints to retrieve GBP performance metrics, the keyword report, and the searches trend for a location.
Get Google Business Profile metrics
GET https://api.seranking.com/v1/local-marketing/locations/{location_id}/gbp-metrics
Returns Google Business Profile performance metrics for a location as a daily time series: impressions by platform and device (desktop/mobile × Search/Maps), direction requests, conversations, call clicks, and website clicks. Metric names inside each row follow Google’s own daily metric names, lowercased.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| location_id | Integer | Yes | Location ID (path parameter). |
| from | String | No | Start date (in YYYY-MM-DD). |
| to | String | No | End date (in YYYY-MM-DD). |
| group_by | String | No | Time grouping. Available value: DAY (default). |
Request example
GET https://api.seranking.com/v1/local-marketing/locations/15/gbp-metrics?from=2026-05-01&to=2026-05-31&group_by=DAYResponse parameters
If successful, the server returns the 200 HTTP status code and a metrics time series. Returns HTTP 404 if the location is not found.
| Parameter | Type | Description |
|---|---|---|
| location_id | Integer | Location ID. |
| from | String | Start date of the range (in YYYY-MM-DD, can be null). |
| to | String | End date of the range (in YYYY-MM-DD, can be null). |
| group_by | String | Grouping applied to the series. |
| items | Array | Time series rows. |
| date | String | Row date (in YYYY-MM-DD). |
| metrics | Object | Metric name to numeric value map for that date. Possible keys: business_impressions_desktop_maps, business_impressions_desktop_search, business_impressions_mobile_maps, business_impressions_mobile_search, business_direction_requests, business_conversations, call_clicks, website_clicks. |
Response example
{
"location_id": 15,
"from": "2026-05-01",
"to": "2026-05-31",
"group_by": "DAY",
"items": [
{
"date": "2026-05-01",
"metrics": {
"business_impressions_desktop_maps": 46,
"business_impressions_desktop_search": 307,
"business_impressions_mobile_maps": 230,
"business_impressions_mobile_search": 50,
"business_direction_requests": 5,
"business_conversations": 2,
"call_clicks": 1,
"website_clicks": 21
}
},
{
"date": "2026-05-02",
"metrics": {
"business_impressions_desktop_maps": 39,
"business_impressions_desktop_search": 284,
"business_impressions_mobile_maps": 211,
"business_impressions_mobile_search": 44,
"business_direction_requests": 3,
"business_conversations": 1,
"call_clicks": 2,
"website_clicks": 18
}
}
]
}Get Google Business Profile keyword report
GET https://api.seranking.com/v1/local-marketing/locations/{location_id}/gbp-keywords
Returns the Google Business Profile keyword report for a location: search keywords with impressions and clicks, plus totals across the selected period. This endpoint uses token-based pagination.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| location_id | Integer | Yes | Location ID (path parameter). |
| from | String | No | Start date (in YYYY-MM-DD). |
| to | String | No | End date (in YYYY-MM-DD). |
| page_size | Integer | No | Number of items per page (1–1000). Default is 100. |
| page_token | String | No | Token of the next page, taken from next_page_token of the previous response. |
Request example
GET https://api.seranking.com/v1/local-marketing/locations/15/gbp-keywords?from=2026-05-01&to=2026-05-31&page_size=100Response parameters
If successful, the server returns the 200 HTTP status code and the keyword report. Returns HTTP 404 if the location is not found.
| Parameter | Type | Description |
|---|---|---|
| location_id | Integer | Location ID. |
| totals | Object | Totals across all keywords in the range. |
| totals.impressions | Integer | Total impressions (can be null). |
| totals.clicks | Integer | Total clicks (can be null). |
| items | Array | Keyword rows. |
| keyword | String | Search keyword. |
| impressions | Integer | Impressions for the keyword (can be null). |
| clicks | Integer | Clicks for the keyword (can be null). |
| next_page_token | String | Token to request the next page. null if there are no more pages. |
Response example
{
"location_id": 15,
"totals": { "impressions": 15230, "clicks": 640 },
"items": [
{ "keyword": "italian restaurant near me", "impressions": 4200, "clicks": 180 },
{ "keyword": "osteria holladay", "impressions": 2100, "clicks": 95 }
],
"next_page_token": "eyJvZmZzZXQiOjEwMH0"
}Get Google Business Profile searches trend
GET https://api.seranking.com/v1/local-marketing/locations/{location_id}/gbp-searches
Returns the Google Business Profile searches trend for a location by month, broken down into direct, discovery, and branded searches.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| location_id | Integer | Yes | Location ID (path parameter). |
| from | String | No | Start date (in YYYY-MM-DD). |
| to | String | No | End date (in YYYY-MM-DD). |
Request example
GET https://api.seranking.com/v1/local-marketing/locations/15/gbp-searches?from=2026-01-01&to=2026-05-31Response parameters
If successful, the server returns the 200 HTTP status code and the searches trend. Returns HTTP 404 if the location is not found.
| Parameter | Type | Description |
|---|---|---|
| location_id | Integer | Location ID. |
| last_updated_date | String | Date the data was last updated (in YYYY-MM-DD, can be null). |
| items | Array | Monthly rows. |
| month | String | Month, returned as the first day of the month (in YYYY-MM-DD), e.g. 2026-05-01. |
| direct | Integer | Direct searches — users searched for the business name or address (can be null). |
| discovery | Integer | Discovery searches — users searched for a category, product, or service (can be null). |
| branded | Integer | Branded searches — users searched for a brand related to the business (can be null). |
Response example
{
"location_id": 15,
"last_updated_date": "2026-05-31",
"items": [
{ "month": "2026-04-01", "direct": 1100, "discovery": 3200, "branded": 720 },
{ "month": "2026-05-01", "direct": 1200, "discovery": 3400, "branded": 800 }
]
}
