get
https://www.locally.com/api/v2/brand//stores
Request a list of stores authorized for the brand
Request Parameters
🔗 path · unmarked parameters are query params
| Parameter | Type | Required | Description |
|---|---|---|---|
company_id 🔗 | integer | Yes | Locally company identifier. |
Example Request
curl --get 'https://www.locally.com/api/v2/brand/{{COMPANY_ID}}/stores' \
--header 'Locally-Api-Token: {{API_TOKEN}}' \
--data-urlencode 'offset=0' \
--data-urlencode 'limit=50'const response = await fetch('https://www.locally.com/api/v2/brand/{{COMPANY_ID}}/stores?offset=0&limit=50', {
headers: {
'Locally-Api-Token': '{{API_TOKEN}}'
}
});
const stores = await response.json();import requests
response = requests.get(
'https://www.locally.com/api/v2/brand/{{COMPANY_ID}}/stores',
params={'offset': 0, 'limit': 50},
headers={'Locally-Api-Token': '{{API_TOKEN}}'}
)
stores = response.json()offset and limit paginate the result set: the API returns 10 stores per page by default, and limit is capped at 100. total always reflects the full count of authorized stores regardless of paging.
Example Response
{
"total": 42,
"offset": 0,
"results": [
{
"name": "ACME Outfitters Chicago",
"address": "123 W Adams St",
"zip": "60604",
"phone": "(312) 555-0142",
"lat": 41.8756719,
"lng": -87.6243469,
"company_id": 999,
"is_hold_capable": "Enabled",
"is_chat_capable": 0,
"is_charge_capable": "Enabled",
"is_delivery_capable": "Enabled",
"is_dropship_capable": "",
"country": "US",
"city": "Chicago",
"state": "IL",
"has_inventory_data": "Live",
"company_name": "ACME Outfitters",
"bw_logo": "",
"logo": "",
"is_claimed": 1,
"categories": "Outdoor Gear, Footwear",
"rating": "4.7",
"store_id": "1001",
"brand_slug": "acme-outfitters",
"brand_bw_logo": "acme-outfitters-bw_2024-01-15-09-30-00.png",
"vendor_id": "ACME-0421",
"slug": "acme-outfitters-chicago",
"store_url": "https://www.locally.com/sapi/s/999/1001"
},
{
"name": "ACME Outfitters Evanston",
"address": "812 Church St",
"zip": "60201",
"phone": "(847) 555-0168",
"lat": 42.0475851,
"lng": -87.6822878,
"company_id": 999,
"is_hold_capable": "",
"is_chat_capable": 0,
"is_charge_capable": "",
"is_delivery_capable": "",
"is_dropship_capable": "",
"country": "US",
"city": "Evanston",
"state": "IL",
"has_inventory_data": "",
"company_name": "ACME Outfitters",
"bw_logo": "",
"logo": "",
"is_claimed": 0,
"categories": "Outdoor Gear",
"rating": "",
"store_id": "1002",
"brand_slug": "acme-outfitters",
"brand_bw_logo": "acme-outfitters-bw_2024-01-15-09-30-00.png",
"vendor_id": "ACME-0388",
"slug": "acme-outfitters-evanston",
"store_url": "https://www.locally.com/sapi/s/999/1002"
}
]
}Response Explanation
total— Count of all matching stores across every page —resultsis just the current window. Page with theoffsetandlimitquery parameters (10 per page by default,limitcapped at 100).results[].store_id— Locally's canonical ID for the physical store, returned as a string. The same store ID is used across Locally APIs (it matchesdata.markers[].idin the Headless API).results[].company_id— Always the brand company ID from the request path — every store repeats it. The retailer company operating the store is named bycompany_name.results[].is_hold_capable— Capability flags (is_hold_capable,is_charge_capable,is_delivery_capable,is_dropship_capable) are"Enabled"or""strings, not booleans — reserve-for-pickup, pay-online-for-pickup, local delivery, and ship-to-store respectively.is_chat_capablealone is an integer.results[].has_inventory_data—"Live"when the store shares live inventory data with Locally (and it isn't muted); empty string otherwise — never a boolean.results[].is_claimed— Integer flag:1when the retailer has claimed and manages this store's Locally profile,0for unclaimed listings.results[].vendor_id— The brand's own identifier for this store, taken from the brand's dealer records; empty string when the brand hasn't assigned one.results[].store_url— Tracked locally.com redirect (/sapi/s/…) that forwards to the store's Locally page with UTM tagging applied;slugis that page's URL slug.

