Room Saint Docs
Skip to documentation content
Browse documentation

Connectors and developers

Public hotel API

Endpoints, filters, examples, response fields, errors, and anonymous limits.

Anonymous hotel discovery

The public JSON API exposes the same class of hotel information visible on Room Saint. It requires no login or API key and cannot modify hotels, trips, accounts, or bookings.

GET endpointRequired input
/api/v1/hotels/searchNone; browse or filter
/api/v1/hotels/{id}Numeric hotel ID in the path
/api/v1/hotels/nearbylatitude and longitude
/api/v1/hotels/near-landmarklandmark

Search parameters

ParameterMeaning and bounds
qHotel, brand, destination, or descriptive text; up to 500 characters
city, countryCity text up to 120 characters; two-letter country code such as IT
latitude, longitudeProvide both; −90 to 90 and −180 to 180
radius_km1 to 100 km; default 10; requires coordinates except for landmark lookup
min_review_score0–5 website community score; missing and zero scores are excluded when filtering
min_star_rating, max_star_ratingInteger 1–5; minimum must not exceed maximum
amenities[]Up to 10 catalog identifiers of up to 60 characters; all must match, for example wifi and parking
limit, offset1–20 results; default 20. Offset starts at 0; offset + limit must not exceed 200.

Nearby accepts these filters. Landmark lookup accepts them except q and coordinates, plus a landmark name up to 200 characters. It returns the resolved location; if the place cannot be resolved reliably, use coordinates. Hotel lookup accepts only the hotel ID. Omit unused fields. Unknown parameters and arbitrary query objects are rejected.

Example requests

curl 'https://www.roomsaint.com/api/v1/hotels/search?q=Rome&country=IT&limit=5'
curl 'https://www.roomsaint.com/api/v1/hotels/nearby?latitude=41.89&longitude=12.49&radius_km=5'

Responses

Search responses contain results, total, limit, and offset. Lookup returns a data object. Hotel objects include the available ID, name, address, city, country, coordinates, score, star class, amenities, canonical_url, and expedia_url. Missing facts are omitted. The score is not a separate verified guest-review average.

Use canonical_url to link readers to the Room Saint hotel page. Preserve the supplied affiliate attribution when presenting expedia_url as a booking link. Do not present catalog prices or metadata as guaranteed live availability.

Limits and errors

REST permits 30 requests per minute per IP. REST and public MCP share 500 requests per rolling 24 hours per IP. Repeated, cached, and invalid requests count. Narrow a search rather than attempting a catalog export.

{"error":{"code":"INVALID_PAGINATION","message":"Narrow your search or reduce the result count."}}

Invalid input returns 422; missing hotels 404; oversized requests 413; rate limits 429; unavailable search or landmark lookup 503. On 429, honor Retry-After. On 503, retry with backoff. X-Request-ID identifies a request when reporting a problem. Full error messages vary with the invalid field.

Successful searches use a short application cache. These endpoints are for discovery, not bulk export. See the MCP reference for structured tool access.

Still stuck? Check troubleshooting or contact us.