Skip to content

Free domain intelligence API: what you can get without paying

· 6 min read · Company enrichment

A free domain intelligence API should tell you, for any email address or domain, what kind of domain it is (company, free webmail, disposable, academic, government or ISP), whether the address looks machine-generated, whether the domain exists and can receive mail, and for company domains, who the company is. pingutil does all of that for free, with no credit card and no monthly quota: you get a key from the dashboard and a limit of 60 requests per minute per key. What you don't get is SMTP mailbox verification, bulk endpoints, contact data or registration data like WHOIS and domain age.

This page lists exactly what's included, what isn't, and how it compares to the free tiers of other services as of 2026. If you want the broader definition first, read what domain intelligence is.

What a free domain intelligence API should give you

Before comparing products, here's the checklist we'd use. A useful API answers these in one call:

  1. Category. Is jane@acme.io a business address, a Gmail account, a throwaway inbox, a university or a government agency? This is the decision most signup forms and lead pipelines actually need.
  2. Normalization. Mail.Stripe.com, www.stripe.com and stripe.com should all resolve to the same registrable domain, and internationalized domains should be handled.
  3. Address signals. A real domain can still carry a scripted address like xk7qmz2p@gmail.com. Domain lists can't see that; a local-part check can.
  4. DNS facts. Does the domain exist? Can it receive mail? Is there a website?
  5. Company profile. For business domains: name, industry, size, location, links.
  6. Honest limits. A clear rate limit, a documented error shape, and a way to tell when enrichment failed instead of getting a half-filled profile.

What pingutil gives you for free

Everything below is available on a free key. There is no paid tier with extra fields.

Feature Field(s) Notes
Category category, subcategory company, free, disposable, educational, government, isp, unknown
Normalization domain, domain_unicode, input_normalized Keys on the registrable domain via the Public Suffix List; IDNs converted to punycode
Spam verdict verdict.is_spam, verdict.low_trust, verdict.reason Block on is_spam; review on low_trust
Address signals email_signals is_randomized, randomness_score (0 to 100), is_role_based, is_system_generated, is_sales_outreach, domain_looks_random; null for bare domains
DNS facts domain_signals With check_dns: true: domain_exists, can_receive_email, has_website; cached 7 days
Company profile company Name, legal name, tagline, description, industry, sub-industry, tech categories, founded year, headquarters, employee size estimate, website, LinkedIn, Twitter, Crunchbase, GitHub org, parent company, funding stage, total funding, notable customers, public flag, ticker, confidence
Fast mode skip_enrichment: true Category, signals and verdict in milliseconds, no LLM call

The disposable category is built from the community disposable-email-domains list, about 9,900 domains, re-synced weekly. The free-webmail list covers about 100 provider domains, and the ISP list about 60. Academic and government domains are matched by TLD rules (.edu, .ac.<cc>, .gov, .gouv.<cc> and similar), so subdomains like cs.harvard.edu count. You can browse the disposable domains we track.

Company profiles are generated by an LLM that fills a strict schema, validated before it's stored and cached per registrable domain. If enrichment fails, you get the category back with meta.enrichment_error (or the previous cached profile with meta.served_stale), never a partial profile.

Limits

Limit
Authenticated API (/v1/lookup) 60 requests per minute per key
No-key demo (/v1/demo/lookup) 10 requests per minute per IP
Monthly quota None
Credit card Not required; passwordless sign-in to get a key
Over the limit HTTP 429 with retry_after_seconds

60 a minute is about 86,000 lookups a day per key if you run flat out. For a signup form, that's far more than you need. For a one-off list of a million rows, it's slow, and you should dedupe by domain first.

What it doesn't do

Being clear about this saves you an afternoon:

  • No SMTP mailbox verification. pingutil won't tell you whether jane@acme.io specifically exists. It tells you about the domain and the shape of the address.
  • No bulk or batch endpoint, no webhooks, no official SDK packages. It's one HTTP endpoint; the examples below are the SDK.
  • No person-level or contact data, and no phone or IP lookups.
  • No registration or mail-auth data: no WHOIS/RDAP, domain age, SPF or DMARC.
  • Heuristics can be wrong. Privacy relay aliases (Apple Hide My Email, Firefox Relay, SimpleLogin) can be flagged as randomized, and some real non-English names score as random. can_receive_email treats a null MX record as mail-capable.
  • LLM profiles are weaker for small companies. confidence is the model's own estimate. headquarters.country is free text, so normalize it before grouping.

