Skip to content
Gurdx

Docs / API reference

Email Scoring

Scores an email address from 0 to 3 for how likely it is to be fake, disposable or abusive.

Overview#

scoring/email evaluates the address passed in email without sending anything to it. It returns a score, a plain-language reason, the booleans isValid, isDisposable, isFree, isRoleBased and isEducational, a blacklisted flag, and a domain block with the domain's age and its MX, SPF, DKIM, DMARC and BIMI status (the same data as Domain Lookup).

When to use it#

  • Block throwaway addresses at signup, trial creation and promo redemption.
  • Decide whether to require email confirmation or extra verification.
  • Clean a mailing list before a campaign to protect your sender reputation.

Reading the result#

The score runs from 0 (clean) to 3 (almost certainly bad). A sensible policy:

  • 0 to 1: accept normally.
  • 2: accept but verify, for example by sending a confirmation link and limiting what the account can do until it is clicked.
  • 3: reject, or send to manual review.

Read the flags to understand why. isDisposable is the strongest abuse indicator. isFree (webmail providers) is normal for consumers and says little by itself, while isRoleBased (info@, support@) means a shared mailbox rather than a person. isEducational marks school or university domains, useful if you offer student pricing. A domain that is new or has no MX record pushes the score up.

Extra signals#

  • suggestion: when the domain looks like a typo of a major provider (gmial.com, hotmial.com, yaho.com, outlok.com, icloud.co, gmail.con), the corrected address, for example ahmed@gmail.com; otherwise null. Show it as "Did you mean...?". A typo domain with no MX scores 3 (Email domain looks like a typo of gmail.com.); one that does receive mail scores at least 2.
  • isGibberish: true when the part before the @ looks randomly generated or keyboard-mashed (xk3j9qz2v, qwerty123, aaaaaa1, a long run of digits). The check is conservative and does not flag ordinary Arabic or Latin names such as mohammed.alqahtani or noura1995. It raises the score to at least 1.
  • normalized: the canonical address for multi-account detection. It is lower-cased, drops +tag suffixes, and removes the dots of Gmail addresses, so A.B+shop@gmail.com becomes ab@gmail.com. The original stays in email.

Notes#

  • Counts as one request. Test mode returns fake data, is free and raises no events.
  • Not part of the Standard plan; available on trial, Premium and pay-as-you-go. Without access you get error 117 (feature_not_available).
  • Custom rules for the email group can test the address, domain and each flag, overwrite the score, or mark the address valid or invalid. Matches are listed in custom_rules_applied.
  • A spam_email event is raised when the score is 2 or higher and is sent to your webhooks.
  • A missing or malformed address returns error 119 (invalid_email_address) with HTTP 200.

Request#

GET https://gurdx.cretip.com/api/scoring/email
  • Authenticate with the key parameter or an Authorization: Bearer header.
  • Counts as 1 request.
  • Available on: Free trial Premium Pay-as-you-go

Parameters#

NameTypeDescription
email
required query
string The email command is used to specify the email you want to validate. Expected values: an email address Sample value: name@domain.com

Every method also accepts format, lang, mode, userID, callback. See Options.

Code samples#

curl -G "https://gurdx.cretip.com/api/scoring/email" \
  --data-urlencode "key=YOUR_API_KEY" \
  --data-urlencode "email=user@example.com"

Response#

Success#

{
    "data": {
        "score": 3,
        "reason": "Email domain is considered dangerous.",
        "isValid": false,
        "isFree": false,
        "isRoleBased": true,
        "isEducational": false,
        "isDisposable": false,
        "blacklisted": false,
        "email": "test@dangerous-domain.com",
        "domain": {
            "name": "dangerous-domain.com",
            "is_dangerous": true,
            "is_spf": false,
            "is_dmarc": false,
            "is_dkim": false,
            "is_mx": false,
            "is_bimi": false,
            "created_at": "2025-02-05",
            "is_new": true
        },
        "custom_rules_applied": {
            "total": 0,
            "rules": []
        },
        "suggestion": null,
        "isGibberish": false,
        "normalized": "test@dangerous-domain.com"
    },
    "status": "success",
    "executionTime": 1
}

Error#

Errors are delivered with HTTP 200 — always check the status field.

{
    "status": "error",
    "code": 101,
    "type": "invalid_key",
    "description": "The API Key is missing or invalid."
}

Response fields#

NameTypeDescription
data.score integer A risk-score from 0 to 3 indicating how risky this email address is (0=safe, 1=low-risk, 2=high-risk, 3=too-risky).
data.reason string The reason behind considering this email address as risky. Note: The value of this property will be empty if the score is 0.
data.isFree boolean Indicates whether the email address is from a free email service provider.
data.isRoleBased boolean Indicates whether the email address is a role-based email address. Role-based email addresses are those that are associated with a particular role or group, such as admin, support, info, etc.
data.isEducational boolean Indicates whether the email address is an educational email address.
data.isValid boolean A boolean value that you can rely on to determine if the email address is 100% safe & valid or not.
data.isDisposable boolean Indicates whether the email address is a disposable email address (also known as Temporary Email Addresses).
data.blacklisted boolean Indicates if the email/domain is blacklisted due to applying custom rules or were found in one of your blacklists.
data.suggestion string|null Corrected address when the domain looks like a typo of a major provider, e.g. ahmed@gmail.com.
data.isGibberish boolean True when the local part looks randomly generated or keyboard-mashed.
data.normalized string Canonical address for multi-account detection (lower-case, +tag removed, Gmail dots removed).
data.domain.name string The full domain name associated with the email address (for example, gmail.com).
data.domain.is_dangerous boolean|null Indicates whether the domain is flagged as dangerous or suspicious, which may suggest a higher risk of fraud or abuse. If this property is set to true, the domain is considered high-risk or potentially malicious. As a result, the isValid property will also be false, indicating that the email address should not be trusted for critical communications or user registrations. It is strongly recommended to block or flag such email addresses in your application workflow.
data.domain.is_spf boolean|null Indicates whether the domain has a valid SPF (Sender Policy Framework) record, which helps prevent email spoofing.
data.domain.is_dmarc boolean|null Indicates whether the domain has a valid DMARC (Domain-based Message Authentication, Reporting, and Conformance) record, which helps protect against email phishing and spoofing.
data.domain.is_dkim boolean|null Indicates whether the domain has a valid DKIM (DomainKeys Identified Mail) record, which verifies the authenticity of the sender's domain.
data.domain.is_mx boolean|null Indicates whether the domain has valid MX (Mail Exchange) records, confirming that it is capable of receiving emails.
data.domain.is_bimi boolean|null Indicates whether the domain has a valid BIMI (Brand Indicators for Message Identification) record, which allows brand logos to be displayed in supported email clients.
data.domain.created_at string|null The date when the domain was first registered or created, if available.
data.domain.is_new boolean|null Indicates whether the domain is new or recently registered (registered within 1 year), which may affect its reputation and trustworthiness.
data.domain object The information associated with the domain name of the email address.
data.custom_rules_applied.total integer The total number of custom rules applied to this request.
data.custom_rules_applied.rules.id string The rule ID as shown in the dashboard (e.g: CR104).
data.custom_rules_applied.rules.title string The rule title you set when creating the rule.
data.custom_rules_applied.rules object The custom rules applied to this request, learn more.
data.custom_rules_applied object The custom rules applied to this request, learn more.
data.status string The response status. Expected values: success, or error.
data.executionTime integer Time spent in milliseconds to process the data.
data object —

Found a mistake? Tell us on the contact page. Contact