API

Locations

Locations API provides endpoints to list Local Marketing locations available in your account and retrieve detailed information about a single location.


List locations

GET https://api.seranking.com/v1/local-marketing/locations

Returns a list of Local Marketing locations accessible to the authenticated user, with key statistics for each location.

Request parameters

ParameterTypeRequiredDescription
idsStringNoFilter by a comma-separated list of location IDs, e.g. 15,18,21.
with_demoBooleanNoInclude demo locations. Default is false. Accounts with only demo locations receive an empty list unless this is set to true.
is_activeBooleanNoFilter by active status.
searchStringNoSearch by location title or profile fields.
limitIntegerNoMaximum number of items to return (1–1000). Default is 100.
offsetIntegerNoNumber of items to skip. Default is 0.
sortStringNoField to sort by.
sort_orderStringNoSorting order: asc or desc. Default is desc.

Request example

Copy
GET https://api.seranking.com/v1/local-marketing/locations?is_active=true&limit=100&offset=0

Response parameters

If successful, the server returns the 200 HTTP status code, an array of locations in items, and a pagination object.

ParameterTypeDescription
itemsArrayList of locations.
idIntegerLocation ID.
account_idIntegerOwning account ID.
account_nameStringOwning account name (can be null).
titleStringLocation title.
langStringLocation language.
is_activeBooleanWhether the location is active.
is_demoBooleanWhether the location is a demo.
is_subBooleanWhether the location belongs to a sub-account (can be null).
is_sharedBooleanWhether the location is shared (can be null).
created_atStringCreation timestamp (can be null).
updated_atStringLast update timestamp (can be null).
connection_statusStringConnection lifecycle status for the location in Local Marketing (can be null).
sync_statusStringCurrent synchronization status across connected directories (can be null).
last_synced_atStringLast synchronization timestamp (can be null).
statisticsObjectKey statistics for the location.
statistics.reviews_countIntegerTotal number of reviews (can be null).
statistics.average_ratingFloatAverage review rating. Note: computed differently from average_rating in Get reviews overview — the two values are distinct metrics and may not match (can be null).
statistics.unanswered_reviews_countIntegerReviews awaiting a reply (can be null).
statistics.listings_countIntegerNumber of business listings (can be null).
statistics.citations_scoreFloatCitations score, 0–100 (can be null).
statistics.citations_percentileIntegerCitations score percentile. Distinct from citations_score (can be null).
statistics.listed_directories_countIntegerDirectories where the location is listed (can be null).
statistics.synced_directories_countIntegerDirectories currently synchronized. A listing can be listed but not yet synced (can be null).
statistics.mismatched_directories_countIntegerDirectories with mismatched listing data (can be null).
statistics.keywords_countIntegerTracked keywords. Note: counts keywords, while top_3_keywords_count/top_10_keywords_count count keyword × tracking-point pairs, so TOP-N values can exceed keywords_count (can be null).
statistics.average_positionFloatAverage local ranking position (can be null).
statistics.top_3_keywords_countIntegerKeywords ranking in the top 3 (can be null).
statistics.top_10_keywords_countIntegerKeywords ranking in the top 10 (can be null).
statistics.audit_score_percentIntegerLatest audit score, in percent (can be null).
paginationObjectPagination info: total, limit, offset.

Response example

Copy
{
"items": [
{
"id": 15,
"account_id": 42,
"account_name": "Acme Agency",
"title": "Folk Osteria",
"lang": "en",
"is_active": true,
"is_demo": false,
"is_sub": false,
"is_shared": false,
"created_at": "2026-04-10 09:15:00",
"updated_at": "2026-08-04 12:00:00",
"connection_status": "connected",
"sync_status": "synced",
"last_synced_at": "2026-08-04 12:00:00",
"statistics": {
"reviews_count": 60,
"average_rating": 3.8,
"unanswered_reviews_count": 8,
"listings_count": 57,
"citations_score": 85.0,
"citations_percentile": 78,
"listed_directories_count": 66,
"synced_directories_count": 49,
"mismatched_directories_count": 3,
"keywords_count": 355,
"average_position": 10.97,
"top_3_keywords_count": 49,
"top_10_keywords_count": 167,
"audit_score_percent": 85
}
}
],
"pagination": {
"total": 2,
"limit": 100,
"offset": 0
}
}

