Sounder

Click anywhere on the map
--
scroll to zoom / drag to pan / click for depth
API Docs

Sounder API

Depth estimation from Navionics nautical chart tile color analysis. Returns approximate water depth for any coordinate worldwide.

Endpoint

GET https://sounder.windward.parts/?lat={lat}&lon={lon}

Parameters

ParamTypeDescription
latfloatLatitude (-90 to 90)
lonfloatLongitude (-180 to 180)

Response

{
  "depth": 14.2,     // meters, 0 for land, -1 for >100m
  "seabed": "unknown",
  "isLand": false,
  "isWater": true,
  "source": "ocr"    // "ocr" = precise sounding, "color" = estimated
}

Depth values

ValueMeaning
0Land or intertidal zone
1 - 100Estimated depth in meters
-1Deep water (>100m, unshaded on chart)

Example: cURL

curl "https://sounder.windward.parts/?lat=12.48&lon=-61.45"

Example: JavaScript

async function getDepth(lat, lon) {
  const res = await fetch(
    `https://sounder.windward.parts/?lat=${lat}&lon=${lon}`
  );
  return res.json();
}

// Usage
const data = await getDepth(12.48, -61.45);
console.log(data.depth, data.isLand);

Example: Python

import requests

def get_depth(lat, lon):
    r = requests.get(
        "https://sounder.windward.parts/",
        params={"lat": lat, "lon": lon}
    )
    return r.json()

# Usage
data = get_depth(12.48, -61.45)
print(f"Depth: {data['depth']}m, Land: {data['isLand']}")

Example: Batch query (Python)

import requests
from concurrent.futures import ThreadPoolExecutor

points = [
    (12.48, -61.45),   # Carriacou
    (12.44, -61.43),   # South of Carriacou
    (12.50, -61.48),   # West coast
]

def query(coord):
    lat, lon = coord
    r = requests.get(
        "https://sounder.windward.parts/",
        params={"lat": lat, "lon": lon}
    )
    return {**r.json(), "lat": lat, "lon": lon}

with ThreadPoolExecutor(max_workers=5) as pool:
    results = list(pool.map(query, points))

for r in results:
    print(f"({r['lat']}, {r['lon']}): {r['depth']}m")

Notes

Depth is estimated from Navionics chart tile colors at zoom level 14. Accuracy depends on chart coverage and color band resolution. Best for relative depth comparison rather than precise navigation.

Rate limiting: None currently. Tiles are cached server-side. Please be reasonable with batch queries.