Location profile data
Complete profiles rank and convert better. After creating a location, enrich it with the data below. All calls take the location ID unless noted.
Phone numbers
| Task | Endpoint |
|---|---|
| List phones | GET Phone list with contextType=Location |
| Add a phone | POST Phone with parentType=Location |
| Change a phone | PUT Phone (phone ID) |
| Change the main phone | PUT Main phone (phone ID) |
| Remove a phone | DELETE Phone (phone ID) |
{ "phoneType": "mobile", "phone": "+49 171 1234567", "tracked": false }
phoneType is landline, mobile or fax.
The same phone format rules apply to all endpoints that accept phone numbers, including company contacts: any common format is accepted, and without an international country code Germany is assumed.
Opening hours
A location can have regular hours (default) and special hours for a period (customPeriod) or a single day (customDate).
| Task | Endpoint |
|---|---|
| List opening hours of a location | GET Opening hours list with id = location ID |
| Create | POST Opening hours (location ID) |
| Update | PUT Opening hours (opening hours ID) |
| Delete | DELETE Opening hours (opening hours ID) |
| Apply to several locations | PUT Bulk opening hours |
Each day needs day and openingDayType: singleInterval, doubleInterval, nonstopOpened or closed. Intervals use from and to. Define every weekday, including closed days.
{
"openingHoursType": "default",
"days": [
{ "day": "Mon", "openingDayType": "singleInterval",
"timeIntervals": [{ "from": "09:00", "to": "18:00" }] },
{ "day": "Tue", "openingDayType": "singleInterval",
"timeIntervals": [{ "from": "09:00", "to": "18:00" }] },
{ "day": "Wed", "openingDayType": "singleInterval",
"timeIntervals": [{ "from": "09:00", "to": "18:00" }] },
{ "day": "Thu", "openingDayType": "doubleInterval",
"timeIntervals": [{ "from": "09:00", "to": "12:00" }, { "from": "14:00", "to": "18:00" }] },
{ "day": "Fri", "openingDayType": "singleInterval",
"timeIntervals": [{ "from": "09:00", "to": "16:00" }] },
{ "day": "Sat", "openingDayType": "nonstopOpened" },
{ "day": "Sun", "openingDayType": "closed" }
]
}
For special hours add dateInterval (from, to). Use temporarilyClosedUntil to mark a temporary closure.
Additional data and media
| Task | Endpoint |
|---|---|
| Read / update additional data (services, keywords, languages, year founded and more) | GET / PUT Location additional |
| Read / update media (logo, images, social profile URLs) | GET / PUT Location media |
In media updates, sending null for an optional field removes the value. To reorder customImages, send the existing image IDs in the new order.
Google attributes
Attributes such as payment methods or accessibility features are provided by Google per category.
- GET Google attributes with
locationIdandlanguagereturns the attributes available for the location. - PUT Google attributes saves values. The path takes a comma-separated list of location IDs, so one call can update several locations.
- For bulk editing, GET Company Google attributes groups attributes across the selected locations.
{ "data": [{ "attributeId": "<attribute id from step 1>", "value": "true" }] }
Bulk updates
GET Location bulk and PUT Location bulk read and write selected keys (for example name, categories, email, phone, website, opening hours) for many locations or all locations of a company. Set contextType to Location or Company.