Docs/Guides

Free Email Verifier

Detect disposable emails and catch typos with our free API endpoint.

The Free Email Verifier is a lightweight API endpoint designed to catch the most common email problems: disposable addresses and typos. It's perfect for form validation and keeping fake signups out of your database.

What's Included

The free verifier checks for:

  • Disposable emails - Detects throwaway addresses from thousands of temporary email providers
  • Typo detection - Suggests corrections for common misspellings like @gamil.com
  • Syntax validation - Ensures the email follows proper formatting rules
  • Free provider detection - Identifies addresses from Gmail, Yahoo, Outlook, etc.

Free Tier Limits

  • 50,000 checks per month - Resets automatically on your billing cycle
  • No credit card required - Just sign up and start using
  • No rate limiting - Use as fast as you need

Endpoint

GET https://tinyvalidator.com/api/v1/[email protected]

Request

Authentication

curl "https://tinyvalidator.com/api/v1/[email protected]" \
  -H "Authorization: Bearer YOUR_API_KEY"

Or use a query parameter:

curl "https://tinyvalidator.com/api/v1/[email protected]&api_key=YOUR_API_KEY"

Response

{
  "email": "[email protected]",
  "disposable": true,
  "suggestion": null,
  "syntax_valid": true,
  "free_email": false
}

Response Fields

FieldTypeDescription
emailstringThe normalized email that was checked
disposablebooleanTrue if the email uses a disposable/temporary service
suggestionstring | nullSuggested correction if a typo was detected
syntax_validbooleanTrue if the email follows valid format
free_emailbooleanTrue if using a free provider (Gmail, Yahoo, etc.)

Code Examples

TypeScript

interface CheckResponse {
  email: string;
  disposable: boolean;
  suggestion: string | null;
  syntax_valid: boolean;
  free_email: boolean;
}

async function checkEmail(email: string): Promise<CheckResponse> {
  const response = await fetch(
    `https://tinyvalidator.com/api/v1/check?email=${encodeURIComponent(email)}`,
    {
      headers: {
        'Authorization': `Bearer ${process.env.TINYVALIDATOR_API_KEY}`,
      },
    }
  );

  if (!response.ok) {
    throw new Error(`Check failed: ${response.status}`);
  }

  return response.json();
}

Form Validation

async function validateSignupEmail(email: string) {
  const result = await checkEmail(email);

  // Check for typos first - help the user fix their mistake
  if (result.suggestion) {
    return {
      valid: false,
      error: `Did you mean ${result.suggestion}?`,
      suggestion: result.suggestion
    };
  }

  // Block invalid syntax
  if (!result.syntax_valid) {
    return {
      valid: false,
      error: 'Please enter a valid email address'
    };
  }

  // Block disposable emails
  if (result.disposable) {
    return {
      valid: false,
      error: 'Please use a permanent email address'
    };
  }

  return { valid: true };
}

React Hook Example

import { useState } from 'react';

function useEmailCheck() {
  const [isChecking, setIsChecking] = useState(false);
  const [result, setResult] = useState<CheckResponse | null>(null);

  async function check(email: string) {
    setIsChecking(true);
    try {
      const response = await fetch(
        `/api/v1/check?email=${encodeURIComponent(email)}`,
        { headers: { 'Authorization': `Bearer ${API_KEY}` } }
      );
      const data = await response.json();
      setResult(data);
      return data;
    } finally {
      setIsChecking(false);
    }
  }

  return { check, isChecking, result };
}

Use Cases

1. Signup Form Validation

Prevent fake accounts by checking emails before creating users:

async function handleSignup(formData: FormData) {
  const email = formData.get('email') as string;
  const check = await checkEmail(email);

  if (check.disposable) {
    return { error: 'Disposable emails are not allowed' };
  }

  // Continue with signup...
}

2. Lead Capture Forms

Keep your marketing list clean:

async function captureEmail(email: string) {
  const check = await checkEmail(email);

  if (!check.syntax_valid || check.disposable) {
    // Don't add to list
    return;
  }

  // Add to email list
  await addToMailingList(email);
}

3. Real-time Input Validation

Show feedback as users type:

const debouncedCheck = debounce(async (email: string) => {
  if (!email.includes('@')) return;

  const result = await checkEmail(email);

  if (result.suggestion) {
    showSuggestion(`Did you mean ${result.suggestion}?`);
  } else if (result.disposable) {
    showWarning('Please use a permanent email');
  }
}, 300);

Free vs Full Verification

FeatureFree VerifierFull Verification
Disposable detectionYesYes
Typo suggestionsYesYes
Syntax validationYesYes
Free provider detectionYesYes
Domain MX checkNoYes
Mailbox verificationNoYes
Deliverability scoreNoYes
Catch-all detectionNoYes
Role account detectionNoYes
DNS security (SPF/DMARC)NoYes

Need full verification? Use the verify endpoint instead.

Getting Started

  1. Sign up for free - No credit card required
  2. Get your API key from the dashboard
  3. Start making requests to /api/v1/check

Or try it live on the Free Email Verifier page.