Overview
The/v2/listing-search endpoint returns a paginated list of individual listings from the Obvlo content engine. Listings represent single points of interest such as restaurants, hotels, attractions, or experiences.
You can filter by geography, free-text query, activity tags, and guest personalisation attributes.
Localised fields and the lang parameter
Several listing fields (name, summary, tagline, address, category, activityTags, keywords, priceLevelText, planVisit, whatToExpect, additionalTextAttributes, preferences, integratedCategories) carry translated content.
The shape of these fields depends on whether lang is provided:
lang | Field shape | Example |
|---|---|---|
Provided (e.g. lang=en-GB) | Plain value — a single string (or array/object) for the requested language. | "summary": "A great place to eat." |
| Omitted | Language map — one key per available language code. | "summary": { "en-GB": "A great place to eat.", "fr-FR": "Un excellent endroit." } |
lang is omitted, at least the default language (en-GB) is always included in the map.
Request
Required parameters
| Parameter | Type | Description |
|---|---|---|
orgId | string | Your organisation ID. |
Optional parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
profileId | string | — | Scope results to a specific host profile. |
searchQuery | string | — | Full-text query matched against listing names and descriptions. |
latlng | string | — | Geo-center for proximity ranking. Format: latitude,longitude (e.g. 51.5074,-0.1278). |
radius | string | — | Search radius in metres around latlng. |
page | string | "1" | Page number (1-based). |
hitsPerPage | string | "10" | Results per page. Maximum 20. |
userCategory | string | — | Filter by user category (e.g. couple, family, solo). |
tripType | string | — | Filter by trip type (e.g. leisure, business). |
userInterests | string | — | Comma-separated interest tags used for personalised ranking. |
activityTags | string | — | Comma-separated activity tags to filter results (e.g. outdoor,family-friendly). |
lang | string | — | BCP 47 language code for localised response fields (e.g. en, fr, de). |
rankBy | string | score | Ranking strategy: score (relevance) or distance (nearest first, requires latlng). |
Examples
Basic search for an organisation
Basic search
Geo-filtered search near Paris
Geo-filtered, near Paris
Filter by activity tags
Filter by activity tags
Personalised search with a specific language
Personalised search
Ranked by distance
Ranked by distance
Response
- With lang=en-GB
- Without lang (language map)
Response fields
| Field | Type | Description |
|---|---|---|
results | array | Array of listing objects (see below). |
total | integer | Total number of listings matching the query. |
pages | integer | Total number of pages at the requested hitsPerPage. |
Listing object
| Field | Type | Description |
|---|---|---|
id | string | Unique listing identifier. |
contentType | string | Always "listing". |
name | string | object | Listing name. Plain string when lang is provided; language map otherwise. |
summary | string | object | Short description. Plain string when lang is provided; language map otherwise. |
tagline | string | object | One-line tagline. Plain string when lang is provided; language map otherwise. |
address | string | object | Street address. Plain string when lang is provided; language map otherwise. |
neighborhood | string | Neighbourhood or area name (not localised). |
category | string | object | Primary category. Plain string when lang is provided; language map otherwise. |
activityTags | array | object | Activity tags. Array when lang is provided; language map of arrays otherwise. |
geoLocation | array | Coordinates as [latitude, longitude]. |
geoDistance | number | Distance in metres from the requested latlng (when provided). |
googleRating | number | Google Places rating (0–5). |
googleMapsUrl | string | Link to Google Maps. |
phoneNumber | string | Contact phone number. |
websiteUrl | string | Official website URL. |
priceLevel | integer | Numeric price level (1–4). |
priceLevelText | string | object | Price label (e.g. ££). Plain string when lang is provided; language map otherwise. |
openingHours | object | Opening hours data. See Opening hours object. |
photos | array | Array of photo objects. See Image object. |
languageCodes | array | Language codes for which content is available. |
score | number | Relevance score (0–1) used for ranking. |
status | string | Listing status (e.g. active). |
Opening hours object
| Field | Type | Description |
|---|---|---|
openNow | boolean | Whether the listing is currently open. |
nextCloseTime | string | ISO 8601 datetime of next closing time. |
isUnavailable | boolean | true if opening hours data is not available. |
periods | array | Array of { open, close } period objects. |
open and close objects with:
| Field | Type | Description |
|---|---|---|
day | integer | Day of week (0 = Sunday, 6 = Saturday). |
time | string | 24h time string without colon (e.g. "0900"). |
Image object
| Field | Type | Description |
|---|---|---|
id | string | Unique image identifier. |
category | string | Image category tag. |
attributions | array | Attribution strings for the image. |
images | array | Array of { size, url } variant objects. |