BYTETOOLS

Is On Water API

Free land-versus-water API with no key: tell whether any latitude and longitude falls on water or land, in milliseconds. Tested curl example and live response included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Is On Water API?

Is On Water is a free, key-free API that answers a single question about a coordinate: is it on water or on land? It returns a boolean plus, where known, the name of the water feature, and typically responds in a couple of milliseconds.

This is a deliberately tiny API and that is its appeal. Determining whether a point falls in the sea normally means loading a coastline shapefile, building a spatial index and running a point-in-polygon test — a fair amount of machinery for a yes-or-no answer. Here it is one GET with the coordinates in the path.

It earns its place as a validation step more than as a feature. Coordinates that have been swapped, truncated, or defaulted to a placeholder tend to land in the ocean, so a quick water check catches a whole class of data errors before they reach a map. The `reqMs` field in every response reports how long the lookup took server-side, which is usually 0 or 1 — fast enough to run over a batch without much thought. Note that `feature` is frequently "UNKNOWN": the boolean is reliable, the naming of the body of water much less so.

Quick facts

Base URL
https://is-on-water.balbona.me/api/v1
Authentication
No key or account. Free public service run by an individual developer; keep request volumes considerate.
Rate limit
No published quota. It is a single-purpose hobby service, so batch politely rather than hammering it.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Is On Water API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Check whether a coordinate falls on water

GET https://is-on-water.balbona.me/api/v1/get/23.92/-66.7

curl
curl 'https://is-on-water.balbona.me/api/v1/get/23.92/-66.7'
JavaScript (fetch)
const res = await fetch("https://is-on-water.balbona.me/api/v1/get/23.92/-66.7");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://is-on-water.balbona.me/api/v1/get/23.92/-66.7", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "isWater": true,
  "feature": "UNKNOWN",
  "lat": 23.92,
  "lon": -66.7,
  "reqMs": 1
}

Parameters

ParameterTypeRequiredDescription
latpathRequiredLatitude in decimal degrees, as the first path segment after `/get/`. 23.92
lonpathRequiredLongitude in decimal degrees, as the second segment. -66.7

Response fields

isWaterboolean
True when the point falls on water. This is the field to rely on.
featurestring
Name of the water body where the service can identify one. Frequently "UNKNOWN", so treat it as a bonus rather than data.
lat / lonfloat
The coordinates echoed back, which makes batch results self-describing.
reqMsinteger
Server-side lookup time in milliseconds — typically 0 or 1.

What you can build with the Is On Water API

  • Validate user-submitted coordinates before storing or mapping them
  • Catch swapped latitude and longitude pairs, which usually land at sea
  • Filter a dataset of sightings or sensor readings to land or marine subsets
  • Decide whether to run a reverse-geocode call at all, since sea points have no address
  • Sanity-check the output of a geocoder that returned a suspicious point

Common errors and how to fix them

feature is "UNKNOWN"

The point is on water but the service cannot name the body.

Fix: Not a failure — `isWater` is still correct. Do not build logic that depends on the feature name being populated.

Result disagrees with a detailed map near the coast

Coastline data is generalised, so the boundary is approximate at fine scales.

Fix: Expect ambiguity within tens of metres of the shore. For harbour or estuary work, use a high-resolution coastline instead.

404 or a routing error

The path is malformed — it needs both segments after `/get/`.

Fix: The format is `/api/v1/get/{lat}/{lon}` with slashes, not a comma or query parameters.

Inland lakes report as water

Correct behaviour — the dataset includes major inland water bodies, not just oceans.

Fix: If you only care about the sea, combine the answer with a coarse distance-to-coast check or a country lookup.

Is On Water API — frequently asked questions

Is the Is On Water API free?

Yes, free with no key or registration. It is run as a personal project, so keep batches modest rather than treating it as production infrastructure for high volume.

How accurate is it near coastlines?

The underlying coastline is generalised, so results within tens of metres of the shore can go either way. For open ocean or well inland the answer is dependable; for harbour-scale work it is not.

Does it cover lakes and rivers?

Major inland water bodies are included, so large lakes report as water. Narrow rivers are unreliable at this generalisation level.

What is a practical use for this?

Data validation, mostly. Coordinates that have been swapped, truncated to fewer decimals, or left at a default value overwhelmingly land in the sea, so a water check is a cheap filter for bad input before it reaches a map or a routing engine.

Tools that pair with this API

Is On Water is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.