How can I use an API to detect if an IP address is a VPN in R?

To detect if an IP address is a VPN using IP2Location.io in R, you can use the IP2Location.io API to retrieve geolocation and related data.

  1. We'll assume that you have already installed R & RStudio and we won't cover that here. You will also need a paid subscription to the Security plan. Subscribe now!
  2. In the R Console, run the command below to install the dependencies if you don't have them installed.
    R
    
    install.packages(c("httr", "jsonlite"))
    			
  3. Save the below code into a file called test.R on your computer.
    R
    
    library(httr)
    library(jsonlite)
    
    ip = "8.8.8.8"
    key = "YOUR_API_KEY"
    res <- GET("https://api.ip2location.io/",
               query = list(format = "json", ip = ip, key = key))
    
    if (res$status_code == 200) {
      raw <- rawToChar(res$content)
      data <- fromJSON(raw)
      if (!is.null(data$proxy)) {
        if (data$proxy$is_vpn) {
          print(paste0("The IP ", ip, " is a VPN."))
        } else {
          print(paste0("The IP ", ip, " is NOT a VPN."))
        }
      } else{
        print("ERROR: The is_vpn field requires a paid subscription to the Security plan.")
      }
    } else if ((res$status_code == 400) || (res$status_code == 401)) {
      raw <- rawToChar(res$content)
      data <- fromJSON(raw)
      if (!is.null(data$error)) {
        print(paste0("ERROR: ", data$error$error_message))
      } else {
        print(data)
      }
    } else {
      print(paste0("ERROR: ", res$status_code))
    }
    			
  4. In the RStudio, open the test.R, select all of the codes and run them.

This script will check if the specified IP address is a VPN. Make sure to replace 8.8.8.8 with the IP address you want and replace YOUR_API_KEY to your own API key.

Other Languages

Unlock Location Insights For Free

Empower your applications with accurate IP geolocation information now.

Try It for Free