Skip to content

Data types ​

All response items are plain JSON objects. Fields are always present and hold null (or an empty array/string where noted) when a value is unavailable — except the rich detail shapes (PlaceDetail, EventDetail), which omit the list-only selection fields (why, reasons, PlaceDetail's blurb, layerIcons, and section) rather than null them.

Hotel ​

Returned under hotel on a POST /v1/concierge response and as each item of GET /v1/hotels/autocomplete. It is a lightweight reference; the rich hotel detail is a PlaceDetail from GET /v1/places/:placeId.

FieldTypeDescription
placeIdstring | nullHotel place identifier.
namestring | nullHotel name.
labelstring | nullDisplay label ("Name, City, ST").
addressstring | nullStreet address.
localitystring | nullCity.
regionstring | nullState/region code.
latitudenumber | nullLatitude.
longitudenumber | nullLongitude.

Place ​

Used for both foodAndBeverage and attractions. The section field tells you which list an item came from.

FieldTypeDescription
placeIdstring | nullPlace identifier.
namestringPlace name.
sectionstring"foodAndBeverage" or "attractions".
blurbstringShort description. Empty when unavailable.
whystringPersonalized 1–2 sentence justification for this guest.
reasonsstring[]1–3 short reason chips (2–4 words each).
imageUrlsstring[]Image URLs. May be empty.
imageUrlstring | nullFirst image, for convenience.
layersstring[] | nullCurated layer slugs (e.g. "michelin").
layerIconsobject[]Resolved badges: { slug, name, shortName, iconUrl, url }. Empty when no layers.
latitudenumber | nullLatitude.
longitudenumber | nullLongitude.
aggregateRatingnumber | nullAggregate rating.
reviewCountnumber | nullNumber of reviews.
addressstring | nullStreet address.
localitystring | nullCity.
regionstring | nullState/region code.
priceRangestring | nullSingle price band ($…$$$$), or null. See How pricing is blended.
websitestring | nullThe venue's own site. null when unavailable.
reservationUrlstring | nullReservation or booking link when a provider is known (e.g. OpenTable, Resy). null otherwise; fall back to website.
distanceFromHotelnumber | nullStraight-line distance from the hotel, in miles, rounded to one decimal.

Event ​

Returned under events.

FieldTypeDescription
eventIdstring | nullEvent identifier.
venuePlaceIdstring | nullVenue place identifier.
titlestringEvent title.
datestringEvent date in the venue's local time.
timestringEvent start time in the venue's local time.
venuestringVenue name.
blurbstringShort description. Empty when unavailable.
whystringPersonalized 1–2 sentence justification for this guest.
reasonsstring[]1–3 short reason chips (2–4 words each).
latitudenumber | nullLatitude.
longitudenumber | nullLongitude.
localitystring | nullCity.
regionstring | nullState/region code.
timezonestring | nullIANA time zone for the venue (e.g. "America/New_York").
addressstring | nullStreet address.
neighborhoodstring | nullNeighborhood.
categorystringNormalized category slug (see below).
urlstring | nullEvent page or venue listing for this event. null when unavailable.
isFreeboolean | nulltrue when the source says free, false when a price is stated, null when unknown. Amounts, when known, are in ticketPrice.
ticketPriceobject | nullTicket price range, { min, max, currency }, or null when the source states no amount (or the event is free). min/max are non-negative numbers, at least one present; currency is an upper-cased ISO-4217 code or null.
distanceFromHotelnumber | nullStraight-line distance from the hotel, in miles, rounded to one decimal.

Event categories ​

category is normalized to one of:

music, theater, film, sports, comedy, tours, art, nightlife, learn, health-fitness, wellbeing, family-kids, or other when the source category has no mapping.

PlaceDetail ​

Returned under the place key by GET /v1/places/:placeId. One shape for every place — a food and beverage venue, an attraction, or a hotel. It carries the list Place fields except the selection fields (why, reasons), blurb, layerIcons, and section, plus the detail fields below. Every collection is capped server-side.

FieldTypeDescription
placeIdstring | nullPlace identifier (same as the list item).
namestringPlace name.
categorystring[]Source categories.
subCategoriesstring[]Source subcategories.
tagsstring[]Merged tags (max 12).
shortDescriptionstringOne-line description ("" if none).
longDescriptionstringLonger description ("" if none).
foodDescriptionstringWhat to eat here ("" if none).
ambianceDescriptionstringWhat it feels like to be there ("" if none).
storyDescriptionstringHistory/ownership/notability ("" if none).
reviewSummarystringSynthesized "what reviewers say" ("" if none).
websitestring | nullThe venue's own site.
reservationUrlstring | nullBooking link when a provider is known; fall back to website.
phonestring | nullPhone number.
openHoursobject | nullOpening hours keyed by weekday, in the place's local time. Each open day is an array of "HH:MM-HH:MM" intervals; a closed day is null.
timezonestring | nullIANA time zone for the place (e.g. "America/New_York").
ratingsBySourceobject[]One entry per review provider: { provider, rating, count, url }. Link guests to url rather than showing review text.
postalCodestring | nullPostal code.
countrystring | nullCountry.
neighborhoodsstring[]Neighborhood names.
recognitionobject[]One entry per curated layer: { slug, name, shortName, iconUrl, url }. url is the source review/list we matched.
menuobject[]{ title, items: [{ name, description, price }] } (max 6×20).
similarPlacesobject[]{ placeId, name, imageUrl, section } (max 6).
eventsobject[]{ eventId, title, date, url } at this venue (max 5).

EventDetail ​

Returned by GET /v1/events/:eventId. It carries the list Event fields except the selection fields (why, reasons) and address (the detail exposes the venue address as venueAddress instead), plus the detail fields below.

FieldTypeDescription
endTimestring | nullEnd time in the venue's local time ("HH:MM"), when known.
isOngoingbooleanTrue for an ongoing opening-interval occurrence.
timesstring[]All showing times for a grouped show, in the venue's local time.
subcategorystring[]Source subcategories.
tagsstring[]Event tags.
venuePlaceIdstring | nullVenue place id.
venueAddressstring | nullVenue street address.
neighborhoodstring | nullVenue neighborhood.
blurbstringShort description ("" if none).
descriptionstringFull description ("" if none).
imageUrlstring | nullEvent image.
isFreeboolean | nulltrue when the source says free, false when a price is stated, null when unknown. Amounts, when known, are in ticketPrice.
ticketPriceobject | nullTicket price range, { min, max, currency }, or null when the source states no amount (or the event is free). min/max are non-negative numbers, at least one present; currency is an upper-cased ISO-4217 code or null.
urlstring | nullSource/venue page.
detailUrlstring | nullEvent detail page.
ticketUrlstring | nullTicketing page.
calendarUrlstring | nullCalendar/listing page.
sourcestring | nullHost of the source URL (provenance).

Error ​

Every non-2xx response uses the same envelope:

json
{
  "error": {
    "code": "invalid_request",
    "message": "Unknown field: foo",
    "details": {}
  }
}
FieldTypeDescription
codestringStable machine-readable code (see Errors).
messagestringHuman-readable description.
detailsobjectOptional extra context. Only present for some errors.

Layer object ​

layerIcons is an array of:

json
{ "slug": "michelin-nyc", "name": "Michelin Guides", "shortName": "Michelin", "iconUrl": "https://…", "url": "https://…" }

url is the source link we matched for the layer (the same link the place-detail recognition array exposes). It is null when we have no source.

Overlook Hospitality API