BusinessMCP

Developers

IP-to-Company API: How to Evaluate One Before You Buy

Every IP-to-company API returns a name for most addresses. The question is whether the name is the visitor. Here is how to read the answer, which networks should never be named, and a benchmark you can run on a day of your own logs.

By the BusinessMCP team11 min readSeptember 28, 2026
IP-to-Company API: How to Evaluate One Before You Buy — illustrated overview

Key takeaways

  • Judge an IP-to-company API by its verdicts, not its fill rate. A name for every IP means ISPs, clouds and security vendors are being named as visitors.
  • The organisation that holds an IP range is often not who is behind the request: home ISPs, mobile carriers, clouds, CDN edges and SASE egress all hold addresses their users merely borrow.
  • Benchmark on your own traffic: resolve a day of real client IPs, hand-check the named results, and count ISP and vendor names separately from companies.
  • A realistic company-level rate on B2B traffic is roughly 20–35%. Treat near-total coverage as a red flag, not a feature.

What you are actually buying

An IP-to-company API answers one question about an address: is this network a company’s own, and if so, whose? The mechanics — registry records, routing data, reverse DNS, and why most traffic can never be named — are covered in how visitor identification works. This guide is the buyer’s side: how to tell a good answer from a plausible one before you wire an API into your product.

The core distinction is between a raw registry name and a verdict. Every public IP is registered to someone, so any API can return a name for almost any address. A verdict says whether that name is the visitor. An API that returns only names is handing you the hard part.

The verdicts our ip_lookup returns, and how to treat each
VerdictMeaningTreat as
companyThe evidence says this network is that company’s own; only now is company.domain setA company visit
non_businessISP, mobile carrier, cloud host, VPN or similarUnknown visitor — never a lead
low_confidenceA name exists but the evidence is below our bar; it comes back as name_hint onlyUnknown, optionally shown as a hint
unidentifiedNot enough evidence either wayUnknown
curl https://businessmcp.com/api/hub/v1/ip/17.253.144.10 \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"
{
  "ip": "17.253.144.10",
  "verdict": "company",
  "network_class": "business",
  "company": {
    "name": "Apple Inc.",
    "domain": "apple.com"
  },
  "name_hint": null,
  "confidence": 0.95,
  "country": "US",
  "asn": 714,
  "network": "17.0.0.0/8",
  "sources": [
    "bgp",
    "arin",
    "swip"
  ],
  "flags": {
    "hosting": false,
    "isp_or_mobile": false,
    "cdn_edge": false,
    "secure_egress": false,
    "sase_dedicated": false
  },
  "graph_version": "v20260926"
}

Why the registry holder is often not the visitor

Registries record who holds an address block. That is the right answer about the block and frequently the wrong answer about the person using it. Five classes of network account for most of the gap:

Networks whose holder is not the visitor
NetworkWho holds the rangeWho is actually behind it
Home broadbandThe ISP (a cable or fibre operator)Anyone at home — including your buyer, working remotely
MobileThe carrierAnyone on a phone; addresses are shared through carrier NAT
Cloud and hostingThe cloud providerServers: crawlers, scripts, AI agents fetching pages, VPN exits
CDN edgeThe CDNNobody — you are reading the proxy’s address, not the client’s
SASE / secure egressThe security vendorThat vendor’s customers’ employees, routed through its cloud

SASE is the subtle one. When a company routes staff traffic through a secure-access service (Zscaler, Netskope, Cato Networks or Palo Alto Prisma Access are common examples), the visitor’s IP belongs to the vendor. A registry lookup names the vendor — and an API that passes that through will tell you a security company visited, when it was one of that vendor’s thousands of customers. Our graph flags these ranges (flags.secure_egress, flags.sase_dedicated) and declines to name anyone. It does not mark them as hosting: the visitor is a real person behind a corporate gateway, and should still count as human traffic.

Confidence: ask what the number means

Most APIs return a confidence score. A score is only useful if you know what it is calibrated against, so ask every vendor three things:

  1. 1What evidence moves it? A block registered to a company, corroborated by its own mail servers or DNS, is strong. A name scraped from a free-text registry description is weak.
  2. 2Where is the cut-off? Below some threshold the vendor should stop naming a company. If every score is high, the score is decoration.
  3. 3Does it ever go down for carriers? A telecom operator that registers its consumer ranges under its own brand looks like a company to a naive scorer. The score should know the difference.

We expose the pieces rather than a single opaque number: confidence, the network_class (business, isp, mobile, hosting, vpn, tor, education, government), the sources that support the row, the matched network, and the nightly graph_version. Below our claim threshold a name only ever comes back as name_hint under low_confidence. The rule for consumers is simple: trust company.domain only when the verdict is company.

Benchmark it on your own logs

