Skip to main content

Rate Limits

API requests are rate-limited per API key based on your plan tier.

Limits by plan​

TierRequests/secondRequests/minuteRequests/day
Standard51005,000
Professional1550025,000
EnterpriseCustomCustomCustom

The Free tier does not include API access.

Rate limit headers​

When rate limiting is active, every response includes these headers:

HeaderDescription
X-RateLimit-LimitYour per-minute request allowance
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait before retrying (only on 429 responses)

Handling 429 responses​

When you exceed your rate limit, the API returns HTTP 429 Too Many Requests. Build retry logic with exponential backoff:

import time
import requests

def call_with_retry(url, headers, json_body, max_retries=3):
for attempt in range(max_retries):
resp = requests.post(url, headers=headers, json=json_body)
if resp.status_code == 429:
wait = int(resp.headers.get("Retry-After", 2 ** attempt))
time.sleep(wait)
continue
return resp
raise Exception("Rate limit exceeded after retries")

Tips for staying under limits​

  • Use batch endpoints for bulk processing — one request processes up to 500 properties instead of 500 individual calls
  • Use the Comprehensive endpoint to fetch multiple data types in a single call instead of hitting each endpoint separately
  • Cache responses — identical requests within the 5-minute idempotency window return cached results at zero credit cost
  • Request only what you need — fewer comparables and fewer census keys mean fewer credits consumed

Credit usage​

For per-endpoint credit costs, plans, and pricing details, see the Credits & Pricing page.

Checking your usage​

View your current credit balance, rate limit status, and usage history at dashboard.padstats.io.