Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.shippeek.com/llms.txt

Use this file to discover all available pages before exploring further.

The ShipPeek API enforces rate limits per endpoint to ensure reliability for all users.

Limits by endpoint

EndpointLimit
Authentication5 requests/minute
Rate shopping (/rates)30 requests/minute
Booking (/book)20 requests/minute
Tracking (/track)120 requests/minute

Response headers

Every response includes rate limit headers:
HeaderDescription
X-RateLimit-LimitMaximum requests allowed per window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetSeconds until the limit resets

Handling rate limits

When you exceed the limit, the API returns 429 Too Many Requests. Use the X-RateLimit-Reset header to determine when to retry.
async function fetchWithRetry(url, options) {
  const response = await fetch(url, options);

  if (response.status === 429) {
    const resetSeconds = parseInt(response.headers.get('X-RateLimit-Reset'), 10);
    await new Promise(resolve => setTimeout(resolve, resetSeconds * 1000));
    return fetch(url, options);
  }

  return response;
}

Recommendations

  • Cache rate quotes — Use the quote ID to retrieve rates later instead of making repeated rate requests.
  • Use streaming — The /rates/ltl/stream endpoint returns rates as they arrive via SSE, reducing the need for polling.
  • Batch operations — Group related items into a single rate request rather than making separate requests per item.