$ 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 }}
{{ if .ASN }}
$ http {{ .Host }}/asn
{{ .ASN }}
{{ if .ASNOrg }}
Looks like you're with {{ .ASNOrg }}
{{ end }} {{ end }}
$ http {{ .Host }}/json
{{ .JSON }}
Setting the Accept: application/json header also works as expected.
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 }}
As of 2018-07-25 it's no longer possible to force protocol using
the v4 and v6 subdomains. IPv4 or IPv6 still can be forced
by passing the appropiate flag to your client, e.g curl -4
or curl -6.
Yes, as long as the rate limit is respected. The rate limit is in place to ensure a fair service for all.
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 status code, or dropped entirely.
Yes, the source code and documentation is available on GitHub.