$ curl {{ .Host }}
{{ .IP }}
$ http -b {{ .Host }}
{{ .IP }}
$ wget -qO- {{ .Host }}
{{ .IP }}
$ fetch -qo- https://{{ .Host }}
{{ .IP }}
$ bat -print=b {{ .Host }}/ip
{{ .IP }}
{{ if .Country }}
$ http {{ .Host }}/country
{{ .Country }}
$ http {{ .Host }}/country-iso
{{ .CountryISO }}
{{ end }}
{{ if .City }}
$ http {{ .Host }}/city
{{ .City }}
{{ end }}
$ http {{ .Host }}/json
{{ .JSON }}
Setting the Accept header to application/json also works.
Always returns the IP address including a trailing newline, regardless of user agent.
$ http {{ .Host }}/ip
{{ .IP }}
{{ if .Port }}
$ http {{ .Host }}/port/8080
{
"ip": "{{ .IP }}",
"port": 8080,
"reachable": false
}
{{ end }}
IPv4 or IPv6 lookup can be forced by using the v4 and v6 subdomains.
Yes, as long as the rate limit is respected. Please limit automated requests to 1 request per minute. No guarantee is made for requests that exceed this limit. They may be rate-limited (with a 429 response code) or dropped entirely.
Yes, the source code and documentation is available on GitHub.