SkipSend
Free & No API Key Needed

Disposable Email Detection API

Block disposable and temporary email signups with a single HTTP request. Free to use, no API key required.

Free
No API key needed
2,000
Requests / IP / month
1 req/s
Rate limit per IP

Quick Start

Make a GET request to check any email address or domain:

GET
curl "https://skipsend.com/api/v1/check/[email protected]"
Response
{
  "domain": "tempmail.com",
  "skip": true,
  "disposable": true,
  "provider": "Temp Mail",
  "no_mx": false,
  "cf_routed": false
}

Endpoint

GET https://skipsend.com/api/v1/check/

Query Parameters

ParameterTypeRequiredDescription
emailstringYesEmail address or domain

Response Fields

FieldTypeDescription
domainstringThe domain that was checked
skipbooleantrue if you should reject signups from this domain — set when any of disposable, no_mx, or cf_routed is true
disposablebooleantrue if the domain is a known disposable/temporary email provider
providerstring | nullDisposable provider name, or null
no_mxbooleantrue if the domain has no MX records and cannot receive email
cf_routedbooleantrue if the domain uses Cloudflare Email Routing

Examples

Check an email address

Request
curl "https://skipsend.com/api/v1/check/[email protected]"
Response — 200
{
  "domain": "guerrillamail.com",
  "skip": true,
  "disposable": true,
  "provider": "Guerrilla Mail",
  "no_mx": false,
  "cf_routed": false
}

Check a domain

Request
curl "https://skipsend.com/api/v1/check/?email=gmail.com"
Response — 200
{
  "domain": "gmail.com",
  "skip": false,
  "disposable": false,
  "provider": null,
  "no_mx": false,
  "cf_routed": false
}

Python

python
import requests

resp = requests.get("https://skipsend.com/api/v1/check/", params={"email": "[email protected]"})
data = resp.json()

if data["skip"]:
    print(f"Skip {data['domain']}")
else:
    print(f"{data['domain']} looks safe")

JavaScript (fetch)

javascript
const res = await fetch("https://skipsend.com/api/v1/check/[email protected]");
const data = await res.json();
console.log(data.skip ? "Skip" : "Safe");

Error Responses

All errors return a JSON body with error and message fields.

Missing parameter 400

{
  "error": "missing_parameter",
  "message": "The 'email' parameter is required"
}

Invalid email format 400

{
  "error": "invalid_email",
  "message": "Invalid email format"
}

Invalid domain format 400

{
  "error": "invalid_domain",
  "message": "Invalid domain format"
}

Rate Limits

  • 2,000 requests per IP per month — resets on the 1st of each month
  • 1 request per second per IP address
  • No API key or signup required
  • Exceeding the limit returns 429 Too Many Requests

Need higher limits? Contact us for a custom plan.

Try It Live

Enter an email or domain to test the API right here.