Skip to content

Code Examples

bash
# Dates are optional — they default to 90/93 days from today
curl -H "X-API-KEY: your_api_key_here" \
  "{{API_BASE_URL}}/v1/accommodations?provider=booking&address=Paris"

Search by Coordinates

javascript
const params = new URLSearchParams({
  provider: 'booking',
  lat: '48.8584',
  lng: '2.2945',
});

const response = await fetch(`{{API_BASE_URL}}/v1/accommodations?${params}`, {
  headers: { 'X-API-KEY': process.env.API22_API_KEY },
});

const { results } = await response.json();

Search by Bounding Box

Ideal for map-based UIs — pass the viewport corners to search a visible area.

bash
curl -H "X-API-KEY: your_api_key_here" \
  "{{API_BASE_URL}}/v1/accommodations?provider=booking&nelat=48.90&nelng=2.42&swlat=48.80&swlng=2.25"

Advanced Filters

python
import requests
import os

response = requests.get(
    '{{API_BASE_URL}}/v1/accommodations',
    headers={'X-API-KEY': os.getenv('API22_API_KEY')},
    params={
        'provider': 'booking',
        'address': 'New York City',
        'checkin': '2026-06-01',
        'checkout': '2026-06-05',
        'adults': 2,
        'children': 1,
        'minguestrating': 8.0,
        'max': 200,  # per-night price in USD
    },
)
data = response.json()

Error Handling and Retries

javascript
class API22Client {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseUrl = '{{API_BASE_URL}}/v1';
  }

  async request(endpoint, params = {}, maxRetries = 3) {
    const url = new URL(`${this.baseUrl}${endpoint}`);
    Object.entries(params).forEach(([key, value]) => {
      if (value !== undefined && value !== null) {
        url.searchParams.append(key, value.toString());
      }
    });

    for (let attempt = 0; attempt < maxRetries; attempt++) {
      const response = await fetch(url, {
        headers: { 'X-API-KEY': this.apiKey },
      });

      // Rate limit — back off and retry
      if (response.status === 429) {
        const waitTime = Math.pow(2, attempt) * 1000;
        await new Promise((r) => setTimeout(r, waitTime));
        continue;
      }

      if (!response.ok) {
        const error = await response.json();
        throw new Error(`${error.code}: ${error.message}`);
      }

      return await response.json();
    }

    throw new Error('Max retries exceeded');
  }

  async searchAccommodations(provider, params) {
    return this.request('/accommodations', { provider, ...params });
  }
}

const client = new API22Client(process.env.API22_API_KEY);
const results = await client.searchAccommodations('booking', { address: 'Paris' });