Crate ipgeolocate[][src]

ipgeolocate

Get IP address geolocation information freely.

ipgeolocate = "0.3.4"

Add to Cargo.toml.

Example

Using locator is really quite easy:

use ipgeolocate::{Locator, Service};
// Prints the city where 1.1.1.1 is.
fn main() {
    match Locator::get("1.1.1.1", Service::IpApi) {
      Ok(ip) => println!("ipapi: {} - {} ({})", ip.ip, ip.city, ip.country),
      Err(error) => println!("Error getting data: {}", error),
    };
}

This and more examples are found in the examples directory.

Query Limits

Each service included in this library has a weekly, hourly, or monthly limit.

Some have more free queries, but are less reliable.

Here are the query limits:

 | Service       | Limit                     |
 | ---------     | ------------------------- |
 | ipwhois.app   | 10,000/month              |
 | freegeoip.app | 15,000/hour               |
 | ip-api.com    | 45/minute                 |
 | ipapi.co      | 1,000/day (30,000/month)  |

freegeoip.app is not recommended because it has issues reliably getting the correct latitude and longitude for IP addresses.

Fields

The API can get these fields about IP addresses.

  • ip
  • latitude
  • longitude
  • city
  • region
  • country
  • timezone

Credits

Grant Handy grantshandy@gmail.com APIs included:

  • https://freegeoip.app/
  • https://ipwhois.app/
  • https://ip-api.com/
  • https://ipapi.co/

Structs

Locator

This is the main struct for making requests to the APIs.

Enums

GeoError

A general ipgeolocate error for requests.

Service

Services (apis) that can be used for accessing geolocation data.