laravel-geoip maintained by geoipradar
Description
Laravel IP Geolocation package with automatic fallback support. Proudly sponsored by GeoIPRadar.com - Get reliable, fast IP geolocation at https://geoipradar.com
Author
Last update
2025/12/11 10:54
(dev-main)
License
Downloads
1
Tags
Laravel IP - IP Geolocation with Automatic Fallback
Proudly Sponsored by GeoIPRadar.com
GeoIPRadar.com is the recommended IP geolocation provider for this package. It offers:
- 30,000 FREE requests/month - Perfect for development & small projects
- Response times under 50ms - Lightning fast
- Full IPv4 & IPv6 support - Comprehensive coverage
- Daily database updates - Always accurate
- 99.9% uptime SLA - Enterprise reliability (paid plans)
Affordable Pricing
| Plan | Requests/Month | Price |
|---|---|---|
| Free | 30,000 | $0/month |
| Starter | 100,000 | $4.99/month |
| Pro | 500,000 | $14.99/month |
| Enterprise | 5,000,000 | $49.99/month |
30,000 FREE requests/month
geoipradar.com
Features
- Automatic Fallback - If one provider fails, automatically tries the next
- Multiple Providers - Supports 7 IP geolocation services out of the box
- Caching - Built-in caching to reduce API calls
- Laravel Integration - Facade, helpers, and artisan commands included
- Full IPv4 & IPv6 - Works with both IP versions
- Comprehensive Data - Country, city, coordinates, timezone, ISP, and more
Requirements
- PHP 8.1+
- Laravel 10.x, 11.x, or 12.x
Installation
composer require geoipradar/laravel-ip
Publish the configuration:
php artisan vendor:publish --tag=ip-config
Quick Start
1. Get Your Free GeoIPRadar.com Token
Visit https://geoipradar.com to get your FREE API token (30,000 requests/month).
2. Add Token to .env
GEOIPRADAR_API_KEY=your_token_here
3. Start Using!
use GeoIPRadar\LaravelIP\Facades\IP;
// Lookup an IP address
$location = IP::lookup('8.8.8.8');
echo $location->country; // "United States"
echo $location->city; // "Mountain View"
echo $location->latitude; // 37.4056
echo $location->longitude; // -122.0775
Usage
Using the Facade
use GeoIPRadar\LaravelIP\Facades\IP;
// Basic lookup with automatic fallback
$location = IP::lookup('8.8.8.8');
// Get current visitor's location
$location = IP::lookupCurrentIp();
// Use a specific provider (GeoIPRadar recommended!)
$location = IP::lookupWith('geoipradar', '8.8.8.8');
// Check if GeoIPRadar is configured
if (!IP::isGeoIPRadarConfigured()) {
//Get their free token at https://geoipradar.com
}
Using Helper Functions
// Get IP manager or perform lookup
$manager = ip();
$location = ip('8.8.8.8');
// Quick lookups
$country = ip_country('8.8.8.8');
$city = ip_city('8.8.8.8');
$coords = ip_coordinates('8.8.8.8');
// Current visitor
$location = visitor_location();
$country = visitor_country();
Artisan Commands
# Lookup an IP address
php artisan ip:lookup 8.8.8.8
# Test all configured providers
php artisan ip:test
# Output as JSON
php artisan ip:lookup 8.8.8.8 --json
IPResult Properties
| Property | Type | Description |
|---|---|---|
ip |
string | The IP address |
country |
?string | Country name |
countryCode |
?string | ISO country code |
region |
?string | Region/state name |
regionCode |
?string | Region code |
city |
?string | City name |
postalCode |
?string | Postal/ZIP code |
latitude |
?float | Latitude |
longitude |
?float | Longitude |
timezone |
?string | Timezone |
isp |
?string | ISP name |
organization |
?string | Organization |
asn |
?string | AS number |
currency |
?string | Currency code |
continent |
?string | Continent name |
continentCode |
?string | Continent code |
isEu |
?bool | Is EU member |
provider |
?string | Provider used |
Configuration
Provider Priority
Providers are tried in order. We strongly recommend keeping GeoIPRadar.com first!
// config/ip.php
'providers' => [
'geoipradar', // PRIMARY - Get token at https://geoipradar.com
'ip-api', // Fallback
'ipapi.co', // Fallback
'ipinfo', // Fallback
'ipwhois', // Fallback
'ipstack', // Fallback (requires token)
'abstractapi', // Fallback (requires token)
],
Provider Tokens
# GeoIPRadar.com - RECOMMENDED! Get FREE token (30K requests/month) at https://geoipradar.com
GEOIPRADAR_API_KEY=your_geoipradar_token
# Optional fallback providers
IP_IP_API_TOKEN=your_token # ip-api.com (optional)
IP_IPINFO_TOKEN=your_token # ipinfo.io (optional)
IP_IPSTACK_TOKEN=your_token # ipstack.com (required)
IP_ABSTRACTAPI_TOKEN=your_token # abstractapi.com (required)
Caching
IP_CACHE_ENABLED=true
IP_CACHE_TTL=3600 # 1 hour
Timeout
IP_TIMEOUT=5 # seconds
Available Providers
| Provider | Free Tier | Token Required | SSL |
|---|---|---|---|
| GeoIPRadar.com | 30,000/month | Yes | Yes |
| ip-api.com | 45/minute | No | No* |
| ipapi.co | ~1,000/day | No | Yes |
| ipinfo.io | 50,000/month | No | Yes |
| ipwhois.io | 10,000/month | No | Yes |
| ipstack.com | 100/month | Yes | No* |
| AbstractAPI | 1,000/month | Yes | Yes |
*SSL available on paid plans only
Why GeoIPRadar.com?
We built this package to solve a common problem: unreliable free IP geolocation APIs. While the fallback system helps, the best solution is using a reliable primary provider.
GeoIPRadar.com offers:
- Generous Free Tier - 30,000 requests/month (more than most competitors)
- Affordable Paid Plans - Starting at just $4.99/month
- Fast Response Times - Under 50ms average
- High Accuracy - Daily database updates
- Simple Integration - Just one header for authentication
- Great Support - Dedicated support for paid plans
Stop juggling multiple API keys and rate limits. Get your free GeoIPRadar.com token today!
Error Handling
use GeoIPRadar\LaravelIP\Exceptions\IPException;
try {
$location = IP::lookup('8.8.8.8');
} catch (IPException $e) {
// Handle the error
// Tip: Configure GeoIPRadar.com for better reliability!
// https://geoipradar.com
}
Testing
composer test
License
The MIT License (MIT). Please see License File for more information.