Rate Limits

Understand API throttling, quota management, and how to optimize your integration with Sitemap.xml.

Overview

To ensure platform stability and fair usage across all tenants, Sitemap.xml enforces rate limits on all API endpoints. Limits are calculated using a sliding window algorithm and apply per API key, not per user or IP address.

💡
Important: Rate limits reset dynamically. If you approach your quota, responses will include RateLimit-Remaining and RateLimit-Reset headers to help you adjust your request pacing.

Tier-Based Limits

Rate limits scale with your subscription tier. All limits are measured in requests per minute (RPM) and requests per hour (RPH).

Plan Requests/Min Requests/Hour Concurrent Jobs
Free Starter 10 600 1
Pro Professional 200 10,000 10
Enterprise Enterprise 2,000+ 100,000+ Unlimited
⚠️
Exceeding your hourly quota will result in a 429 Too Many Requests response until the hour window resets. Requests are not queued; they are rejected immediately.

Endpoint-Specific Constraints

Certain heavy-processing endpoints have stricter limits to protect infrastructure:

  • POST /v1/sitemaps/generate — Max 1 RPS (Starter), 5 RPS (Pro)
  • POST /v1/indexing/submit — Batched by 100 URLs max per call
  • GET /v1/analytics/dashboard — Cached for 5 minutes; unlimited reads
  • DELETE /v1/sitemaps/:id — Rate-limited to 5 per minute to prevent accidental mass deletion

Handling 429 Responses

When you exceed a rate limit, the API returns a 429 status code with a JSON body and specific headers:

HTTP/1.1 429 Too Many Requests
Retry-After: 45
RateLimit-Remaining: 0
RateLimit-Reset: 1715428800

{ "error": "rate_limit_exceeded", "message": "You have exceeded your hourly request quota.", "retry_after_seconds": 45 }

Always respect the Retry-After header. Implementing exponential backoff with jitter is strongly recommended.

Best Practices

  • Batch requests: Use bulk endpoints where available to reduce round trips.
  • Cache responses: Many endpoints support If-None-Match ETag headers.
  • Monitor headers: Check RateLimit-Remaining before making heavy calls.
  • Asynchronous workflows: For large sitemap generations, use webhooks instead of polling.
  • Retry strategy: Use exponential backoff: 1s → 2s → 4s → 8s → cap at 30s.

Requesting Limit Increases

Need higher throughput for your integration? Enterprise customers can request custom rate limits through their dashboard. Pro users may apply for a temporary burst allowance during traffic spikes.

Need Higher Limits?

Upgrade to Professional or contact our solutions team for a custom throughput plan.

View Pricing & Upgrade