booking_rate_limited

Booking.com is rate-limiting this property. Back off and put more dates into one request.

HTTP 429You have hit a rate limit.

When it fires

Booking.com is throttling writes for this property. It is their limit, not Repull's — a rate_limitedresponse is Repull's own cap and looks different.

The usual cause is one request per date. Booking.com counts requests, not nights, so a week pushed as seven calls costs seven times what the same week costs as one.

Response shape

Every Repull error follows the same envelope. The code is stable and safe to switch on.

{
  "error": {
    "code": "booking_rate_limited",
    "message": "Rate limited by provider",
    "fix": "Booking.com is rate-limiting this property. Back off (start around 30 seconds), then retry, and put several dates into one `updates[]` array instead of one request per date.",
    "docs_url": "https://repull.dev/docs/errors/booking_rate_limited",
    "request_id": "req_01J5X7Y8Z9ABCDEF12345678",
    "upstream_status": 429
  }
}

How to fix

  1. Back off before retrying — start around 30 seconds and double on each further refusal.
  2. Collapse the work: one update covers a whole date range, and `updates[]` holds many rooms and rate plans in one request.
  3. Push a date range once, rather than re-pushing the same nights on a schedule.

Common gotchas

  • Date ranges are inclusive. One update with start and end a week apart is one request for seven nights.
  • Retrying is safe: the same rate or restriction written twice sets the same value.

Examples

curl

# One request for a whole week and two rooms, instead of fourteen
curl -X PUT https://api.repull.dev/v1/channels/booking/availability \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "rates",
    "property_id": "1234567",
    "updates": [
      { "roomId": "123456701", "rateId": "98765", "dateRange": { "start": "2026-07-01", "end": "2026-07-07" }, "price": 180, "currency": "EUR" },
      { "roomId": "123456702", "rateId": "98765", "dateRange": { "start": "2026-07-01", "end": "2026-07-07" }, "price": 220, "currency": "EUR" }
    ]
  }'

TypeScript

async function pushWithBackoff(body: unknown, attempt = 0): Promise<Response> {
  const res = await fetch('https://api.repull.dev/v1/channels/booking/availability', {
    method: 'PUT',
    headers: {
      Authorization: `Bearer ${process.env.REPULL_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(body),
  })
  if (res.status !== 429 || attempt > 4) return res
  await new Promise(r => setTimeout(r, 30_000 * 2 ** attempt))
  return pushWithBackoff(body, attempt + 1)
}

If you're an AI agent

Booking.com is throttling this property. Back off starting around 30 seconds, then retry — retries are safe. Collapse one-request-per-date into one request with a date range and several updates.

Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.

AI