Get location details

GET https://api.seranking.com/v1/local-marketing/locations/{location_id}

Returns detailed information about a single location: its business profile, owner, permissions, Google connection state, and latest audit score.

Request parameters

ParameterTypeRequiredDescription
location_idIntegerYesLocation ID (path parameter).

Request example

Copy
GET https://api.seranking.com/v1/local-marketing/locations/15

Response parameters

If successful, the server returns the 200 HTTP status code and a location details object. Returns HTTP 404 if the location is not found.

The object includes all fields from List locations, plus:

ParameterTypeDescription
profileObjectBusiness profile of the location.
profile.nameStringBusiness name.
profile.primary_phoneStringPrimary phone number (can be null).
profile.additional_phonesArrayAdditional phone numbers.
profile.websiteStringWebsite URL (can be null).
profile.descriptionStringBusiness description (can be null).
profile.addressObjectAddress: postal_code, region_code, region_display_name, administrative_area, locality, address_lines.
profile.primary_categoryObjectPrimary business category: id, display_name.
profile.additional_categoriesArrayAdditional business categories.
profile.working_hoursObjectWorking hours.
profile.service_areaObjectService area settings.
profile.social_profilesArraySocial profiles, each with network and url.
propertiesObjectAdditional location properties. Note: currently returned as an object when populated but as an empty array [] when empty — typed clients should handle both.
ownerObjectLocation owner: id, parent_id, email, first_name, last_name, lang.
permissionsArrayPermissions the current user has for this location.
authObjectGoogle connection state.
auth.google_connection_statusStringGoogle connection status (can be null).
auth.requires_reconnectBooleanWhether the Google account needs to be reconnected (can be null).
auth.connected_atStringConnection timestamp (can be null).
auditObjectAudit summary.
audit.score_percentIntegerLatest audit score, in percent (can be null).

Response example

Copy
{
"id": 15,
"account_id": 42,
"account_name": "Acme Agency",
"title": "Folk Osteria",
"lang": "en",
"is_active": true,
"is_demo": false,
"created_at": "2026-04-10 09:15:00",
"updated_at": "2026-08-04 12:00:00",
"connection_status": "connected",
"sync_status": "synced",
"last_synced_at": "2026-08-04 12:00:00",
"statistics": {
"reviews_count": 60,
"average_rating": 3.8,
"listings_count": 57,
"citations_score": 85.0,
"audit_score_percent": 85
},
"profile": {
"name": "Folk Osteria",
"primary_phone": "1 801-843-9517",
"additional_phones": [],
"website": "https://folkosteria.com",
"description": "Italian restaurant in Holladay.",
"address": {
"postal_code": "84117",
"region_code": "US",
"region_display_name": "United States",
"administrative_area": "UT",
"locality": "Holladay",
"address_lines": ["Highland Dr."]
},
"primary_category": {
"id": "gcid:italian_restaurant",
"display_name": "Italian restaurant"
},
"additional_categories": [],
"working_hours": {},
"service_area": {},
"social_profiles": [
{ "network": "facebook", "url": "https://facebook.com/folkosteria" }
]
},
"properties": {},
"owner": {
"id": 7,
"parent_id": null,
"email": "[email protected]",
"first_name": "Jane",
"last_name": "Doe",
"lang": "en"
},
"permissions": ["view", "export"],
"auth": {
"google_connection_status": "connected",
"requires_reconnect": false,
"connected_at": "2026-04-10 09:20:00"
},
"audit": {
"score_percent": 85
}
}

Learn how SE Ranking’s API can boost your SEO!

Hi! Meet our product experts!

One of them will walk you through the API and show you how to get the most out of it.

  • Enjoy a tailored demo on integrating rich, structured SEO data into your stack.
  • Pin down every tech detail live—auth, endpoints, rate limits, data formats.
  • Compare usage tiers and pricing so you can unlock maximum data value.

Request a free demo to see our tools and integrations in action

By clicking this button, you agree to SE Ranking’s
Terms of Service and Privacy Statement.