ipgeolocate

Crates.ioipgeolocate
lib.rsipgeolocate
version0.3.6
sourcesrc
created_at2020-11-20 00:09:48.738272
updated_at2023-11-09 19:38:04.239712
descriptionGet IP address geolocation information freely.
homepage
repositoryhttps://github.com/grantshandy/ipgeolocate/
max_upload_size
id314180
size92,123
Grant Handy (grantshandy)

documentation

https://docs.rs/ipgeolocate

README

ipgeolocate

Crates.io API Crates.io

Get IP address geolocation information freely.

ipgeolocate = "0.3.5"

Add to Cargo.toml.

Example

Because ipgeolocate is an async library, you need an async runtime like tokio or async-std to run.

Using ipgeolocate is really quite easy:

use ipgeolocate::{Locator, Service};

// Prints the city where 1.1.1.1 is.
#[tokio::main]
async fn main() {
    let service = Service::IpApi;
    let ip = "1.1.1.1";

    match Locator::get(ip, service).await {
        Ok(ip) => println!("{} - {} ({})", ip.ip, ip.city, ip.country),
        Err(error) => println!("Error: {}", 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)

You can use each of these just by running the function of the same name.

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:

Written with love, in Rust.

Commit count: 53

cargo fmt