Tide

Open JSON API

Tide times for 50 harbours · free · no sign-up

Want to show tide times in your own system? Here is the data on fixed URLs that will not change when the website does. No sign-up, no key, no rate limit — just static JSON files.

Endpoints

https://tide.is/api/v1/stations.jsonAll harbours with coordinates and links.
https://tide.is/api/v1/tides/<id>.jsonTide times for one harbour across the whole forecast horizon — e.g. reykjavik, akureyri, isafjordur.

Response

Events are grouped by date, so there is nothing to search — just look up the day you need:

{
  "station": { "id": "reykjavik", "name": "Reykjavík", "measured": true, … },
  "data":    { "timezone": "UTC", "height_unit": "m", "to": "2028-12-31", … },
  "days": {
    "2027-09-16": [
      { "time": "00:30", "type": "low", "height": 0.46 },
      { "time": "06:32", "type": "high", "height": 3.85 }, …
    ], …
  }
}

Iceland stays on UTC all year, so "time" is local Icelandic time.

Example

Today's tides:

// JavaScript
const r = await fetch("https://tide.is/api/v1/tides/reykjavik.json");
const d = await r.json();
const today = new Date().toISOString().slice(0, 10);
for (const e of d.days[today]) {
  console.log(e.time, e.type, e.height + " m");
}
# curl + jq
curl -s https://tide.is/api/v1/tides/reykjavik.json \
  | jq ".days[\"$(date -u +%F)\"]"

Terms

Stability

The URLs are permanent and harbour ids (reykjavik, akureyri …) stay put. Fields may be added, none are removed.

The forecast currently runs to 2028-12-31 — see data.to in every file. When fresh data arrives the horizon simply extends: more days appear in days. Nothing else changes, so anything reading the API keeps working untouched.

Questions, or need something else?

Need a different shape, other data (sun and moon times) or more locations? Drop a line here — always good to hear what people are building.