Listing Management
Jump to Create LocationCreate Location
Create a location.
To verify a request without applying changes, use the validate_only parameter.
When set to true, the API validates the data but doesn’t update it nor consume your Local Pro limit.
Jump to EndpointEndpoint
Request Parameters
validate_only
Set to false by default. If set to true, the system validates the data without applying any changes.
Value/Type: boolean
Body parameters
curl -L 'https://api.semrush.com/apis/v4/local/v1/locations?validate_only=true'
-H 'Authorization: Apikey YOUR_API_KEY'
-H 'Content-Type: application/json'
-d '{
"business_name":"Some business name",
"phone_number":"+1 435 864 3376",
"country":"US",
"region":"UT",
"city":"Delta",
"zip":"84624",
"address_line_1":"Naumburger Str.2",
"address_line_2":"Second floor",
"website_url":"www.test.com",
"description":"Welcome to our Some business name!",
"category_ids":["b871306d44c145a0b781ed2cb3b19bf1","909c2eebd4fb4b338937d8518a3f0d73"],
"coordinates":{"latitude":39.35221240176079,
"longitude":-112.57777149021301},
"featured_message":"Call Today",
"featured_message_url":"www.test.com",
"youtube_video":"https://www.youtube.com/watch?v=nYykbUPQ9eo",
"instagram_username":"some_instagram_username",
"twitter_username":"some_x_username"
}'{
"meta": {
"success": true,
"status_code": 200,
"request_id": "182d587194adf5096d1b6d5b309f164f",
"validate_only": true
},
"data": {
"business_name": "Some business name",
"phone_number": "+1 435 864 3376",
"country": "US",
"region": "UT",
"city": "Delta",
"zip": "84624",
"address_line_1": "Naumburger Str.2",
"address_line_2": "Second floor",
"website_url": "www.test.com",
"description": "Welcome to our Some business name!",
"special_hours": [],
"service_area_places": [],
"category_ids": [
"b871306d44c145a0b781ed2cb3b19bf1",
"909c2eebd4fb4b338937d8518a3f0d73"
],
"suppress_address": false,
"coordinates": {
"latitude": 39.35221240176079,
"longitude": -112.57777149021301
},
"featured_message": "Call Today",
"featured_message_url": "www.test.com",
"youtube_video": "https://www.youtube.com/watch?v=nYykbUPQ9eo",
"instagram_username": "some_instagram_username",
"twitter_username": "some_x_username",
"location_id": "1d21ceab55d740709311ec9b8a12c01e",
"location_status": "PROCESSING",
"frozen": false,
"submit_date": "2026-03-10T17:03:42.691",
"errors": []
}
}Jump to Update LocationUpdate Location
Update a single location by its ID.
You must provide a non-empty update_mask parameter.
To update a field with a specific value, include the field in both the update_mask and the request body.
If you want to verify the request without applying changes, use the validate_only parameter.
When set to true, the API validates the data but doesn’t update it.
Jump to EndpointEndpoint
Request Parameters
update_maskRequired
Supported values: business_name, address_line_1, address_line_2, city, zip, phone_number, category_ids, region, featured_message, featured_message_url, website_url, description, instagram_username, twitter_username, business_hours, special_hours, service_area_places, suppress_address, coordinates, youtube_video, reopen_date, payment_options, more_hours
Specify each field you want to update as a value of the update_mask parameter.
For example: update_mask=business_name,address_line_1.
Value/Type: array of strings
validate_only
Set to false by default. If set to true, the system validates the data without applying any changes.
Value/Type: boolean
Body Parameters
curl -L -X PATCH 'https://api.semrush.com/apis/v4/local/v1/locations/04f447bda9f845d691fb4cc37daba031?update_mask=address_line_1,business_name,address_line_2'
-H 'Content-Type: application/json'
-H 'Authorization: Apikey YOUR_API_KEY'
-d '{
"business_name":"Updated business name",
"address_line_1":"Naumburger Str."
}'{
"meta": {
"success": true,
"status_code": 200,
"request_id": "9d55854e927ecaea7d80707cc8282189",
"update_mask": ["address_line_1", "business_name", "address_line_2"]
},
"data": {
"business_name": "Updated business name",
"phone_number": "+1 222-666-1111",
"country": "US",
"region": "CA",
"city": "New Brettmouth",
"zip": "08527",
"address_line_1": "Naumburger Str.",
"website_url": "www.test.com",
"description": "Some description here",
"special_hours": [],
"service_area_places": [
{
"name": "17763",
"place_id": "DJYLLjkCOgvNiWDFEeiPIhXcAFpKRCJSGjsFdeV"
},
{
"name": "North Many",
"place_id": "AJfjhjLYkPiHljnHruSOntPsMLvsNthJqycYbSX"
},
{
"name": "West Bradley",
"place_id": "nYUkPeFsrTzygxnKapBRoBolALdaBxnqLyVhBRe"
}
],
"category_ids": [
"42e91d12d5dd45029c709f223545abd5"
],
"suppress_address": false,
"coordinates": {
"latitude": -6.761864717379694,
"longitude": 13.537953520639036
},
"instagram_username": "some_user",
"twitter_username": "some_user",
"location_id": "04f447bda9f845d691fb4cc37daba031",
"location_status": "COMPLETED",
"submit_date": "2026-03-03T11:44:43.19",
"errors": []
}
}Jump to Get LocationGet Location
Get a single location by its ID.
Jump to EndpointEndpoint
Path parameters
location_idRequired
Value/Type: string
curl -L 'https://api.semrush.com/apis/v4/local/v1/locations/3e8d046f62fe4b73802112e138a78532'
-H 'Authorization: Apikey YOUR_API_KEY'{
"meta": {
"success": true,
"status_code": 200,
"request_id": "fc8e2dd369a9ed46f93ebffd9660afa0"
},
"data": {
"business_name": "Delta Manor Apartments",
"phone_number": "+1 435 864 3376",
"country": "US",
"region": "UT",
"city": "Delta",
"zip": "84624",
"address_line_1": "111 W Main St, Delta, UT 84624, United States",
"address_line_2": "Second floor",
"website_url": "www.test.com",
"description": "Welcome to our Some business name!",
"business_hours": {
"monday_hours": [
{
"from": "08:00",
"to": "12:00"
},
{
"from": "14:00",
"to": "18:00"
}
],
"tuesday_hours": [
{
"from": "08:00",
"to": "12:00"
},
{
"from": "14:00",
"to": "18:00"
}
],
"wednesday_hours": [
{
"from": "08:00",
"to": "12:00"
},
{
"from": "14:00",
"to": "18:00"
}
],
"thursday_hours": [
{
"from": "08:00",
"to": "12:00"
},
{
"from": "14:00",
"to": "18:00"
}
],
"friday_hours": [
{
"from": "08:00",
"to": "12:00"
},
{
"from": "14:00",
"to": "18:00"
}
],
"saturday_hours": [
{
"from": "08:00",
"to": "14:00"
}
],
"sunday_hours": []
},
"special_hours": [
{
"type": "CLOSED",
"day": "2026-05-01",
"times": []
},
{
"type": "OPENED_ALL_DAY",
"day": "2026-12-24",
"times": []
},
{
"type": "RANGE",
"day": "2026-03-11",
"times": [
{
"from": "14:00",
"to": "18:00"
}
]
}
],
"service_area_places": [
{
"name": "Delta, UT, USA",
"place_id": "ChIJQRRb_PG0TIcRwoI8h4xTvTM"
},
{
"name": "UT, USA",
"place_id": "ChIJzfkTj8drTIcRP0bXbKVK370"
}
],
"category_ids": [
"b871306d44c145a0b781ed2cb3b19bf1",
"909c2eebd4fb4b338937d8518a3f0d73"
],
"suppress_address": true,
"coordinates": {
"latitude": 39.35221240176079,
"longitude": -112.57777149021301
},
"featured_message": "Call Today",
"featured_message_url": "www.test.com",
"youtube_video": "https://www.youtube.com/watch?v=nYykbUPQ9eo",
"instagram_username": "some_instagram_username",
"twitter_username": "some_x_username",
"location_id": "6d6ac5e772284c569c6ca109008b4c4f",
"location_status": "COMPLETED",
"submit_date": "2025-08-14T15:57:56.414",
"errors": []
}
}Jump to Get LocationsGet Locations
Get a paginated list of all locations.
Jump to EndpointEndpoint
Request Parameters
location_statuses
Supported values: "COMPLETED", "PROCESSING", "FAILED"
Filter locations by status.
Value/Type: array of strings
limit
Mximum number of locations to be returned in a single paginated response.
Default is 50. Max. is 50.
Value/Type: integer
offset
Starting point for the subset of records to be returned.
Default is 0.
Value/Type: integer
frozen
Filters locations by their frozen status. If true, returns only frozen locations.
If false, returns only non-frozen locations. If omitted, returns all locations regardless of frozen status.
Value/Type: boolean
curl -L 'https://api.semrush.com/apis/v4/local/v1/locations?location_statuses=COMPLETED,FAILED&limit=10&offset=10'
-H 'Authorization: Apikey YOUR_API_KEY'{
"meta": {
"success": true,
"status_code": 200,
"request_id": "94ea05c2c3f903450236cd4f36023631",
"limit": 5,
"offset": 10,
"total": 12
},
"data": [
{
"business_name": "Some business name",
"phone_number": "+1 112-330-1303",
"country": "US",
"region": "TX",
"city": "Austin",
"zip": "78731",
"address_line_1": "3305 Northland",
"special_hours": [],
"service_area_places": [],
"category_ids": [
"c8124a0c01554493a645a58bb1fd9247",
"ee5ecf6d8dc14797b750e97f75b03e4f",
"79ece4794d46492f8e936516001abace"
],
"suppress_address": false,
"coordinates": {
"latitude": 30.334286,
"longitude": -97.7568222
},
"featured_message": "Call Today",
"instagram_username": "some_username",
"twitter_username": "some_username",
"location_id": "b326158fb2a24777a76575b1883923e6",
"location_status": "COMPLETED",
"submit_date": "2026-02-16T14:38:14.57",
"errors": []
},
{
"business_name": "Another business name",
"phone_number": "+357 16 932379",
"country": "CY",
"city": "Paphos",
"zip": "8040",
"address_line_1": "Apostolou Pavlou Avenue 99",
"website_url": "https://some-website.com/",
"description": "Established in 1954, Another Business Name remains a cornerstone of the domestic ball-bearing and gasket distribution industry.",
"business_hours": {
"monday_hours": [
{
"from": "09:00",
"to": "17:00"
}
],
"tuesday_hours": [],
"wednesday_hours": [],
"thursday_hours": [],
"friday_hours": [],
"saturday_hours": [],
"sunday_hours": []
},
"special_hours": [],
"service_area_places": [],
"category_ids": [
"3e25b0338cf94ad8bd1c7d5a28140b65"
],
"suppress_address": false,
"coordinates": {
"latitude": 34.7851347,
"longitude": 32.4174674
},
"location_id": "15b4a2871cc14dda9fc448aed4060171",
"location_status": "COMPLETED",
"submit_date": "2026-02-03T12:03:05.301",
"errors": []
}
]
}Jump to Delete LocationDelete Location
Permanently removes a location by its ID.
Jump to EndpointEndpoint
Path parameters
location_idRequired
Unique identifier of the location to delete.
Value/Type: string
curl -X DELETE "https://api.semrush.com/apis/v4/local/v1/locations/3e8d046f62fe4b73802112e138a78532" \
-H "Authorization: Apikey YOUR_API_KEY"{
"meta": {
"request_id": "4fb1773ec2a8d61a0407f464599f897c",
"status_code": 200,
"success": true
},
"data": {}
}Jump to Get ListingsGet Listings
Returns the listings associated with a specific location.
Use the optional listing_statuses filter to narrow results by connection state.
Jump to EndpointEndpoint
Path parameters
location_idRequired
Unique identifier of the location for which you want to retrieve the listings.
Value/Type: string
Query parameters
listing_statuses
Filters the results to listings with the specified statuses. Multiple values can be provided.
Supported values: CONNECTED, SUBMITTED, UNAVAILABLE, DISCONNECTED, PROCESSING.
Value/Type: array of strings
curl -X GET "https://api.semrush.com/apis/v4/local/v1/locations/1d21ceab55d740709311ec9b8a12c01e/listings?listing_statuses=CONNECTED,PROCESSING" \
-H "Authorization: Apikey YOUR_API_KEY"{
"meta": {
"request_id": "4fb1773ec2a8d61a0407f464599f897c",
"status_code": 200,
"success": true
},
"data": [
{
"id": "gbp-1d21ceab55d740709311ec9b8a12c01e",
"name": "Google Business Profile",
"status": "CONNECTED",
"controllable": false,
"url": "https://maps.google.com/?cid=7451928374651234567",
"parent_id": ""
},
{
"id": "apple-1d21ceab55d740709311ec9b8a12c01e",
"name": "Apple Maps",
"status": "CONNECTED",
"controllable": true,
"url": "https://maps.apple.com/?q=Some+Business+Name&ll=39.3522,-112.5778",
"parent_id": ""
},
{
"id": "yelp-child-1d21ceab55d740709311ec9b8a12c01e",
"name": "Yelp",
"status": "PROCESSING",
"controllable": true,
"url": "",
"parent_id": "yelp-1d21ceab55d740709311ec9b8a12c01e"
}
]
}Jump to Disable ListingDisable Listing
Disables a location listing.
To be disabled, a listing must be controllable and have one of the following statuses: CONNECTED, SUBMITTED, or UNAVAILABLE.
You can check if a listing is controllable by using the Get Listings endpoint and looking at the controllable field in the response.
Jump to EndpointEndpoint
Path parameters
listing_idRequired
Unique identifier of the listing to disable.
Value/Type: string
curl -X POST "https://api.semrush.com/apis/v4/local/v1/listings/b1c2d3e4f5a64789abcdef0123456789/disable" \
-H "Authorization: Apikey YOUR_API_KEY" \
-H "Content-Type: application/json"{
"meta": {
"request_id": "a3f7c1e2d4b56789012345678abcdef0",
"status_code": 200,
"success": true
},
"data": {}
}Jump to Enable ListingEnable Listing
Enables a location listing.
To be enabled, a listing must be controllable and have a status of DISCONNECTED.
You can check if a listing is controllable by using the Get Listings endpoint and looking at the controllable field in the response.
Jump to EndpointEndpoint
Path parameters
listing_idRequired
Unique identifier of the listing to enable.
Value/Type: string
curl -X POST "https://api.semrush.com/apis/v4/local/v1/listings/a3f1c2e4b5d6789012345678abcdef01/enable" \
-H "Authorization: Apikey YOUR_API_KEY"{
"meta": {
"request_id": "7c3a91e0f2b84d5e6a1092bdc3874f12",
"status_code": 200,
"success": true
},
"data": {}
}Jump to Create ImageCreate Image
Upload an image to a location’s profile.
Jump to EndpointEndpoint
Path parameters
location_idRequired
Unique identifier of the location to attach the image to.
Value/Type: string
Body parameters
contentRequired
Base64-encoded image data. Supported formats: JPEG, JPG, PNG.
Max. size: 4MB.
Value/Type: string
typeRequired
Intended use of the image. Supported values: PHOTO, PROFILE, COVER.
Dimension constraints:
COVER: 480x270 px (min) to 2120x1192 px (max)PHOTO: 270x270 px (min) to 5000x5000 px (max)PROFILE: 250x250 px (min) to 5000x5000 px (max)
Value/Type: string
description
Caption describing the image content.
Value/Type: string
curl -X POST "https://api.semrush.com/apis/v4/local/v1/locations/3e8d046f62fe4b73802112e138a78532/images" \
-H "Authorization: Apikey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "/9j/4AAQSkZJRgABAQEASABIAAD...",
"type": "PHOTO",
"description": "Front entrance of the store"
}'{
"meta": {
"request_id": "4fb1773ec2a8d61a0407f464599f897c",
"status_code": 200,
"success": true
},
"data": {
"id": "a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d",
"type": "PHOTO",
"url": "https://images.semrush.com/local/a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d.jpg",
"description": "Front entrance of the store",
"create_date": "2024-05-11T00:28:38"
}
}Jump to Get ImagesGet Images
Returns a paginated list of images associated with a location.
Jump to EndpointEndpoint
Path parameters
location_idRequired
ID of the location for which you need to get the images.
Value/Type: string
Query parameters
image_types
Filters results to one or more image types. Supported values: PHOTO, PROFILE, COVER.
Value/Type: []string
offset
Zero-based starting position for the results page. Default is 0.
Value/Type: integer
limit
Maximum number of images to return in a single response. Default is 50. Max. is 50.
Value/Type: integer
curl -X GET "https://api.semrush.com/apis/v4/local/v1/locations/3e8d046f62fe4b73802112e138a78532/images?image_types=PHOTO&offset=0&limit=10" \
-H "Authorization: Apikey YOUR_API_KEY"{
"meta": {
"limit": 10,
"offset": 0,
"request_id": "4fb1773ec2a8d61a0407f464599f897c",
"status_code": 200,
"success": true,
"total": 42
},
"data": [
{
"id": "a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d",
"type": "PHOTO",
"url": "https://lh3.googleusercontent.com/p/AF1QipN3xZkL8mVqT2oWpBkD1YnRcEeJvSs6k4fHg=s1024",
"description": "Exterior view of the main entrance",
"create_date": "2024-05-11T00:28:38"
},
{
"id": "b7c8d9e0f1a24b3c4d5e6f7a8b9c0d1e",
"type": "COVER",
"url": "https://lh3.googleusercontent.com/p/BG2RjqOM4yZkP9nVuT3pXqCkE2ZsRfFkWTt7m5gIh=s1024",
"description": "Interior seating area with natural lighting",
"create_date": "2024-07-22T14:15:00"
}
]
}Jump to Update ImageUpdate Image
Updates the metadata of an existing location image, such as its caption.
Jump to EndpointEndpoint
Path parameters
image_idRequired
Unique identifier of the image to update.
Value/Type: string
Body parameters
description
Caption describing the image content. Max. length is 255 characters.
Value/Type: string
curl -X PUT "https://api.semrush.com/apis/v4/local/v1/images/a1b2c3d4e5f64789abcdef0123456789" \
-H "Authorization: Apikey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "Front entrance of our downtown location"
}'{
"meta": {
"request_id": "4fb1773ec2a8d61a0407f464599f897c",
"status_code": 200,
"success": true
},
"data": {
"id": "a1b2c3d4e5f64789abcdef0123456789",
"type": "PHOTO",
"url": "https://images.semrush.com/local/a1b2c3d4e5f64789abcdef0123456789.jpg",
"description": "Front entrance of our downtown location",
"create_date": "2024-05-11T00:28:38"
}
}Jump to Delete ImageDelete Image
Permanently removes an image from a location’s profile.
Jump to EndpointEndpoint
Path parameters
image_idRequired
Unique identifier of the image to delete.
Value/Type: string
curl -X DELETE "https://api.semrush.com/apis/v4/local/v1/images/a1b2c3d4e5f64789abcdef0123456789" \
-H "Authorization: Apikey YOUR_API_KEY"{
"meta": {
"request_id": "4fb1773ec2a8d61a0407f464599f897c",
"status_code": 200,
"success": true
},
"data": {}
}Jump to Get CategoriesGet Categories
Get a paginated list of business categories for a specific country.
Jump to EndpointEndpoint
Request Parameters
countryRequired
Value/Type: string
limit
Maximum number of categories to be returned in a single paginated response.
Default is 1000. Max. is 1000.
Value/Type: integer
offset
Starting point for the subset of records to be returned.
Default is 0.
Value/Type: integer
curl -L 'https://api.semrush.com/apis/v4/local/v1/categories?country=CZ&limit=1000&offset=1000'
-H 'Authorization: Apikey YOUR_API_KEY'{
"meta": {
"success": true,
"status_code": 200,
"request_id": "c2ad517a4e341f07b543f0f68477e9fa"
},
"data": [
{
"id": "46e6afbab7cd408bae8d392184a5627e",
"name": "Marble supplier",
"full_name": "Businesses and Services > Supplier > Marble supplier",
"parent_id": "12898ed82f5849b1abb684887b82b464"
},
{
"id": "836dca5e11c546c49eb8802e9efe2d54",
"name": "Metal industry suppliers",
"full_name": "Businesses and Services > Supplier > Metal industry suppliers",
"parent_id": "12898ed82f5849b1abb684887b82b464"
},
{
"id": "90d3ba25b03f4e13bb1ef77d9097a025",
"name": "Metal detecting equipment supplier",
"full_name": "Businesses and Services > Supplier > Metal detecting equipment supplier",
"parent_id": "12898ed82f5849b1abb684887b82b464"
}
]
}Jump to Get More Hour TypesGet More Hour Types
Returns the list of hour types available for a specific location.
Use the returned type values in the more_hours field when updating a location.
This endpoint is only applicable to locations connected to Google Business Profile (GBP).
Jump to EndpointEndpoint
Path parameters
location_idRequired
Unique identifier of the location.
Value/Type: string
data
Object containing available hour types.
Parameters
more_hour_types
Hour types available for the location. For example: "SENIOR_HOURS", "PRAYER_GENERAL", "DELIVERY".
Value/Type: array of strings
Value/Type: object
curl -X GET "https://api.semrush.com/apis/v4/local/v1/locations/3e8d046f62fe4b73802112e138a78532/more-hour-types" \
-H "Authorization: Apikey YOUR_API_KEY"{
"meta": {
"request_id": "4fb1773ec2a8d61a0407f464599f897c",
"status_code": 200,
"success": true
},
"data": {
"more_hour_types": [
"SENIOR_HOURS",
"DRIVE_THROUGH",
"DELIVERY",
"TAKEOUT",
"PICKUP",
"KITCHEN",
"BREAKFAST",
"LUNCH",
"DINNER",
"BRUNCH",
"HAPPY_HOUR",
"PRAYER_GENERAL"
]
}
}Jump to Get Payment OptionsGet Payment Options
Returns the list of payment option identifiers available for a specific location.
Use the returned values to populate the payment_options field when updating a location.
Jump to EndpointEndpoint
Path parameters
location_idRequired
Unique identifier of the location for which you want to retrieve payment options.
Value/Type: string
data
Object containing available payment options.
Parameters
payment_options
Payment option identifiers available for the location. For example: "CASH", "CREDIT_CARD", "DEBIT_CARD", "NFC_MOBILE_PAYMENTS".
Value/Type: array of strings
Value/Type: object
curl -X GET "https://api.semrush.com/apis/v4/local/v1/locations/3e8d046f62fe4b73802112e138a78532/payment-options" \
-H "Authorization: Apikey YOUR_API_KEY"{
"meta": {
"request_id": "4fb1773ec2a8d61a0407f464599f897c",
"status_code": 200,
"success": true
},
"data": {
"payment_options": [
"CASH",
"CREDIT_CARD",
"DEBIT_CARD",
"NFC_MOBILE_PAYMENTS"
]
}
}Last updated: May 29, 2026