Skip to main content

Overview

Fraudiant enforces rate limits to ensure fair usage and maintain service quality for all customers. Rate limits vary based on your subscription plan and authentication status.
Rate limits apply per API key and are counted across all environments (development, staging, production).

Rate Limit Tiers

Free Plan

1 request/secondSufficient for development and small applications

Pro Plan

5-50 requests/secondVaries by plan tier. Suitable for production applications

Unauthenticated

5 requests/hourVery limited. Authentication required for normal use
Unauthenticated requests are severely limited and intended only for testing. Always authenticate your requests for production use.

Rate Limit Headers

Every API response includes headers that help you track your rate limit usage:
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1640995200
X-RateLimit-Limit
integer
Maximum requests allowed per time window
X-RateLimit-Remaining
integer
Number of requests remaining in the current window
X-RateLimit-Reset
timestamp
Unix timestamp when the rate limit resets

Rate Limit Exceeded Response

When you exceed your rate limit, the API returns a 429 Too Many Requests status code:
{
  "status": 429,
  "error": "Too many requests",
  "message": "Rate limit exceeded. Please wait before making more requests.",
  "retry_after": 30
}
retry_after
integer
Number of seconds to wait before making another request

IP Blocking

Repeated rate limit violations (sustained abuse) will trigger temporary IP blocking lasting approximately one hour.
If your IP is blocked, you’ll receive:
{
  "status": 403,
  "error": "IP temporarily blocked due to rate limit violations",
  "blocked_until": "2024-01-15T11:30:00Z"
}

Best Practices

Always check the X-RateLimit-Remaining header and implement logic to slow down requests when approaching the limit.
const response = await fetch('https://api.fraudiant.com/email/[email protected]', {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});

const remaining = response.headers.get('X-RateLimit-Remaining');

if (remaining < 10) {
  console.warn('Approaching rate limit. Implement backoff strategy.');
}
When receiving 429 responses, implement exponential backoff to avoid continued rate limit violations:
async function fetchWithRetry(url, options, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const retryAfter = response.headers.get('Retry-After') || Math.pow(2, i);
      await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
      continue;
    }

    return response;
  }

  throw new Error('Max retries exceeded');
}
Cache email and domain validation results to reduce redundant API calls:
const cache = new Map();

async function validateEmail(email) {
  if (cache.has(email)) {
    return cache.get(email);
  }

  const response = await fetch(`https://api.fraudiant.com/email/${email}`, {
    headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
  });

  const data = await response.json();

  // Cache for 24 hours
  cache.set(email, data);
  setTimeout(() => cache.delete(email), 24 * 60 * 60 * 1000);

  return data;
}
For bulk validation, consider accumulating emails and processing them in batches rather than making individual requests for each email.
Monitor your usage patterns and upgrade your plan if you frequently hit rate limits. Pro plans offer significantly higher limits.
Avoid sending all requests at once. Distribute validation requests throughout your workflow to stay within rate limits.
Create separate API keys for development, staging, and production. This prevents development testing from consuming production quotas.

Monthly Quotas

In addition to per-second rate limits, your plan includes a monthly request quota:
PlanMonthly Quota
Free10,000 requests/month
Pro Starter100,000 requests/month
Pro Business500,000 requests/month
Pro EnterpriseCustom limits
Monthly quotas reset on the first day of each month. Unused requests do not roll over.

Quota Exceeded Response

When you exceed your monthly quota:
{
  "status": 429,
  "error": "Monthly quota exceeded",
  "message": "You have reached your monthly request limit. Please upgrade your plan or wait for quota reset.",
  "quota_resets_at": "2024-02-01T00:00:00Z"
}

Monitoring Your Usage

Track your API usage in real-time through your dashboard:
  • Current rate limit usage (requests/second)
  • Monthly quota consumption
  • Usage trends and analytics
  • Peak usage times
  • Environment-specific breakdowns

View Usage Dashboard

Monitor your API usage and analytics

Upgrading Your Plan

If you consistently hit rate limits or need higher quotas:
1

Review Your Usage

Check your usage patterns in the dashboard
2

Compare Plans

3

Upgrade

Upgrade your plan through the dashboard. Rate limit increases take effect immediately.
4

Contact Sales

For custom enterprise limits, contact our sales team

Upgrade to Pro

Get higher rate limits and monthly quotas

Testing Rate Limits

During development, you can test your rate limit handling by:
  1. Making rapid sequential requests to trigger 429 responses
  2. Monitoring response headers to verify your parsing logic
  3. Testing backoff strategies to ensure graceful degradation
// Example: Test rate limit handling
async function testRateLimits() {
  const requests = Array(100).fill(null).map((_, i) =>
    fetch(`https://api.fraudiant.com/email/test${i}@example.com`, {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    })
  );

  const responses = await Promise.allSettled(requests);

  const rateLimited = responses.filter(r =>
    r.status === 'fulfilled' && r.value.status === 429
  );

  console.log(`${rateLimited.length} requests were rate limited`);
}
Avoid sustained rate limit testing in production to prevent IP blocking.

FAQ

Yes. Rate limits are tied to your API key, and all requests using that key count toward your limit regardless of environment.
You’ll receive a 429 status code and must wait before making more requests. Repeated violations may result in temporary IP blocking.
Yes. Upgrade to a Pro plan for higher limits, or contact sales for custom enterprise quotas.
Yes. All requests, including those that return errors, count toward your rate limits and monthly quota.