How free tiers compare

These are free plans we checked on each vendor's own pricing or product page as of 2026. Pricing changes; check the linked page before you commit. The paid products listed here do things pingutil doesn't, and for contact data or person-level enrichment they are the better tool.

Service Free allowance What it's built for Card needed
pingutil No monthly cap; 60 req/min per key Classification, address signals, DNS facts, LLM company profile No
People Data Labs (company data) Up to 100 records a month Company records from a large dataset; contact fields obfuscated on free Check vendor page
Hunter 50 credits a month Email finding and verification, domain search; also offers a company enrichment API Check vendor page
Abstract API (Company Enrichment) 100 requests at 1 request per second Company profile from a domain No, per their page
disposable-email-domains (GitHub) Unlimited; it's a file Disposable domain list only, no API No

Where the others win: People Data Labs and Hunter maintain their own datasets, which are usually better than a model's training data for small and mid-size companies, and they offer contact data on paid plans. Hunter verifies individual mailboxes, which pingutil doesn't. Where pingutil wins: no monthly cap, and classification plus address signals plus a profile in one call. Many teams use both, classifying everything with a free API and spending paid credits only on the leads that matter. We go into that split in free company enrichment APIs: what you actually get.

Quick example in three languages

The no-key demo endpoint is fine for trying it out, or use the live demo in your browser. For real use, swap in /v1/lookup and your key.

curl

curl -X POST https://pingutil.com/v1/lookup \
  -H "Authorization: Bearer $PINGUTIL_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "input": "jane@stripe.com", "check_dns": true }'

JavaScript (Node 18+)

const res = await fetch('https://pingutil.com/v1/lookup', {
  method: 'POST',
  headers: {
    authorization: `Bearer ${process.env.PINGUTIL_KEY}`,
    'content-type': 'application/json',
  },
  body: JSON.stringify({ input: 'jane@stripe.com', check_dns: true }),
});
const data = await res.json();

console.log(data.category);                 // "company"
console.log(data.verdict);                  // { is_spam: false, low_trust: false, reason: null }
console.log(data.company?.name);            // "Stripe"
console.log(data.domain_signals?.can_receive_email);

Python

import os
import requests

r = requests.post(
    "https://pingutil.com/v1/lookup",
    headers={"Authorization": f"Bearer {os.environ['PINGUTIL_KEY']}"},
    json={"input": "jane@stripe.com", "check_dns": True},
    timeout=30,
)
r.raise_for_status()
data = r.json()

print(data["category"], data["verdict"])
if data["company"]:
    print(data["company"]["name"], data["company"]["confidence"])

For screening only, add "skip_enrichment": true and the response comes back in milliseconds without the company profile. The first lookup of an unseen company domain can take a few seconds because of the LLM call; after that it's cached. Go versions and error handling for each language are in the domain lookup API quickstart, and every field is documented in the API reference.

Picking a free API

  • If you need to block throwaway signups or split business from personal emails, a classification API is enough. Use fast mode.
  • If you need company context for routing or scoring, an LLM profile with a confidence score is usually good enough. Check it against 50 domains you already know.
  • If you need to know a specific mailbox exists, or need a person's contact details, you need a paid verification or data provider.
  • Whatever you pick, cache by registrable domain and handle a 429 by waiting retry_after_seconds.

Questions people ask

Is there a free domain intelligence API with no monthly cap?
Yes. pingutil is free and community-run, with no monthly quota and no credit card. It is rate-limited instead: 60 requests per minute per API key, and 10 per minute per IP on the no-key demo endpoint.
What does a free domain intelligence API return?
At minimum a category for the domain (company, free webmail, disposable, educational, government, ISP). Better ones add signals about the email address itself, DNS facts such as whether the domain can receive mail, and a company profile for business domains.
Can a free API replace a paid enrichment provider?
For classification, signup screening and lead routing, often yes. For contact data, person-level enrichment, guaranteed freshness or bulk volume, paid providers are better, and free tiers of those providers are capped at tens to a hundred records a month.
Do I need an API key to try pingutil?
No. The demo endpoint at /v1/demo/lookup works without a key at 10 requests per minute per IP. For anything in production, create a free key in the dashboard.