Bonafido
Free API + MCP server · no key

Is this company website real? Know in seconds

Give a domain, URL or email, optionally with the company you expect. Bonafido checks DNS, domain age, mail setup, the live homepage, parked or for-sale pages, contact details, the company-name match, Wikidata and look-alike domains, then gives a verdict, a 0-100 trust score and evidence you can quote.

Who it's for

Anyone who needs this answer fast, from a person to an AI agent.

Finance and procurement

Sanity-check a new vendor or payee domain before paying an invoice.

Onboarding and trust teams

Spot parked, brand-new or look-alike domains at sign-up.

AI agents

Answer "is this the real company site?" with a verdict and quotable evidence.

Sales ops

Drop dead or parked domains from a lead list before outreach.

Try it

One domain with the expected company name, or up to 5 domains.

Prefilled with a real example. Press Verify.

Real sample output

Captured from a live call to this API (trimmed for length).

{
  "results": [
    {
      "input": {
        "domain": "stripe.com",
        "companyName": "Stripe"
      },
      "domain": "stripe.com",
      "registrableDomain": "stripe.com",
      "companyName": "Stripe",
      "country": null,
      "verdict": "verified",
      "trustScore": 81,
      "summary": "stripe.com: verified (trust 81/100) - official website of Stripe per Wikidata, domain 31 years old, email on Google Workspace, contact page found. No risk flags.",
      "riskFlags": [],
      "riskDetails": [],
      "evidence": [
        {
          "source": "dns",
          "text": "MX: Google Workspace; SPF softfail; DMARC p=reject."
        },
        {
          "source": "rdap",
          "text": "Registered 1995-09-12 via SafeNames Ltd. (31 years ago)."
        },
        {
          "source": "homepage",
          "text": "HTTP 200 at https://stripe.com/, title \"Stripe | Financial Infrastructure to Grow Your Revenue\"."
        },
        {
          "source": "website",
          "text": "Found contact page on 2 page(s)."
        },
        {
          "source": "website",
          "text": "Links to company profiles on github, x, youtube, linkedin, facebook, crunchbase, instagram."
        },
        {
          "source": "schema.org",
          "text": "Organization markup names \"Stripe\"."
        },
        {
          "source": "wikidata",
          "text": "Q7624104 \"Stripe\" (Irish-American payment technology company) lists stripe.com as its official website."
        },
        {
          "source": "name-match",
          "text": "Company name vs. domain label 1.00, vs. homepage brand text 1.00."
        }
      ],
      "resolves": true,
      "reachable": true,
      "httpStatus": 200,
      "finalUrl": "https://stripe.com/",
      "redirectsToOtherDomain": false,
      "redirectTarget": null,
      "pageType": "normal",
      "siteName": "Stripe",
      "domainAgeDays": 11336,
      "registeredAt": "1995-09-12T04:00:00Z",
      "registrar": "SafeNames Ltd.",
      "tlsValid": null,
      "tlsDaysLeft": null,
      "tlsIssuer": null,
      "mx": true,
      "mxProvider": "Google Workspace",
      "spf": true,
      "dmarcPolicy": "reject",
      "contact": {
        "contactPage": true,
        "contactPageUrl": "https://stripe.com/contact/sales",
        "contactForm": false,
        "emailFound": false,
        "emails": [],
        "phoneFound": false,
        "phones": [],
        "addressFound": false,
        "address": null
      },
      "socials": {
        "github": "https://github.com/stripe",
        "x": "https://twitter.com/stripe",
        "youtube": "https://youtube.com/@stripe",
        "linkedin": "https://www.linkedin.com/company/stripe",
        "facebook": "https://www.facebook.com/StripeHQ",
        "crunchbase": "https://www.crunchbase.com/organization/stripe",
        "instagram": "https://www.instagram.com/stripehq"
      },
      "nameMatch": {
        "checked": true,
        "score": 1,
        "level": "strong",
        "officialDomains": [
          "stripe.com"
        ],
        "matchesOfficial": true,
        "wikidata": {
          "id": "Q7624104",
          "label": "Stripe",
          "description": "Irish-American payment technology company",
          "url": "https://www.wikidata.org/wiki/Q7624104"
        }
      },
      "lookalike": {
        "suspected": false,
        "of": null,
        "reason": null
      },
      "errors": [],
      "checkedAt": "2026-09-25T23:03:27.862Z",
      "ms": 588
    }
  ],
  "count": 1,
  "verdicts": {
    "verified": 1
  }
}

