Open data
Where seven IP reputation sources agree, and where they don't
Rolling aggregate counts from live IPOK lookups: per-source coverage, flag rate, pairwise disagreement, and leave-one-out agreement — each source measured against its peers rather than against a verdict that already contains its own vote. We report datacenter and residential IPs separately, because the consensus rule uses a different threshold for each. Counts only, no IPs, with JSON and CSV downloads.
Generated 2026-10-13T00:43:24.822Z · cached for 30 minutes · we hide a rate when its denominator is below 30.
Known gap · 2026-09-22 → 2026-09-28 (UTC)
Lookups on which IPHub or vpnapi.io returned a verdict were not recorded: a column constraint sized for eight sources rejected their signatures, and the write failed silently.
Rows in this range under-represent explicit lookups, datacenter IPs and suspicious IPs. IPHub and vpnapi.io read as zero coverage, and ipapi.is coverage, Scamalytics coverage and the suspicious share read lower than they really were. The dropped lookups cannot be recovered; exclude these dates when comparing windows.
Coverage, flag rate, agreement
Coverage is the share of queries in which a source returned a verdict. Flag rate is the share of its own verdicts that carried a risk flag. The last column asks something narrower: how often the source's flag pointed the same way as the score IPOK published (risk ≥ 50). That score is a blend that already contains the source's own vote, which is why the column is labelled self-referential — a source with near-total coverage is partly being scored on its agreement with itself.
The three columns before it remove that loop. For each source we take its peers on the same lookup — every other source that returned a verdict, minus ip-api, whose proxy booleans are derived rather than measured and never count as an independent vote here. Corroborated: of the lookups this source flagged, how many its peers also flagged (at least one of them). Caught by peers: of the lookups where at least 2 peers flagged and this source did rule, how many it flagged too. Leave-one-out agreement: of the lookups it ruled on, how often it matched the plain label "at least 2 peers flagged this". The source being measured is never part of its own reference. This does not make any of them accuracy scores — peers can be wrong together, and a source that is only called on part of our traffic gets a smaller, differently composed denominator.
| Source | Evidence tier | Coverage | Flag rate | proxy/vpn rate | Corroborated | Caught by peers | Leave-one-out agreement | Agrees with verdict (self-referential) | Verdicts |
|---|---|---|---|---|---|---|---|---|---|
| ip-api | Inferred | 98.4% | 37.9% | 37.9% | 87.2% | 56.5% | 67.7% | 66.9% | 62,158 |
| IPQSdormant · no key | Inferred | 0.0% | — | — | — | — | — | — | 0 |
| Scamalytics | Measured | 6.2% | 1.5% | 1.5% | 100.0% | 3.8% | 67.5% | 58.9% | 3,912 |
| proxycheck | Measured | 98.9% | 65.3% | 65.3% | 65.9% | 94.1% | 51.1% | 72.7% | 62,471 |
| AbuseIPDB | Measured | 98.9% | 8.1% | 0.0% | 96.2% | 15.6% | 62.3% | 55.8% | 62,452 |
| ipapi.is | Measured | 68.0% | 40.6% | 0.0% | 85.1% | 43.7% | 53.5% | 70.7% | 42,947 |
| StopForumSpam | Measured | 100.0% | 6.3% | 0.0% | 96.1% | 11.7% | 61.1% | 54.5% | 63,134 |
| IPOK-DB | Measured | 88.7% | 5.8% | 5.2% | 89.2% | 7.8% | 57.5% | 51.1% | 55,987 |
| IPHub | Measured | 40.4% | 0.2% | 0.1% | 100.0% | 0.2% | 30.2% | 23.0% | 25,518 |
| vpnapi.io | Measured | 47.5% | 59.7% | 59.7% | 91.7% | 62.9% | 50.7% | 73.4% | 29,983 |
| Source | Evidence tier | Coverage | Flag rate | proxy/vpn rate | Corroborated | Caught by peers | Leave-one-out agreement | Agrees with verdict (self-referential) | Verdicts |
|---|---|---|---|---|---|---|---|---|---|
| ip-api | Inferred | 98.3% | 2.9% | 2.9% | 37.0% | 36.3% | 96.9% | 86.8% | 96,678 |
| IPQSdormant · no key | Inferred | 0.0% | — | — | — | — | — | — | 0 |
| Scamalytics | Measured | 2.1% | 0.0% | 0.0% | — | 0.0% | 97.4% | 82.4% | 2,110 |
| proxycheck | Measured | 98.2% | 4.5% | 4.5% | 20.8% | 56.1% | 95.5% | 91.3% | 96,580 |
| AbuseIPDB | Measured | 98.1% | 0.9% | 0.0% | 22.0% | 5.9% | 98.4% | 88.2% | 96,429 |
| ipapi.is | Measured | 9.3% | 6.8% | 0.0% | 57.1% | 4.0% | 88.9% | 65.9% | 9,157 |
| StopForumSpam | Measured | 100.0% | 0.2% | 0.0% | 36.0% | 3.5% | 98.9% | 87.5% | 98,283 |
| IPOK-DB | Measured | 88.8% | 0.4% | 0.3% | 57.2% | 2.5% | 98.8% | 86.2% | 87,320 |
| IPHub | Measured | 6.4% | 0.3% | 0.3% | — | 2.8% | 90.1% | 51.0% | 6,303 |
| vpnapi.io | Measured | 6.9% | 4.9% | 4.9% | 86.0% | 7.3% | 89.7% | 57.3% | 6,822 |
- First-partyFirst-party self-declaration: a list of egress addresses published by the party that actually operates the network or service. For the question “does this address belong to them”, nobody is closer to the fact.
- MeasuredMeasured or reported: somebody actually probed this address, or somebody actually reported it — individually probed open proxies, listings corroborated by several independent blocklists, community-submitted abuse reports, and the explicit proxy / VPN / Tor verdict fields of commercial sources. It can be stale or wrong, but it is a statement about this host.
- InferredInferred: derived from the block, the ASN, or the usage class the address sits in — VPN tables painted across an entire provider, “non-residential” hosting / datacenter classifications, proxy booleans synthesized out of other fields. The block-level statement may well be true while the statement about this one address is not.
The tier says where a verdict comes from, not how accurate it is, and nothing in the scoring reads it. IPOK-DB is the awkward row: it is one line here but six tables underneath, spanning all three tiers — Tor's own exit list and Apple's own relay ranges at the top, X4BNet's provider-wide VPN ranges at the bottom. The per-table breakdown is on the methodology page.
Pairwise disagreement
For every pair of sources, this counts only the queries where both returned a verdict, then asks how often exactly one of them raised a flag. A high number means the two look at different evidence. It says nothing about which one is right, and it explains why a single-source score reads differently depending on which vendor a site uses.
| Source A | Source B | Datacenter | both ruled | Residential | both ruled |
|---|---|---|---|---|---|
| proxycheck | IPHub | 77.4% | 25,510 | 42.9% | 6,303 |
| proxycheck | IPOK-DB | 60.7% | 55,394 | 5.0% | 85,868 |
| proxycheck | StopForumSpam | 59.9% | 62,466 | 4.6% | 96,562 |
| proxycheck | AbuseIPDB | 58.3% | 62,441 | 5.0% | 96,417 |
| StopForumSpam | vpnapi.io | 57.9% | 29,980 | 4.9% | 6,821 |
| ipapi.is | vpnapi.io | 57.6% | 29,898 | 12.4% | 6,793 |
| IPHub | vpnapi.io | 57.5% | 25,501 | 4.5% | 6,296 |
| IPOK-DB | vpnapi.io | 56.7% | 27,022 | 5.7% | 6,691 |
| AbuseIPDB | vpnapi.io | 55.8% | 29,978 | 6.5% | 6,822 |
| Scamalytics | vpnapi.io | 53.9% | 2,620 | 3.4% | 1,329 |
| ip-api | vpnapi.io | 51.1% | 29,490 | 16.7% | 6,737 |
| proxycheck | ipapi.is | 50.5% | 42,932 | 32.9% | 9,157 |
| ip-api | IPHub | 50.3% | 25,079 | 15.0% | 6,226 |
| ipapi.is | IPOK-DB | 44.7% | 38,573 | 8.2% | 8,994 |
| ipapi.is | IPHub | 43.7% | 25,470 | 8.1% | 6,283 |
| Scamalytics | proxycheck | 42.9% | 3,911 | 6.4% | 2,110 |
| ip-api | proxycheck | 42.6% | 61,497 | 5.5% | 95,000 |
| ipapi.is | StopForumSpam | 38.4% | 42,943 | 7.3% | 9,154 |
| ip-api | IPOK-DB | 38.0% | 55,136 | 3.2% | 85,819 |
| ip-api | ipapi.is | 37.2% | 42,345 | 20.8% | 9,040 |
| AbuseIPDB | ipapi.is | 36.7% | 42,926 | 8.4% | 9,155 |
| ip-api | StopForumSpam | 34.1% | 62,153 | 2.9% | 96,659 |
| ip-api | AbuseIPDB | 31.9% | 61,478 | 3.3% | 94,855 |
| proxycheck | vpnapi.io | 31.4% | 29,975 | 38.1% | 6,822 |
| ip-api | Scamalytics | 30.4% | 3,867 | 6.9% | 2,078 |
| Scamalytics | ipapi.is | 24.1% | 3,869 | 3.3% | 2,027 |
| AbuseIPDB | IPOK-DB | 12.5% | 55,385 | 1.3% | 85,727 |
| AbuseIPDB | IPHub | 11.0% | 25,515 | 2.1% | 6,303 |
| StopForumSpam | IPOK-DB | 10.3% | 55,982 | 0.5% | 87,302 |
| AbuseIPDB | StopForumSpam | 9.8% | 62,447 | 0.9% | 96,412 |
| Scamalytics | AbuseIPDB | 7.5% | 3,911 | 1.9% | 2,109 |
| StopForumSpam | IPHub | 7.2% | 25,515 | 0.3% | 6,302 |
| IPOK-DB | IPHub | 5.7% | 25,518 | 1.1% | 6,303 |
| Scamalytics | StopForumSpam | 5.6% | 3,911 | 0.9% | 2,108 |
| Scamalytics | IPOK-DB | 4.4% | 3,806 | 0.7% | 2,066 |
| Scamalytics | IPHub | 2.8% | 2,536 | 1.0% | 1,256 |
| ip-api | IPQS | — | 0 | — | 0 |
| IPQS | Scamalytics | — | 0 | — | 0 |
| IPQS | proxycheck | — | 0 | — | 0 |
| IPQS | AbuseIPDB | — | 0 | — | 0 |
| IPQS | ipapi.is | — | 0 | — | 0 |
| IPQS | StopForumSpam | — | 0 | — | 0 |
| IPQS | IPOK-DB | — | 0 | — | 0 |
| IPQS | IPHub | — | 0 | — | 0 |
| IPQS | vpnapi.io | — | 0 | — | 0 |
How many dedicated sources called it proxy or VPN
The consensus rule counts votes from dedicated sources only (everything except ip-api, whose booleans are derived rather than measured). A datacenter IP needs 2 such votes before IPOK treats it as a proxy; a residential IP needs 1. The bars below show the observed distribution of that vote count, so you can see how much of the traffic sits at the threshold instead of taking our word for it.
Download
Both files carry the same numbers as this page. The CSV holds the raw daily signature counts rather than the computed rates, so you can recompute every percentage above without trusting our arithmetic.
Licensed CC BY 4.0. If you cite these numbers, please credit IPOK and link back to this page.
How to cite
The version number tracks the method, not the numbers. It moves when a state definition, a bucket rule or a reporting threshold changes — not when the figures shift, which they do every day as the window rolls. Two pulls carrying the same version are comparable; record the date you took yours.
IPOK. (2026). IPOK IP Reputation Source Agreement Dataset (Version 1.3) [Data set]. Retrieved 2026-10-13, from https://ipok.io/en/data/sources
@misc{ipok-source-agreement,
title = {IPOK IP Reputation Source Agreement Dataset},
author = {{IPOK}},
year = {2026},
version = {1.3},
url = {https://ipok.io/en/data/sources},
urldate = {2026-10-13},
note = {Data set. Licensed CC BY 4.0}
}How it is counted
- ·We compress each counted lookup into one 16-bit signature: eight sources, two bits each, for absent, no flag, reported proxy/vpn, or reported Tor and abuse history without proxy/vpn. The row holds a UTC date, the datacenter or residential bucket, the final verdict as 0 or 1, that signature, and a count.
- ·We split datacenter from residential on "at least one source flagged hosting", the same expression the consensus rule uses when it picks the 2-vote or 1-vote threshold. That differs from the IP-type label shown on a result page, which goes through extra reconciliation.
- ·The final verdict is 1 when the published risk score reaches 50, the boundary between the clean and caution bands we use elsewhere on the site.
- ·We keep rows for 60 days, then delete them lazily. There is no per-query record to delete, because we never write one.
- ·Below 30 observations we print a dash instead of a rate. A percentage drawn from a handful of queries is noise.
The evidence tier column is annotation, not arithmetic. We mixed data of very different provenance into one table and let it all vote the same way: a list the operator of a network publishes about its own exits, a list built by probing addresses one at a time, and a list painted across a provider's whole ASN. On 2026-09-22 that cost us something concrete — all 105,727 iCloud Private Relay egress IPs Apple publishes turned out to sit inside X4BNet's VPN ranges, so every Safari user with Private Relay on was earning a dedicated VPN vote until we let Apple's own list override ours. Labelling the tiers is the first half of the fix; the second half would be letting them carry different weight, and we have not done that. Weights, hard-signal floors and the vote thresholds are byte-identical with and without this column. Whether a first-party statement should outweigh three inferred ones is a question for the calibration loop, and it needs readings we will not have before 2026-10-06.
The scoring rules these numbers describe are documented on the methodology page. For a hand-checked snapshot of specific, reproducible IPs rather than traffic aggregates, see the source-vote study.
What these numbers cannot tell you
- ·This is not site traffic. We reject requests that claim to be a browser while carrying header combinations a browser never sends, first at the edge and again in the API route, both upstream of the counter. Whatever that filter gets wrong, in either direction, lands in the sample.
- ·We drop lookups served while the third-party upstream pool was full. In that state four commercial sources read cache only by design, so counting them would report our own quota policy as a coverage failure of theirs.
- ·A source answering from a stale cache entry still counts as having returned a verdict. Coverage measures whether an answer came back, not how fresh it was.
- ·We call two of the sources on a subset of queries only: Scamalytics when a person looks up a specific address, ipapi.is when a cheap signal already suggests something worth checking. Their coverage figures describe that routing, not the vendor.
- ·IPQS has no API key configured and stays dormant. Its row is here for continuity and reads zero.
- ·Agreement with the final verdict does not measure who is correct. IPOK has no ground truth for whether an address was running a proxy at query time, so do not read either table as a vendor accuracy ranking.
- ·The leave-one-out columns remove a source from its own reference, not from reality. Sources that ingest overlapping blocklists can be wrong in the same direction, and the quorum of 2 is a threshold we picked, not a measurement.
- ·Those columns also reward tracking the crowd rather than contributing to it: a source that echoes what the others already said scores well while adding nothing to the decision. ip-api sits slightly apart here — it is excluded from every peer set, so it has no vote of its own to remove and is measured against one more source than everyone else.
- ·Traffic decides which addresses get measured. The mix is whatever people looked up, which skews toward addresses someone already suspected.
Source names, in signature bit order: ip-api, IPQS, Scamalytics, proxycheck, AbuseIPDB, ipapi.is, StopForumSpam, IPOK-DB, IPHub, vpnapi.io.