What is IP Reputation?
Every IP address on the internet carries a history. Just as a credit score summarizes a person's financial behavior, an IP reputation score summarizes an IP address's observed behavior across the internet.
IP reputation systems aggregate data from thousands of sources — spam traps, honeypots, abuse reports, botnet trackers, and real-time traffic analysis — to produce a single score that answers: how trustworthy is this IP?
Trust Score vs Threat Score
Most reputation APIs return two distinct scores. It's important to understand the difference:
Trust Score (0–100, higher = safer): A holistic measure of trustworthiness. An IP with a trust score of 95 has a clean history, isn't associated with VPNs or proxies, and belongs to a legitimate ISP.
Threat Score (0–100, higher = more dangerous): Measures active threat signals. An IP with a high threat score has been observed scanning ports, sending spam, participating in DDoS attacks, or appearing on blocklists.
Key insight: An IP can have a low trust score without having a high threat score. A VPN exit node, for example, isn't actively malicious — but it's not fully trustworthy either, because it masks the real user's identity.
The Data Sources
Reputation scores are only as good as their inputs. Here's what goes into a typical calculation:
- Blocklists: Spamhaus, AbuseIPDB, Barracuda, and dozens of others
- Honeypot networks: Servers designed to attract and log malicious traffic
- Botnet trackers: C&C server lists and infected host databases
- Abuse reports: ISP and hosting provider complaint data
- Traffic analysis: Behavioral patterns across millions of API calls
- WHOIS and ASN data: Network registration and ownership signals
Practical Thresholds
When implementing IP reputation checks, you'll need to decide on thresholds. Here are starting points that work well for most applications:
| Score Range | Action | Use Case |
|---|---|---|
| 0–30 | Block | Known threats, active attackers |
| 31–60 | Challenge | VPNs, suspicious patterns, require CAPTCHA |
| 61–85 | Monitor | Log for review, apply soft limits |
| 86–100 | Allow | Clean residential and business IPs |
These thresholds should be tuned based on your risk tolerance. A banking app might challenge anything below 80, while a content site might only block below 20.
Implementation Example
Here's a minimal implementation using the ipdata API:
const IPDATA_KEY = 'your-api-key';
async function checkReputation(ip) {
const res = await fetch(
`https://api.ipdata.co/${ip}?api-key=${IPDATA_KEY}&fields=threat`
);
const data = await res.json();
return {
trustScore: data.threat.scores.trust_score,
threatScore: data.threat.scores.threat_score,
isVpn: data.threat.is_vpn,
isTor: data.threat.is_tor,
isProxy: data.threat.is_proxy,
blocklists: data.threat.blocklists
};
}
The key is to check reputation early in your request pipeline — ideally at the edge or load balancer level — so you can reject or challenge bad traffic before it hits your application servers.
Rate of Change
IP reputations are not static. A clean IP can become compromised, and a previously malicious IP can be reassigned to a legitimate user. Good reputation systems account for this by:
- Decaying old signals — a blocklist entry from 6 months ago carries less weight
- Weighting recent behavior — current traffic patterns matter more than historical data
- Considering context — a hosting provider IP behaves differently from a residential IP
This is why real-time API lookups are preferable to static blocklist downloads. The data is always fresh.
Conclusion
IP reputation scoring is a powerful tool in any security stack, but it's not a silver bullet. Use it as one signal among many — combine it with device fingerprinting, behavioral analysis, and user authentication for a layered defense.
The best approach is to start with conservative thresholds, monitor the results, and adjust based on your false positive and false negative rates.