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
| Field | Type | Description |
|---|---|---|
email | string | The normalized email that was checked |
disposable | boolean | True if the email uses a disposable/temporary service |
suggestion | string | null | Suggested correction if a typo was detected |
syntax_valid | boolean | True if the email follows valid format |
free_email | boolean | True 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
| Feature | Free Verifier | Full Verification |
|---|---|---|
| Disposable detection | Yes | Yes |
| Typo suggestions | Yes | Yes |
| Syntax validation | Yes | Yes |
| Free provider detection | Yes | Yes |
| Domain MX check | No | Yes |
| Mailbox verification | No | Yes |
| Deliverability score | No | Yes |
| Catch-all detection | No | Yes |
| Role account detection | No | Yes |
| DNS security (SPF/DMARC) | No | Yes |
Need full verification? Use the verify endpoint instead.
Getting Started
- Sign up for free - No credit card required
- Get your API key from the dashboard
- Start making requests to
/api/v1/check
Or try it live on the Free Email Verifier page.