Skip to main content

Rate Limiting

Rate limiting is applied to all FullHunt API endpoints to ensure fair usage and optimal performance for all users.

Rate Limiting Factors

Rate limiting is applied based on the following factors:

  • User Credits: Your monthly credit allocation
  • API Request Rate: Number of requests per minute
  • User Plan: Different limits for different subscription tiers

Standard Rate Limits

API Request Limits

Most API endpoints have the following rate limits:

  • 60 requests per minute for most endpoints
  • Rate limits are applied per API key
  • Limits reset every minute

Specific Endpoint Limits

Some endpoints may have different rate limits:

Endpoint CategoryRate Limit
Domain APIs60 requests/minute
Global Search APIs60 requests/minute
Data Intelligence APIs60 requests/minute
Enterprise APIs60 requests/minute
Nexus APIs60 requests/minute
OEM APIsCustom limits

Rate Limit Headers

API responses include rate limit information in the headers:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1634004417
HeaderDescription
X-RateLimit-LimitThe maximum number of requests allowed per minute
X-RateLimit-RemainingThe number of requests remaining in the current window
X-RateLimit-ResetThe time when the rate limit window resets (Unix timestamp)

Rate Limit Exceeded Response

When you exceed the rate limit, you'll receive a 429 Too Many Requests response:

{
"error": "Rate limit exceeded",
"message": "You have exceeded the rate limit of 60 requests per minute",
"retry_after": 30
}

Credit Limits

In addition to rate limits, API usage is subject to credit limits:

  • Community accounts: Limited results per query
  • Enterprise accounts: Full access to all results
  • Credits are consumed based on the complexity and size of the response

Best Practices

Implement Exponential Backoff

When you receive a rate limit error, implement exponential backoff:

# Example with retry logic
for i in {1..5}; do
response=$(curl -s -w "%{http_code}" "https://fullhunt.io/api/v1/domain/example.com/details" \
-H "X-API-KEY: your-api-key")

if [[ "${response: -3}" != "429" ]]; then
echo "Success: ${response::-3}"
break
fi

echo "Rate limited, waiting $((2**i)) seconds..."
sleep $((2**i))
done

Monitor Rate Limit Headers

Always check the rate limit headers in your application:

import requests
import time

def make_api_request(url, headers):
response = requests.get(url, headers=headers)

# Check rate limit headers
limit = int(response.headers.get('X-RateLimit-Limit', 0))
remaining = int(response.headers.get('X-RateLimit-Remaining', 0))
reset = int(response.headers.get('X-RateLimit-Reset', 0))

print(f"Rate limit: {remaining}/{limit}")

if remaining < 5: # Close to limit
wait_time = reset - int(time.time())
print(f"Approaching rate limit, waiting {wait_time} seconds")
time.sleep(wait_time)

return response

Batch Your Requests

Instead of making many individual requests, consider:

  • Using Global Search APIs for broader queries
  • Implementing request queuing in your application
  • Spreading requests over time

Cache Results

Implement caching to reduce API calls:

  • Cache frequently accessed domain information
  • Use appropriate cache TTLs based on data freshness needs
  • Implement cache invalidation strategies

Enterprise Rate Limits

Enterprise customers may have different rate limits:

  • Higher request rates per minute
  • Dedicated infrastructure for improved performance
  • Custom rate limits based on usage patterns
  • Priority support for rate limit adjustments

Contact FullHunt support to discuss custom rate limits for your enterprise needs.

Monitoring Your Usage

Track your API usage through:

  • Rate limit headers in API responses
  • Your FullHunt dashboard
  • API usage analytics and reporting tools

Contact Support

If you need higher rate limits or have questions about rate limiting:

  • Contact FullHunt support
  • Upgrade to an Enterprise plan for higher limits
  • Consider the OEM APIs for partner integrations