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 Category | Rate Limit |
---|---|
Domain APIs | 60 requests/minute |
Global Search APIs | 60 requests/minute |
Data Intelligence APIs | 60 requests/minute |
Enterprise APIs | 60 requests/minute |
Nexus APIs | 60 requests/minute |
OEM APIs | Custom 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
Header | Description |
---|---|
X-RateLimit-Limit | The maximum number of requests allowed per minute |
X-RateLimit-Remaining | The number of requests remaining in the current window |
X-RateLimit-Reset | The 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