Track the whole hotel market of a destination
The rate endpoints answer about one property. This one answers about the market: who else is on sale tonight, at what price, and where you fall in that distribution. Set up the location search, launch the import, read the whole plaza in one call.

What you'll build
A daily snapshot of a whole destination: every hotel that matches your filters, with price, discount, board, cancellation, score, review count, stars and distance — and the schedule that turns it into a historical series.
Set this up first
RequiredThe endpoints don't take free text — they take your identifiers. This recipe assumes the things below already exist on your account; while one of them is missing the call answers empty, not with an error. Each point links to the recipe that walks it.
- 01
Create the location search
A destination plus its filters — stars, board, distance, occupancy. Those filters are the entity: they decide which hotels the market covers and what every run costs.
Guide: Register the four entity types on your account →
The same thing over the API, if you would rather not click:
curl -X POST "https://api.veetal.app/v2/account/location-search" \
-H "veetal-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ ... }' # see the account reference for the bodyHow it works
- 01Why this and not a hotel-by-hotel loop
- 02Point the feed at your location search
- 03Launch the import and read the estimate first
- 04Read the market
- 05Make it a series
- 06What happens next
Step by step
By the end you will have one request that returns every hotel on sale in a destination for a given night — price, score, stars, room type, cancellation policy and distance to centre — instead of asking hotel by hotel.
What you need: a location search on your account (the destination plus its filters) and the Booking Location Search feed active.
What it costs: the run I document here was 0,32 credits and brought back 192 hotels. The dialog estimates it before you launch.
Why this and not a hotel-by-hotel loop
The rate endpoints answer about one property. That is the right tool when you know who your competitors are. It is the wrong tool when the question is the market itself: who else is on sale tonight, at what price, and where you fall in that distribution.
This feed answers that in one call. The unit is the location search you created — a destination plus the filters that decide who counts as your market — and one run covers the whole set.
1. Point the feed at your location search
Open Feed · Booking Location Search. The page opens on Location searches, the entities this API works on, and your location search should be listed. If it isn't, add it here.

The three cards at the top are the ones you will come back to: USAGE SUMMARY (what this API has cost this billing period), IMPORTS (last and next run) and SCHEDULES.
2. Launch the import and read the estimate first
The Imports tab, then Launch import. This dialog is where the money is decided:

- Location Searches — which of your searches to run. Each one costs.
- Search location rates up to — how many nights forward. One day is one night's snapshot; thirty days is thirty times the work.
- From which country should Booking.com be queried? — proxy geo-targeting. Booking shows different prices to different markets, and this is what makes the answer match what your customer sees.
- Currency and language — they default to what the location search already declares.
At the bottom, Estimated cost. Read it before you press. For one destination and one night it said 0,32 credits, and 0,32 is exactly what it charged.
Launch import, and the row appears in the list with its identifier, trigger, status and credits:

⚠️ The import writes for the date it runs on. Launch it at 23:08 and the data lands under yesterday's date — which matters because the endpoint asks for a target date, and the playground won't let you pick one in the past.
3. Read the market
The Requests tab, Run request. The target date defaults to today, which is what the import just wrote:

HTTP 200, 457 ms, 232 KB — 192 hotels in one response. Each one comes back like this:
{
"bookingHotelId": 29800,
"hotelName": "Catalonia Rigoletto",
"slug": "rigoletto",
"priceOriginal": 138.48,
"priceDiscount": 0,
"priceFinal": 138.48,
"currency": "EUR",
"roomType": "Habitación Doble - 1 o 2 camas",
"breakfastIncluded": false,
"freeCancellation": true,
"reviewScore": 8.6,
"reviewCount": 1842,
"starRating": 4,
"distanceToCenter": 2.1,
"photos": [ ... ]
}
That is the whole shape of the answer: price, discount, room type, board, cancellation, score, review count, stars, distance and photos, for every property that matched your filters.
Note what is not in there: a ranking position. The order is the order Booking returned, and the ranking is something you compute — by price, by score, by score-per-euro, by distance. That is the point: you get the distribution, and you decide what "position" means for you.
On this run: 192 hotels, cheapest 138,48 €, median 252,48 €, most expensive 1.526,40 €. Your own hotel is one row in there, and now you know exactly which percentile it sits in.
4. Make it a series
One run is a snapshot. The value is the curve, so put it on a schedule: the Schedules tab, pick the location search, choose daily, and the estimator shows both the cost per run and the monthly equivalent before you save.
From then on the feed answers for every date you have imported, and you can walk back through them: how the market's median moved, when the compset dropped prices, whether an event pushed the whole distribution up.
What happens next
The same location search also feeds the market demand dataset, and the real-time twin of this endpoint — GET /v2/real-time/location-search/{id}/booking/{date} — answers the same question live, without an import, when you need one destination right now instead of a history.
Questions
Why does the endpoint answer 404 when the import ran fine?
Because the date you asked for has no data. The import writes under the date it runs on, and the endpoint takes a target date — ask for a day nobody imported and you get 404 with code 510, NoDataFoundForRequestedDate. Check the Imports tab for which dates you actually have.
How much does a whole destination cost?
It depends on how many nights you ask for and how many location searches you run, not on how many hotels come back. One destination for one night was 0,32 credits and returned 192 hotels. The import dialog estimates the exact figure before you launch, and the schedule estimator shows the monthly equivalent.
Can I control which hotels are included?
That is what the filters on the location search are for: stars, property type, board, minimum score, distance to centre, occupancy. Change them and you change your market — and the cost. If you need two different views of the same city, create two location searches.
Does the response tell me my position in the ranking?
Not as a field. You get every hotel with its price, score, stars and distance, and you compute the position that matters to you. Ranking by price is not the same as ranking by score or by value, and which one counts depends on your strategy.
Feed or real time?
Use the feed when you want history: a schedule writes a snapshot a day and you can walk the series backwards. Use the real-time twin, GET /v2/real-time/location-search/{id}/booking/{date}, when you need one destination right now and don't care about keeping it.
Build your own
Start free with 100 API credits. No credit card, no sales call.