Geo-IP Lookup API

City, country or ASN information from any IP, with emoji flags.

What can you do?
Pin-point city & coordinates

Latitude, longitude, region and more in a single call.

Get ASN & ISP instantly

Discover the owner organisation of any IP block.

Emoji flags, time-zone & currency

Perfect for locale personalisation & analytics.

Try Live
99.9 % Uptime
84.4ms Response
20 req/s
0.009 Credits / request

City Lookup


POST https://api.yeb.to/v1/geoip/city
ParameterTypeReq.Description
api_key string yes Your API key
ip string opt IPv4/IPv6 (defaults to caller IP)

Example

curl -X POST https://api.yeb.to/v1/geoip/city \
  -H "Content-Type: application/json" \
  -d '{
  "api_key": "YOUR_KEY",
  "ip": "8.8.8.8"
}'

Response Example

{
  "data": {
    "ip": "8.8.8.8",
    "hostname": "dns.google",
    "city": "Mountain View",
    "region": "California",
    "country": "US",
    "loc": "37.3860,-122.0840",
    "timezone": "America/Los_Angeles",
    "country_flag": "🇺🇸",
    "emoji": "🇺🇸"
  }
}
{"error":"GeoIP lookup failed: invalid IP","code":422}

Response Codes

CodeDescription
200 SuccessRequest processed OK.
400 Bad RequestInput validation failed.
401 UnauthorizedMissing / wrong API key.
403 ForbiddenKey inactive or not allowed.
429 Rate LimitToo many requests.
500 Server ErrorUnexpected failure.

Country Lookup


POST https://api.yeb.to/v1/geoip/country
ParameterTypeReq.Description
api_key string yes Your API key
ip string opt IPv4/IPv6 (defaults to caller IP)

Example

curl -X POST https://api.yeb.to/v1/geoip/country \
  -H "Content-Type: application/json" \
  -d '{
  "api_key": "YOUR_KEY",
  "ip": "1.1.1.1"
}'

Response Example

{
  "ip": "1.1.1.1",
  "country": "AU",
  "country_name": "Australia",
  "isEU": false,
  "country_flag": "🇦🇺",
  "continent": { "code": "OC", "name": "Oceania" }
}
{"error":"GeoIP lookup failed: private range","code":422}

Response Codes

CodeDescription
200 SuccessRequest processed OK.
400 Bad RequestInput validation failed.
401 UnauthorizedMissing / wrong API key.
403 ForbiddenKey inactive or not allowed.
429 Rate LimitToo many requests.
500 Server ErrorUnexpected failure.

ASN Lookup


POST https://api.yeb.to/v1/geoip/asn
ParameterTypeReq.Description
api_key string yes Your API key
ip string opt IPv4/IPv6 (defaults to caller IP)

Example

curl -X POST https://api.yeb.to/v1/geoip/asn \
  -H "Content-Type: application/json" \
  -d '{
  "api_key": "YOUR_KEY",
  "ip": "8.8.4.4"
}'

Response Example

{
  "ip":  "8.8.4.4",
  "org": "Google LLC",
  "asn": 15169,
  "network": "8.8.4.0/24"
}
{"error":"GeoIP lookup failed: database missing","code":422}

Response Codes

CodeDescription
200 SuccessRequest processed OK.
400 Bad RequestInput validation failed.
401 UnauthorizedMissing / wrong API key.
403 ForbiddenKey inactive or not allowed.
429 Rate LimitToo many requests.
500 Server ErrorUnexpected failure.

Frequently Asked Questions

MaxMind GeoLite2 data is typically accurate to city level for 65-70 % of IPv4 addresses worldwide.

Yes. Every request, even those resulting in errors, consumes credits. This is because your credits are strictly tied to the number of requests, regardless of success or failure. However, if the error is clearly due to a platform problem on our end, we’ll recover those credits for you.

Contact us at [email protected]. We take feedback seriously—if your bug report or feature request is meaningful, we can fix or improve the API quickly and grant you 50 free credits as a thank you.

It depends on the API and sometimes even on the endpoint. Some endpoints use data from external sources, which may have stricter limits. We also enforce limits to prevent abuse and keep our platform stable. Check the docs for the specific rate limit for each endpoint.

We operate on a credit system. Buy once—credits never expire. They’re non-refundable units for making API calls (requests). Simple, fair, and you top up only when you need more.

Every HTTP call is one request. Each request consumes a number of credits depending on the endpoint. In most cases, you can make thousands of requests with just one credit—but always check each endpoint for its cost.

Yes. Your credits never expire until you use them, but they are non-refundable.

Credits are non-refundable. Only buy what you need—you can always top-up later. If we screw up and it costs you, we’ll fix it.

Prices are set in credits, not dollars. Each endpoint lists its own cost—see the “Credits / request” badge above. You’ll always know exactly what you’re spending.
← Back to APIs