# host.sh compared: free tier, IPv6, batch and VPN detection

> What host.sh offers with and without a token, next to the questions to ask any IP geolocation API: free tier limits, IPv6, batch, VPN detection and curl.

IP lookup services differ most in their free tier, what an answer contains and how you can call them. This table shows what host.sh does today, and what to check in any other service you consider. It names no other service: their plans change often, so check their own pricing and docs pages.

## Feature table

| Feature | host.sh without a token | host.sh with a token | What to check elsewhere |
|---|---|---|---|
| Your own IP | Yes, free, no sign-up | Yes | Whether a key or sign-up is needed even for your own IP |
| Any other IP | No | Yes | The free monthly or daily quota, and what happens over it |
| Rate limit | 10 requests a minute per IP | No per-minute limit | Per-second, per-minute and monthly limits |
| Batch lookups | No | Up to 100 addresses per request | Whether batch exists and if it costs more per address |
| IPv6 addresses | Yes | Yes | IPv6 lookups and an IPv6 endpoint |
| IPv4 address of a dual-stack client | `ipv4.host.sh` | `ipv4.host.sh` | An IPv4-only endpoint |
| VPN, proxy, Tor and hosting scores | Yes | Yes, by plan | Whether these flags are in the free tier or a paid add-on |
| Network kind (usage) scores | No | By plan | How fresh that data is |
| User agent parsing | The request's own | Any string, with the permission | Whether it is offered at all |
| Terminal use | `curl host.sh`, plain text fields, HTTP and HTTPS | The JSON API with a Bearer header | A plain text answer for scripts |
| Browser use | CORS headers on every JSON answer, errors included | Same | CORS, and whether the key is exposed in the page |
| Errors | JSON, most with a machine-readable `reason` | Same | Documented error codes |
| Reference | [OpenAPI 3.1 spec](https://api.host.sh/v2/openapi.yaml) | Same | A machine-readable spec |
| Getting a token | Not needed | Invite only for now | Sign-up steps and payment details |

Every host.sh cell is documented in the [API docs](https://www.host.sh/docs/index.md), the [rate limits](https://www.host.sh/docs/rate-limits/index.md) and the [response fields](https://www.host.sh/docs/fields/index.md).

## What to test before you choose

- **Accuracy where your users are.** Look up addresses you know, from the regions that matter to you, and compare city and region. City-level IP location is approximate everywhere.
- **Your own answer shape.** Fetch one real answer and check that it has the fields you need and how missing values look. host.sh returns `null` for unknown values.
- **Limits under load.** Read what the service answers over its limit (host.sh: `429` with `Retry-After`) and whether your code handles it.

## FAQ

### Is host.sh free?

Looking up your own IP is free with no sign-up, in the browser, with `curl host.sh` and with the API, at up to 10 API requests a minute. Looking up other addresses needs a token, and tokens are invite only for now.

### Does host.sh support IPv6?

Yes: it answers over IPv4 and IPv6 and looks up both kinds of address. The [IPv6 test](https://www.host.sh/ipv6/index.md) shows your addresses.

### Can host.sh tell if an IP is a VPN?

It scores addresses against VPN, open proxy, Tor and hosting lists. A hit is a signal, not proof; see the [VPN check](https://www.host.sh/vpn-check/index.md).
