Reading usage_type: 20 Network Scene Codes That Aren't a Risk Verdict
A usage_type of IDC is not a reason to refuse a customer, and DYN is not a reason to trust one. On IP99 by ThreatHunter, network.usage_type is a network scene code: what kind of network the address sits on. It is not a r
A usage_type of IDC is not a reason to refuse a customer, and DYN is not a reason to trust one. On IP99 by ThreatHunter, network.usage_type is a network scene code: what kind of network the address sits on. It is not a risk verdict, not attacker probability, and not a synonym for hosting or proxy.
This walkthrough stays on free, no-key GET /v1/ip/{ip}. JSON samples were verified on 11 November 2026 UTC. Notes: IP99, API, IP location, IP risk score.
What usage_type is (and what it is not)
The free lookup returns a 0β100 risk.score for freshness and strength of verifiable risk evidence, not attacker probability. risk.level follows the score (0 β none, 1β29 β low, 30β69 β medium, 70β100 β high). Signals appear only when they hit. Branch on evidence_state (active / stale / none) before the score: 0 + none is a coverage gap, not a clean bill of health.
network.usage_type is passed through unchanged when the scene database covers the block. Official docs list 20 codes they have a localised name for. That table is not closed: an unrecognised code is not an error β treat it as unknown rather than dropping the record. A missing usage_type key means unknown, not a zero. Operator names are never returned; the machine identity is network.asn.
| Group | Official codes |
|---|---|
| Access |
DYN residential broadband Β· MOB mobile Β· GTW enterprise gateway / NAT Β· WLA WLAN hotspot Β· DDT dedicated egress |
| Hosting / infra |
IDC datacenter Β· CDN content delivery Β· DNS DNS service Β· ANY anycast Β· IXP internet exchange Β· NET network infrastructure |
| Institution |
EDU education Β· GOV government Β· ORG organisation |
| Special / unrouted |
SAT satellite Β· BOGON reserved / bogon Β· AUR allocated but unrouted Β· RNU routed but unused Β· UND unallocated Β· USE in use |
False equivalents:
-
usage_typeβ a risk score. Scene is the network;risk.signalsandevidence_stateare the observations. Official triage: evidence_state β score/level β signal type β usage_type (thenshare_tieron Pulse). -
IDCβDNSβCDN. A famous resolver may still be labelledIDC; another resolver or a CDN edge may carry a more specific code. -
IDCβproxy. Public DNS and ordinary cloud sit onIDCwith score0every day. The same scene can also host an observed proxy exit. -
DYN/MOBβ clean. Most newly seen proxy-class exits sit in residential or mobile space, so a residential allowlist has no precision against that supply. -
hosting/mobileare attributes derived from usage type, not risk verdicts. Do not ban on those slugs alone.
Free /v1/ip does not return share_tier or evidence[] (Pulse / professional only). Gauge network shape from usage_type: treat MOB / GTW as likely shared and prefer step-up over a hard IP ban.
A famous resolver is IDC, not DNS
curl https://ip99.com/v1/ip/8.8.8.8
Verified 11 November 2026 UTC:
{
"ip": "8.8.8.8",
"computed_at": "2026-11-11T13:13:09Z",
"evidence_state": "none",
"geo": { "continent": "NA", "country": "US", "region": "California", "city": "Mountain View", "tz": "America/Los_Angeles" },
"network": { "asn": 15169, "usage_type": "IDC" },
"risk": { "score": 0, "level": "none", "signals": ["hosting"] }
}
Google Public DNS is a resolver, but the scene code here is IDC, with hosting as a network attribute. Score 0 and evidence_state: none mean no current verifiable proxy-class evidence β not "safe," and not a reason to refuse the address.
A different public resolver, 4.2.2.1 (ASN 3356, Los Angeles), carries DNS in the same snapshot: score 0, evidence_state: none, and no risk.signals key β same job, two scene codes. Also in this snapshot (all score 0, none): 104.16.132.229 is CDN with hosting (ASN 13335); 18.26.0.1 is EDU (ASN 3, Cambridge, Massachusetts). 192.0.2.1 (TEST-NET-1) returns usage_type: BOGON and no ASN; 192.168.1.1 returns HTTP 400 reserved_ip ("private or reserved address has no public risk profile").
Same IDC scene, opposite evidence
curl https://ip99.com/v1/ip/178.20.30.146
Verified 11 November 2026 UTC:
{
"ip": "178.20.30.146",
"computed_at": "2026-11-11T13:13:21Z",
"evidence_state": "active",
"geo": { "continent": "EU", "country": "FR", "region": "Γle-de-France", "city": "Paris", "tz": "Europe/Paris" },
"network": { "asn": 46475, "usage_type": "IDC" },
"risk": { "score": 80, "level": "high", "signals": ["hosting", "osint", "proxy"] }
}
Same IDC + hosting space as the public resolver above, but the slugs here include proxy and osint. Branch on each matched signal, not on the scene. Scores decay β this address scored 84 earlier the same UTC day β so re-curl for a live snapshot.
Most new proxy supply is not in that IDC slice. Official API docs include a residential (DYN) demo whose 17 September 2026 capture carried proxy alone (last octet masked: 86.111.136.x, ASN 15547). An IDC-only blocklist under-covers that majority.
What the weekly capture mix says
Between 4β10 November 2026 (UTC), IP99 captured 10,561,845 new proxy-class exit addresses (+2% vs the previous 7 days). By usage type: 80.0% residential, 12.1% mobile, 3.9% gateway/NAT, 3.2% datacenter, 0.5% education. 59 upstream sources. Figures generated 11 November 2026, 12:36 UTC. Source: proxy-exits. Aggregates only; no address lists.
That is first-party proxy-class observation (proxy, VPN, dial-up pool, cloud phone, or hijacked shared proxy), newly seen in the window, not a global census. More than 92% sit in residential or mobile space. usage_type tells you where the address lives, and how wide a ban would reach, not whether the session is abusive.
A practical branch (evidence_state first)
Generic guidance (not a contract): score 0 β do not stamp "clean"; 1β29 β observe; 30β69 β captcha / throttle / second factor; 70β100 β block only when business cost allows, and not at building scale. Score meaning: IP risk score.
- Read
evidence_state, thenrisk.signals, thennetwork.usage_typeandnetwork.asn. - On
MOBorGTW, assume a wide NAT. Prefer CAPTCHA, rate limits, or a lower weight β one IP ban can be one building or a carrier pool. - On
DYN, do not allowlist the scene. Check whetherproxy,dialup_pool,vpn, orhijacked_proxyisactive. - On
IDC,CDN, orDNSwith onlyhosting(or no signals) andevidence_state: noneorstale, do not treat the scene as guilt.IDCplusactiveproxy/vpnis a different playbook. - If
hijacked_proxyis present: challenge; do not ban the account (the owner is the victim). - Never mark score
0+evidence_state: noneas "trusted clean." Re-query at decision time and storecomputed_at. Treat an unrecognised or missingusage_typeas unknown.
Anonymous quota is 500 lookups/day per client IP (60/min); a free logged-in key raises the daily cap to 5,000/day. Check remaining with GET https://ip99.com/v1/me or the X-Daily-* headers. OpenAPI: https://ip99.com/openapi.json. Pricing: https://ip99.com/en/pricing.
Do not treat IP99 scores as identical to other ThreatHunter datasets β this article only claims what free /v1/ip and the cited product pages document.
Try it
curl https://ip99.com/v1/ip
curl https://ip99.com/v1/ip/8.8.8.8
curl https://ip99.com/v1/ip/4.2.2.1
curl https://ip99.com/v1/ip/178.20.30.146
curl https://ip99.com/v1/me
IP99 is a ThreatHunter product. Use the free lookup to read network scene (usage_type) separately from current risk evidence β before an IDC blocklist drops a public resolver or a residential allowlist waves through proxy supply. Start at https://ip99.com; read IP location, proxy-exits, and https://ip99.com/api.
Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.