A vendor’s demo is run on traffic that makes the vendor look good. Your match rate is a property of your traffic mix, so the only benchmark that predicts production is one run on your own addresses.

Export a normal day of real client IPs (deduplicated, bots removed)
Resolve all of them through each API you are evaluating
Tally verdicts: company, carrier/ISP, cloud, SASE, unknown
Hand-check 50 named results per vendor against your CRM and common sense
Compare named-and-correct, not named

Do it with a sample you would be comfortable sending to each vendor, and check the vendor’s terms on how submitted IPs are used.

# 1. Pull a day of real client IPs (the verified client address, never a CDN edge).
# 2. Resolve them 100 at a time and tally the verdicts.
jq -Rn '[inputs] | {ips: .[:100]}' < sample-ips.txt > batch.json

curl -s -X POST https://businessmcp.com/api/hub/v1/ip/bulk \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d @batch.json > results.json

jq -r '.data.results[] | .verdict' results.json | sort | uniq -c
jq -r '.data.results[] | select(.verdict=="company") | [.ip, .company.domain, .network_class, .confidence] | @tsv' results.json

Three numbers matter. Precision on named results: of the companies it named, how many are plausible visitors? Carrier and vendor leakage: how many named results are an ISP, a mobile operator, a cloud or a security vendor dressed up as a prospect? Coverage of what should resolve: of the visits you can independently tie to a company on its own network — a known customer’s office, a signed-in user whose company owns its IP space — how many did it name?

Red flags in vendor claims

Claims to question, and the question to ask
ClaimWhy it is a red flagAsk
“We identify 70%+ of your traffic”Most browsing is from home and mobile lines that name no companyWhat share of those names are ISPs, carriers or clouds?
“Person-level identification, worldwide”Not defensible under EU consent rules; see the GDPR guideWhich countries, and on what legal basis?
A company name for every IPThe raw registry holder, passed through as a verdictShow me your response for a mobile-carrier IP
No confidence or class fieldYou cannot filter what you cannot seeHow do I tell a company network from an ISP in the response?
Match rate quoted without a traffic mixRates depend entirely on whose traffic you sendWhat was the rate on SMB or consumer-heavy sites?

An honest range for company-level identification on B2B traffic is roughly 20–35%, and it falls on SMB and consumer-heavy audiences. We do not publish a match rate for our own API for the same reason: it depends on whose traffic you send.

Cost, freshness and privacy

Our ip_lookup costs 1 credit per address and ip_bulk_lookup resolves up to 100 per call at 1 credit each — charged whether or not a company is named, because “this is a mobile carrier” is an answer too, and one you would otherwise pay someone to work out. The first 1,000 credits a month are free, which is enough for the benchmark above. The graph is rebuilt nightly from public registry, routing and DNS data, so a range that changed hands today can be a day behind; graph_version tells you which build answered.

An IP address can be personal data under the GDPR. Naming the organisation that operates a network is business information, but what you do with it — storing it against a profile, combining it with other identifiers — is your processing. Keep raw IPs only as long as you need them, and try the free reverse IP lookup or the IP intelligence API on a sample before building on either.

Frequently asked questions

How accurate is an IP-to-company API?

It depends on whose traffic you send. Office networks resolve well, while home broadband and mobile lines, which carry most browsing today, name no company at all. On B2B traffic a realistic company-level rate is roughly 20–35%. Measure it on a day of your own logs rather than trusting a headline figure.

Why does a lookup name an ISP or a cloud provider instead of a company?

Because registries record who holds an address block, and for home, mobile, cloud and CDN addresses that is the network operator rather than the visitor. A good API recognises those networks and returns a non-business verdict instead of passing the operator name through as a lead.

What is SASE egress and why should it not be attributed?

Secure-access services route a company’s staff traffic through the security vendor’s cloud, so the visitor’s IP belongs to the vendor. Naming the vendor would credit a security company with a visit from one of its customers. Those ranges should be flagged and left unnamed.

How do I benchmark IP-to-company vendors fairly?

Send every vendor the same day of real client IPs, tally their verdicts, and hand-check a sample of the named results. Count ISP, carrier, cloud and security-vendor names separately from genuine companies, and compare correct named results rather than raw fill rate.

Am I charged when the IP is not a company?

Yes. IP lookups are charged per address whatever the verdict, because identifying an address as a carrier, cloud or VPN is a useful answer in itself, for example for filtering bot traffic.

BM

BusinessMCP Team

Every guide is written from running BusinessMCP on its own platform — the match rates, reply rates, and deliverability lessons are from our own data, not recycled blog folklore. About BusinessMCP

Turn your business into one AI-ready MCP server

Connect your tools, install one tracking script, and expose your unified data to any AI agent through a single secure endpoint.

Get started free