Recipes

Code Examples

JavaScript, Python, and cURL examples for the Direct Travel API.

Examples for the unified search, which returns one stay per property with a suppliers map across different providers in a single request.

# searches all suppliers at once
curl -H "X-API-KEY: <API_KEY>" \
  "https://api.stay22.com/v3/accommodations?address=Paris"

Each result carries a suppliers.<name> map; suppliers.<name>.link is a Stay22 deeplink that carries your aid:

{
  "meta": { "page": 1, "pageSize": 10, "total": 29758, "hasMore": true, "currency": "USD" },
  "results": [
    {
      "id": "42f1014f...0000",
      "url": "https://www.stay22.com/allez/roam/...?aid=<AID>",
      "name": "Appartement aux portes de Paris",
      "suppliers": {
        "booking": { "link": "https://www.stay22.com/allez/booking/usds_42f1014f...0000?aid=<AID>" }
      }
    }
  ],
  "_links": { "next": "https://api.stay22.com/v3/accommodations?address=Paris&page=2" }
}

See Response & supplier model.

Paginate

To page through results, follow _links.next until it is absent (see Pagination).

async function* allStays(params) {
  let url = `https://api.stay22.com/v3/accommodations?${new URLSearchParams(params)}`;
  while (url) {
    const res = await fetch(url, { headers: { 'X-API-KEY': process.env.API22_API_KEY } });
    const { results, _links } = await res.json();
    yield* results;
    url = _links.next ?? null;
  }
}

Add dates for live prices

With checkin/checkout, each supplier gains a price (see Pricing & quotes):

import requests, os

res = requests.get(
    'https://api.stay22.com/v3/accommodations',
    headers={'X-API-KEY': os.getenv('API22_API_KEY')},
    params={'address': 'New York City', 'checkin': '2026-07-01', 'checkout': '2026-07-04'},
)
data = res.json()

Cluster a dense map viewport

curl -H "X-API-KEY: <API_KEY>" \
  "https://api.stay22.com/v3/accommodations?nelat=48.90&nelng=2.42&swlat=48.80&swlng=2.25&cluster=auto"

See Clustering.

On this page