ca4db1889663f0f33293097e5915a1bd4974db39
IP Data API
A simple API for retrieving information about IP addresses.
Prerequisites
- Go 1.20 or higher
Installation
- Clone the repository
- Install dependencies:
go mod tidy
Running the API
go run .
The server will start on port 8080 by default. You can change the port by setting the PORT environment variable.
Configuration
The API can be configured using the following environment variables:
| Variable | Description | Default |
|---|---|---|
PORT |
Port to run the API server | 8080 |
DNS_TIMEOUT_MS |
Timeout for DNS hostname lookups in milliseconds | 500 |
DISABLE_DNS_LOOKUP |
Disable hostname lookups completely for faster response (set to "true" or "1") | disabled |
Example:
DNS_TIMEOUT_MS=300 PORT=3000 go run .
# Run with DNS lookups disabled completely
DISABLE_DNS_LOOKUP=true go run .
API Endpoints
Get IP Information
GET /api/ip/:ip
Example:
GET /api/ip/8.8.8.8
Response:
{
"ip": "8.8.8.8",
"hostname": "dns.google",
"asn": "15169",
"as_name": "Google LLC",
"country_code": "US",
"country": "United States",
"region": "California",
"city": "Mountain View",
"latitude": 37.40599,
"longitude": -122.078514,
"zip_code": "94043",
"time_zone": "-07:00"
}
Performance Optimization
For maximum performance, you can completely disable hostname DNS lookups using the DISABLE_DNS_LOOKUP=true environment variable. This will make all API requests faster, but the hostname field will be empty in the response.
Features
- IP geolocation data (country, region, city, coordinates, timezone)
- ASN information (ASN number and organization name)
- Hostname resolution via reverse DNS lookup (with configurable timeout or ability to disable)
- Support for both IPv4 and IPv6 addresses
- In-memory data storage with efficient binary search lookups
Data Sources
The API uses four data files:
IPv4 Files
IP2LOCATION-LITE-ASN.CSV- ASN information for IPv4 addressesIP2LOCATION-LITE-DB11.CSV- Geolocation information for IPv4 addresses
IPv6 Files
IP2LOCATION-LITE-ASN.IPV6.CSV- ASN information for IPv6 addressesIP2LOCATION-LITE-DB11.IPV6.CSV- Geolocation information for IPv6 addresses
These files are loaded into memory when the API starts. The API automatically detects whether an IP is IPv4 or IPv6 and uses the appropriate dataset.
Description
Languages
Go
58.4%
HTML
41.4%
Batchfile
0.2%