Lookup response fields explained, one by one

What every field in a host.sh lookup answer means: location, time zone, country facts, ISP and ASN, connection type, anonymity and usage scores.

A lookup answer has up to six parts: geo (where), connection (the network), and, for your own IP or with ua=, the parsed user agent in user_agent, client, os and device. Which parts you get depends on your token's plan. Values the API doesn't know are null. Use the paths below with fields= to get only what you need, e.g. fields=geo.country.code,connection.isp.asn; the OpenAPI reference has the same list with types only.

Locations come from the IP address alone. They are approximate and can be the place of the network's equipment rather than of the person; geo.radius says how far off they may be.

geo: location

FieldTypeMeaning
geoobjectWhere the address is, approximately
geo.continentobjectThe continent
geo.continent.idinteger or nullNumeric place id of the continent
geo.continent.codestring or nullTwo-letter continent code: AF, AN, AS, EU, NA, OC or SA
geo.continent.namestring or nullContinent name, in the lang language
geo.countryobjectThe country and facts about it
geo.country.idinteger or nullNumeric place id of the country
geo.country.codestring or nullISO 3166-1 alpha-2 country code, e.g. US
geo.country.namestring or nullCountry name, in the lang language
geo.country.is_eubooleanWhether the country is a member of the European Union
geo.country.flagstring or nullThe flag emoji, e.g. πŸ‡ΊπŸ‡Έ
geo.country.calling_codestring or nullInternational calling code, e.g. +1
geo.country.capitalstring or nullName of the capital, in English
geo.country.tldstring or nullCountry code top-level domain, e.g. .us
geo.country.currencyobject or nullThe country's currency
geo.country.currency.codestringISO 4217 currency code, e.g. USD
geo.country.currency.namestringCurrency name, in English
geo.country.currency.symbolstring or nullCurrency sign, e.g. $
geo.subdivisionobjectThe region: state, province or similar
geo.subdivision.idinteger or nullNumeric place id of the region
geo.subdivision.codestring or nullRegion code, the part after the dash in ISO 3166-2 (CA for US-CA)
geo.subdivision.namestring or nullRegion name, in the lang language
geo.cityobjectThe city
geo.city.idinteger or nullNumeric place id of the city
geo.city.namestring or nullCity name, in the lang language
geo.postal_codestring or nullPostal code of the area, where known
geo.latitudenumber or nullApproximate latitude, in degrees
geo.longitudenumber or nullApproximate longitude, in degrees
geo.radiusinteger or nullAccuracy radius in km around the latitude and longitude

geo.timezone: time zone

FieldTypeMeaning
geo.timezoneobjectThe time zone of the location
geo.timezone.namestring or nullIANA time zone name, e.g. America/Chicago
geo.timezone.offsetinteger or nullMinutes behind UTC, like JavaScript getTimezoneOffset(): UTC-5 is 300, UTC+2 is -120
geo.timezone.utc_offsetstring or nullThe offset from UTC as text, e.g. -05:00
geo.timezone.is_dstboolean or nullWhether daylight saving time is in effect now
geo.timezone.current_timestring or nullLocal date and time at the moment of the answer, ISO 8601 with offset, e.g. 2026-10-26T13:17:15-05:00

connection: network

FieldTypeMeaning
connectionobjectThe address and its network
connection.ipstringThe address that was looked up
connection.versioninteger4 or 6, the IP version
connection.bogonbooleantrue for a private, reserved or otherwise not routable address, such as 10.0.0.1 or fe80::1
connection.hostnamestring or nullThe reverse DNS (PTR) name. Only with hostname=1, e.g. dns.google for 8.8.8.8
connection.typestring or nullKind of connection, e.g. Cable/DSL or Corporate
connection.ispobjectWho runs the network
connection.isp.asninteger or nullAutonomous system number, e.g. 15169
connection.isp.asostring or nullName of the organization the AS is registered to
connection.isp.namestring or nullName of the ISP
connection.isp.organizationstring or nullName of the organization using the address, often the same as the ISP
connection.isp.mccstring or nullMobile country code, for mobile carriers only
connection.isp.mncstring or nullMobile network code, for mobile carriers only

connection.anonymity: VPN, proxy, Tor and more

Each entry has a score from 0 to 1 in steps of 1/16 (0.0625). 0 means the address is not in a known network of that kind, and any score above 0 is a hit. A higher score means more, or more certain, evidence; it is not a probability. The tor, vpn, proxy, dch, cdn and bot lists are updated every 6 hours.

