Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: HotelMonitor agent Deals API
version: 1.2.0
description: 'Read-only answers about hotel prices, for AI assistants. Prices are tax-inclusive nightly figures from HotelMonitor''s own price scans (the Agoda share is an estimate of tax). They are past observations, not live quotes. Results include page_url, HotelMonitor''s price-history page, and where available book_url, a booking-site link with the dates filled in, so the person can confirm the current price. Booking links are affiliate links; HotelMonitor may earn a commission at no extra cost to the person. Rate limits per client (IP address, IPv6 by /64, plus user agent), shared with the MCP server: 60 requests a minute and 2,000 a day; over either you get 429 with Retry-After. X-RateLimit-* headers describe the per-minute window and RateLimit-Policy states both. The same tools are available over MCP at https://hotelmonitor.co.uk/mcp.'
contact:
name: HotelMonitor
url: https://hotelmonitor.co.uk/developers#mcp
servers:
- url: https://hotelmonitor.co.uk/api/agent/v1
tags:
- name: Deals
paths:
/deals:
get:
operationId: findHotelDeals
summary: Current hotel deals from the latest scans (at most 20)
description: 'Hotels priced below their typical level. Each deal has page_url and a dated book_url. The response also has page_url: the destination page when a destination was given, otherwise the deals page, so there is somewhere to browse when nothing matches.'
parameters:
- name: destination
in: query
schema:
type: string
- name: month
in: query
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[0-2])$
- name: max_price
in: query
schema:
type: number
description: Maximum price per night in GBP.
- $ref: '#/components/parameters/via'
responses:
'200':
description: Deals, each with page_url and a dated book_url.
'400':
description: Invalid input.
tags:
- Deals
components:
parameters:
via:
name: via
in: query
required: false
schema:
type: string
maxLength: 32
description: Optional short name of your app or assistant (lower-case letters, digits, - or _), used in booking links so we can see where visits come from. Anything else is ignored and agent_api is used.