Limits, plainly

Free and rate limited so it stays fast for everyone. A bulk and scheduled version for big lists is coming to the Apify Store.

  • 10 calls per minute per IP address.
  • Up to 5 domains per call.
  • One contact page is read per domain (none when you send more than 3).
  • About 15 seconds per call at most.
  • Free, no key. Information only, not a guarantee or legal advice.

Use the API

JSON over HTTPS, CORS enabled, no key. GET for quick calls, POST a JSON body for lists. Spec: openapi.json · llms.txt

cURL
curl -s "https://bonafido.cybermax-tools.workers.dev/api/verify?domain=stripe.com&company=Stripe"

# lists: POST a JSON body
curl -s -X POST https://bonafido.cybermax-tools.workers.dev/api/verify \
  -H "content-type: application/json" \
  -d '{"items":[{"domain":"stripe.com","companyName":"Stripe"},"paypa1-secure-login.com"]}'
Python
import requests

r = requests.post("https://bonafido.cybermax-tools.workers.dev/api/verify",
                  json={"items":[{"domain":"stripe.com","companyName":"Stripe"},"paypa1-secure-login.com"]}, timeout=30)
r.raise_for_status()
for row in r.json()["results"]:
    print(row)

Endpoints: /api/verify verify up to 5 business domains (optionally against a company name)

Add it to your AI agent (MCP)

A remote MCP server at https://bonafido.cybermax-tools.workers.dev/mcp (streamable HTTP, no auth). Read-only tools with JSON schemas, so agents know exactly what to send.

MCP config
// Claude Desktop, Cursor, VS Code, any MCP client (remote, no key)
{
  "mcpServers": {
    "bonafido": { "type": "http", "url": "https://bonafido.cybermax-tools.workers.dev/mcp" }
  }
}

# Claude Code
claude mcp add --transport http bonafido https://bonafido.cybermax-tools.workers.dev/mcp

# Tools: verify_domain
# e.g. verify_domain({"domain":"stripe.com","company_name":"Stripe"})
  • verify_domain
    Verify a business domain, URL or email domain: does it resolve, how old is it (RDAP), mail setup (MX/SPF/DMARC), live homepage vs parked/for-sale page, redirects, contact details, company-name match, Wikidata official website and look-alike detection. Returns verdict (verified/likely_legit/unverified/suspicious/not_found), trustScore 0-100, riskFlags and evidence. Pass company_name to check the domain belongs to that company. Up to 5 domains via "domains".

FAQ

Why not just look up WHOIS?

WHOIS (now RDAP) only tells you when a domain was registered. Scams use old, parked or look-alike domains too. Bonafido combines domain age with DNS, mail setup, the live homepage, contact details, the company-name match and Wikidata, and shows the evidence for each point.

What do the verdicts mean?

verified: strong identity match (for example Wikidata lists it as the official site). likely_legit: live, established business site. unverified: not enough signals either way. suspicious: red flags such as a brand-new domain, a parked page or a look-alike of a known brand. not_found: the domain does not resolve.

Is it a guarantee?

No. It is an automated first check with evidence, not a background check, KYC/KYB certification or legal advice. Use it to decide what needs a closer look.

Do you store what I check?

No. Each call is checked live and nothing is saved.

Can I check a whole vendor list or monitor domains?

The free API checks up to 5 domains per call. A bulk and scheduled version (alerts when a verdict changes) is coming to the Apify Store.