FieldTypeMeaning
connection.anonymityobjectWhether the address is in a known network of each kind
connection.anonymity.torobjectTor exit nodes
connection.anonymity.tor.scorenumber1 for a listed exit node
connection.anonymity.vpnobjectServers of commercial VPN services and ranges known to be VPN exits
connection.anonymity.vpn.scorenumberAbove 0 for a VPN exit. Cloudflare WARP egress scores 0.5, because it also carries ordinary users of a privacy app; Apple iCloud Private Relay is not counted as VPN and scores 0
connection.anonymity.proxyobjectPublic open proxies, tested about every hour
connection.anonymity.proxy.scorenumber0.75 or more for a listed proxy. Many open proxies are compromised home devices: a signal, not proof
connection.anonymity.dchobjectHosting and data center ranges: cloud, VPS and dedicated servers
connection.anonymity.dch.scorenumberAbove 0 for a hosting range
connection.anonymity.dch.namestring or nullThe hosting provider, where known
connection.anonymity.dch.urlstring or nullIts website, where known
connection.anonymity.cdnobjectCDN edge ranges
connection.anonymity.cdn.scorenumberAbove 0 for a CDN edge
connection.anonymity.cdn.namestring or nullThe CDN, where known
connection.anonymity.cdn.urlstring or nullIts website, where known
connection.anonymity.botobjectRanges that search engines, AI crawlers and monitoring services publish for their crawlers
connection.anonymity.bot.scorenumberAbove 0 when the address belongs to a known crawler
connection.anonymity.bot.namestring or nullThe crawler, where known
connection.anonymity.bot.urlstring or nullIts website, where known
connection.anonymity.bot.useragentstring or nullThe token the crawler puts in its User-Agent. Check the request's User-Agent too: a browser in the same range is not the crawler
connection.anonymity.scraperobjectLegacy data, not maintained
connection.anonymity.scraper.scorenumberCurrently 0 for every address
connection.anonymity.ddosobjectLegacy data, not maintained
connection.anonymity.ddos.scorenumberCurrently 0 for every address

connection.usage: kind of network

Scores (0 to 1, as for anonymity) for the kind of organization the network belongs to, each with name and url where known. This is legacy data that has not been updated since 2023: gov, lib, mil and org may be outdated, and com, edu, isp and mob are currently 0 for every address. Not in tokenless answers.

FieldTypeMeaning
connection.usageobjectThe kind of network, by organization type
connection.usage.comobjectCommercial networks
connection.usage.orgobjectNon-profit organizations
connection.usage.eduobjectEducational institutions
connection.usage.libobjectLibraries
connection.usage.govobjectGovernment
connection.usage.milobjectMilitary
connection.usage.ispobjectInternet service providers
connection.usage.mobobjectMobile networks
connection.usage.*.scorenumber0 is not listed; any score above 0 is a hit
connection.usage.*.namestring or nullName of the network or organization, where known
connection.usage.*.urlstring or nullIts website, where known

user_agent, client, os and device

For your own IP these describe the request's own User-Agent and Accept-Language headers; with a token, the ua= and al= parameters. Unknown parts are null.

FieldTypeMeaning
user_agentstringThe User-Agent string that was parsed
clientobjectThe browser, app or library
client.typestring or nullKind of client, e.g. browser or library
client.namestring or nullIts name, e.g. Chrome, Mobile Safari or curl
client.familystring or nullThe family it belongs to, e.g. Safari for Mobile Safari
client.codestring or nullA short code for the client, e.g. CH for Chrome
client.enginestring or nullThe browser engine, e.g. Blink or WebKit
client.urlstring or nullIts website, where known
client.versionobjectIts version, whole and in parts
client.version.stringstring or nullThe version as written, e.g. 8.7.1
client.version.majorstring or nullFirst part of the version
client.version.minorstring or nullSecond part
client.version.patchstring or nullThird part
client.version.buildstring or nullBuild part, where present
client.botobjectSet when the User-Agent is a known bot
client.bot.namestring or nullThe bot's name
client.bot.categorystring or nullKind of bot, e.g. Search bot
client.bot.urlstring or nullIts website
client.bot.producerobjectWho runs it
client.bot.producer.namestring or nullThe company or project
client.bot.producer.urlstring or nullIts website
client.languagesarray of stringsLanguage tags from Accept-Language, in order, e.g. ["de-DE", "de", "en"]. Only when the header or al= is present
osobjectThe operating system
os.namestring or nulle.g. Windows, iOS or Android
os.familystring or nullThe family it belongs to, where known
os.codestring or nullA short code, e.g. AND for Android
os.architecturestring or nullCPU architecture, where the User-Agent says
os.versionobjectIts version: string, major, minor, patch and build, as for client.version
deviceobjectThe device
device.typestring or nulle.g. desktop or smartphone
device.brandstring or nullThe maker, e.g. Apple or Samsung
device.modelstring or nullThe model, where known

This page as Markdown: /docs/fields/index.md