ipapi
is a simple, dependency free and lightweight Go package to fetch public IP address information (IPv4 and IPv6) of the current machine or any arbitrary IP address using third-party APIs
- 🔍 Get your machine's public IPv4 and IPv6 addresses separately.
- 🌐 Lookup detailed geolocation and network info for any IP address.
- ⚡ Uses two fast APIs:
ipify.org
for IP fetching, andipquery.io
for metadata. - 📦 Simple to use, easy to integrate.
go get github.com/ali-hasehmi/ipapi
package main
import (
"github.com/ali-hasehmi/ipapi"
"log"
)
func main(){
ipv4, err := ipapi.QueryOwnIPv4()
if err != nil {
log.Fatalln("error finding ipv4:", err)
}
ipv6, err := ipapi.QueryOwnIPv6()
if err != nil {
log.Fatalln("error finding ipv4:", err)
}
if ipv4 == "" {
ipv4 = "none"
}
if ipv6 == ""{
ipv6= "none"
}
log.Printf("your ipv4: %v\n",ipv4)
log.Printf("your ipv6: %v\n",ipv6)
}
package main
import (
"encoding/json"
"log"
"github.com/ali-hasehmi/ipapi"
)
func main() {
info, err := ipapi.QueryOwnIPInfo()
if err != nil {
log.Fatal(err)
}
b, err := json.MarshalIndent(info, "", "\t")
if err != nil {
log.Fatalln(info)
}
log.Println(string(b))
}
package main
import (
"encoding/json"
"log"
"github.com/ali-hasehmi/ipapi"
)
func main() {
info, err := ipapi.QueryIPInfo("1.1.1.1")
if err != nil {
log.Fatalln(err)
}
b, err := json.MarshalIndent(info, "", "\t")
if err != nil {
log.Fatalln(info)
}
log.Println(string(b))
}
- This package uses the ipvifiy.org and ipquery.io APIs
- Inspired by Similiar Go package ipapi-go.