IP Detection

IP lookup API

The full verdict for one IP, range or hostname in a single call.

Look up an IP

POST/v1/ip/lookup
API key

Parameters

  • targetstringRequired

    IPv4, IPv6, CIDR range or hostname.

Response fields

  • target.kindstring

    ipv4, ipv6, cidr or hostname.

  • target.ipstring

    Address that was checked. For a hostname, the address it resolved to.

  • reserved.reservedboolean

    True for private, reserved and documentation ranges.

  • verdict.classificationstring

    residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay or unknown.

  • verdict.anonymizedboolean

    True when the network hides the person behind it. Hosting counts, except known infrastructure.

  • verdict.confidencenumber

    Confidence from 0 to 1.

  • verdict.methodstring

    Which signal decided the verdict.

  • verdict.evidencestring[]

    Optional. What the class rests on, such as vpn_server_list, relay_range or known_infra.

  • purityobject | null

    Score breakdown: score, grade, verdict and deductions. Starter and above; null on Free.

  • purity.scoreinteger

    Cleanliness score from 0 to 100. Starter and above; null on Free.

  • purity.gradestring

    S+, S, A, B or C. Starter and above; null on Free.

  • purity.verdictstring

    clean, suspect or dirty. Starter and above; null on Free.

  • purity.deductionsarray

    Points taken off the score, each with a reason. Starter and above; null on Free.

  • networkClassstring

    residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay or unknown.

  • isVpnboolean

    True only for vpn, residential_proxy and tor, never for hosting or relay.

  • isProxyboolean

    True for proxies, including residential proxies.

  • isTorboolean

    True for Tor exit nodes.

  • providerstring | null

    Network owner, when known. Starter and above; null on Free.

  • vpnProviderstring | null

    VPN service on a vpn address (NordVPN, Mullvad...), when known. Starter and above; null on Free.

  • riskScoreinteger

    Risk from 0 to 100.

  • geoobject

    Same shape as the geolocation response.

  • asnobject

    Same shape as the ASN lookup response.

  • whoisobject

    WHOIS record, for hostname targets.

  • degradedstring[]

    Parts of the lookup that failed and were left out.

  • atstring

    When the lookup ran.

  • lockedstring[]

    Dotted paths of the fields sent as null on this plan. Absent on Starter and above.

  • planRequiredstring

    Plan that includes the locked fields. Absent on Starter and above.

curl -X POST https://ipscanner.io/v1/ip/lookup \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target":"8.8.8.8"}'
Response
{
  "target": {
    "raw": "8.8.8.8",
    "kind": "ipv4",
    "ip": "8.8.8.8"
  },
  "reserved": {
    "reserved": false
  },
  "verdict": {
    "classification": "hosting",
    "anonymized": false,
    "confidence": 0.9,
    "method": "org:hosting",
    "evidence": [
      "known_infra",
      "datacenter_range"
    ]
  },
  "purity": {
    "score": 86,
    "grade": "S",
    "verdict": "clean",
    "deductions": [
      {
        "factor": "network_origin",
        "points": 14,
        "detail": "hosting at high confidence"
      }
    ]
  },
  "networkClass": "hosting",
  "isVpn": false,
  "isProxy": false,
  "isTor": false,
  "provider": "GOOGLE",
  "vpnProvider": null,
  "riskScore": 25,
  "geo": {
    "ip": "8.8.8.8",
    "country": "United States",
    "countryCode": "US",
    "city": "",
    "region": "",
    "postalCode": "",
    "latitude": 37.751,
    "longitude": -97.822,
    "timezone": "America/Chicago",
    "accuracyRadius": 1000
  },
  "asn": {
    "ip": "8.8.8.8",
    "asn": "AS15169",
    "name": "GOOGLE",
    "type": "unknown",
    "country": "US"
  },
  "at": "2026-10-06T17:55:29.44292148Z"
}

Try it without a key

GET/v1/demo/{ip}
No key neededAbout 100 a day per IP

Parameters

  • ipstringpathRequired

    IPv4 or IPv6 address.

Response fields

  • target.kindstring

    ipv4, ipv6, cidr or hostname.

  • target.ipstring

    Address that was checked. For a hostname, the address it resolved to.

  • reserved.reservedboolean

    True for private, reserved and documentation ranges.

  • verdict.classificationstring

    residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay or unknown.

  • verdict.anonymizedboolean

    True when the network hides the person behind it. Hosting counts, except known infrastructure.

  • verdict.confidencenumber

    Confidence from 0 to 1.

  • verdict.methodstring

    Which signal decided the verdict.

  • verdict.evidencestring[]

    Optional. What the class rests on, such as vpn_server_list, relay_range or known_infra.

  • purityobject | null

    Score breakdown: score, grade, verdict and deductions. Starter and above; null on Free.

  • purity.scoreinteger

    Cleanliness score from 0 to 100. Starter and above; null on Free.

  • purity.gradestring

    S+, S, A, B or C. Starter and above; null on Free.

  • purity.verdictstring

    clean, suspect or dirty. Starter and above; null on Free.

  • purity.deductionsarray

    Points taken off the score, each with a reason. Starter and above; null on Free.

  • networkClassstring

    residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay or unknown.

  • isVpnboolean

    True only for vpn, residential_proxy and tor, never for hosting or relay.

  • isProxyboolean

    True for proxies, including residential proxies.

  • isTorboolean

    True for Tor exit nodes.

  • providerstring | null

    Network owner, when known. Starter and above; null on Free.

  • vpnProviderstring | null

    VPN service on a vpn address (NordVPN, Mullvad...), when known. Starter and above; null on Free.

  • riskScoreinteger

    Risk from 0 to 100.

  • geoobject

    Same shape as the geolocation response.

  • asnobject

    Same shape as the ASN lookup response.

  • whoisobject

    WHOIS record, for hostname targets.

  • degradedstring[]

    Parts of the lookup that failed and were left out.

  • atstring

    When the lookup ran.

  • lockedstring[]

    Dotted paths of the fields sent as null on this plan. Absent on Starter and above.

  • planRequiredstring

    Plan that includes the locked fields. Absent on Starter and above.

curl https://ipscanner.io/v1/demo/185.220.101.1
Response
{
  "target": {
    "raw": "185.220.101.1",
    "kind": "ipv4",
    "ip": "185.220.101.1"
  },
  "reserved": {
    "reserved": false
  },
  "verdict": {
    "classification": "tor",
    "anonymized": true,
    "confidence": 0.95,
    "method": "tor_set",
    "evidence": [
      "tor_exit_list"
    ]
  },
  "networkClass": "tor",
  "isVpn": true,
  "isProxy": true,
  "isTor": true,
  "riskScore": 100,
  "asn": {
    "ip": "185.220.101.1",
    "asn": "AS60729",
    "name": "Stiftung Erneuerbare Freiheit",
    "type": "unknown",
    "country": "DE"
  },
  "at": "2026-10-08T21:55:08.590700162Z",
  "purity": null,
  "provider": null,
  "vpnProvider": null,
  "geo": {
    "ip": "185.220.101.1",
    "country": "Germany",
    "countryCode": "DE",
    "city": "Brandenburg",
    "region": "Brandenburg",
    "timezone": "Europe/Berlin",
    "latitude": null,
    "longitude": null,
    "postalCode": null,
    "accuracyRadius": null
  },
  "locked": [
    "purity",
    "provider",
    "vpnProvider",
    "geo.latitude",
    "geo.longitude",
    "geo.postalCode",
    "geo.accuracyRadius"
  ],
  "planRequired": "Starter"
}

Your own IP

GET/v1/myip
No key needed

Response fields

  • ipv4string

    Your IPv4 address, when you connected over IPv4.

  • ipv6string

    Your IPv6 address, when you connected over IPv6.

  • countrystring

    Country name.

  • countryCodestring

    Two-letter ISO country code.

  • citystring

    City name.

  • regionstring

    Region or state.

  • latitudenumber

    Latitude.

  • longitudenumber

    Longitude.

  • timezonestring

    IANA timezone.

  • asnstring

    Autonomous system number, such as AS15169.

  • asnNamestring

    Name of the organisation that runs the network.

  • asnTypestring

    hosting, isp, vpn, education, government, mobile or unknown.

curl https://ipscanner.io/v1/myip
Response
{
  "ipv4": "203.0.113.42",
  "country": "Canada",
  "countryCode": "CA",
  "city": "Montreal",
  "region": "Quebec",
  "postalCode": "H1K",
  "latitude": 45.6085,
  "longitude": -73.5493,
  "timezone": "America/Toronto",
  "accuracyRadius": 5,
  "asn": "AS5769",
  "asnName": "VIDEOTRON",
  "asnType": "isp",
  "asnCountry": "CA"
}