NOAA Tide Predictions: High Low UTC Day Bundles avatar

NOAA Tide Predictions: High Low UTC Day Bundles

Pricing

from $0.00005 / actor start

Go to Apify Store
NOAA Tide Predictions: High Low UTC Day Bundles

NOAA Tide Predictions: High Low UTC Day Bundles

Get official high and low tide predictions for known NOAA coastal stations, in metres relative to MLLW with UTC times and date-bundle pricing.

Pricing

from $0.00005 / actor start

Rating

0.0

(0)

Developer

Michal Pšenčík

Michal Pšenčík

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Get NOAA's official high and low tide predictions for coastal stations you already know, as one bundle per station and UTC day. Every bundle holds the high (H) and low (L) tide times in UTC and the predicted heights in metres relative to the station's Mean Lower Low Water (MLLW), exactly as NOAA wrote them, plus the source URL and a SHA-256 of the raw response. Useful for refreshing a station's coming week into a tide calendar, a photography or fieldwork planner or a scheduling tool, without maintaining API query parameters and units.

Data comes from the NOAA CO-OPS Data API (keyless, public). Tide predictions are computed astronomical tides, not measured water levels: they do not include storm surge, wind or atmospheric effects. Not for navigation or safety decisions. See NOAA's Tides and Currents site for official products, disclaimers and observed water levels.

Input

{
"stationIds": ["8518750"],
"startDate": "2026-10-22",
"endDate": "2026-10-23",
"maxItems": 70
}
  • stationIds: 1 to 10 seven-digit NOAA CO-OPS station IDs, for example 8518750 (The Battery, New York) or 9414290 (San Francisco). IDs only, not URLs. Leading zeros are kept; duplicates are removed and never cost extra. Default: 8518750. Find station IDs on tidesandcurrents.noaa.gov; the actor never searches for stations.
  • startDate: first UTC day, YYYY-MM-DD, from 2020-01-01 to 366 days after the run date. Leave it out for the run's UTC date, resolved once when the run starts.
  • endDate: last UTC day, inclusive. The range is 1 to 7 days. Leave it out for the day after startDate.
  • maxItems: the most bundles to store (1 to 70, default 70), in station order then date order.

Datum (MLLW), units (metres), time zone (GMT/UTC) and interval (high/low) are fixed; input fields for them are rejected rather than silently ignored. Not every station or date has predictions: those come back as free errors or missing days.

Output

One dataset item per station and UTC day with at least one returned high or low tide:

{
"schemaVersion": 1,
"recordId": "noaa-tide-day:8518750:MLLW:gmt:metric:2026-10-22",
"deliveryId": "ef69cf30be10316b56f3aaaee505859351f959547e9fff0f3d240b6e7909e36f",
"observedAt": "2026-10-22T21:36:22.509Z",
"contentHash": "05649d8310f3abb8782481b49e07b0efbc711fa24cc92b6425a9ff70654e503c",
"provenance": [
{
"url": "https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?product=predictions&application=PublicDataSpecResearch&begin_date=20261022&end_date=20261023&datum=MLLW&station=8518750&time_zone=gmt&units=metric&interval=hilo&format=json",
"sha256": "f7b98e976eb8067087ae90d1e79a395cba099bcbaf40ef6d29fedc026288971c"
}
],
"stationId": "8518750",
"date": "2026-10-22",
"datum": "MLLW",
"heightUnit": "m",
"timeZone": "UTC",
"kind": "prediction_not_observation",
"coverage": "source_returned_high_low_predictions",
"predictions": [
{ "dateTime": "2026-10-22T03:49:00Z", "heightMeters": "0.21", "tideType": "L" },
{ "dateTime": "2026-10-22T09:55:00Z", "heightMeters": "1.382", "tideType": "H" },
{ "dateTime": "2026-10-22T16:10:00Z", "heightMeters": "0.288", "tideType": "L" },
{ "dateTime": "2026-10-22T22:07:00Z", "heightMeters": "1.451", "tideType": "H" }
]
}

What the fields mean, and what they do not:

  • predictions lists the events NOAA returned for that UTC day, sorted by time. Days are UTC calendar days, not the station's local days, so an evening local tide can fall on the next UTC date.
  • heightMeters is a decimal string exactly as NOAA wrote it (precision, zero and sign kept, never rounded). It is metres above or below this station's MLLW, not sea level, and not comparable across stations.
  • coverage means the source returned these events. The actor does not check the expected number of tides. A requested day with no returned event is not stored: it is listed as a missing day in the run summary, never as a zero or "no tide" row.
  • recordId is the same for a station and day in every run, so you can upsert on it. contentHash hashes only the station-day content, so a later NOAA model correction changes it. deliveryId identifies this run's delivery. observedAt is when NOAA's response finished; provenance is the exact request with a hash of the raw response.

Export as JSON, CSV or Excel from the dataset tab.

Pricing

Pay per event: $0.0005 per station-day bundle stored plus $0.00005 per run start. The default run (one station, two days) costs $0.00105 in events; one bundle $0.00055; ten $0.00505. Re-running the same station and day bills it again: there is no change detection. Platform usage is billed on top, as shown on the pricing tab.

Free (no item event): missing days, stations with no predictions, invalid stations, source errors, capped work and the run summary. Set a spending limit and the actor stops before a bundle the limit cannot cover.

Run summary and limits

Every run writes a free SUMMARY record to the default key-value store: the resolved input (including default dates), the run status (complete, partial, failed or capped), one outcome per station (delivered, empty, error or not_attempted) with its error code, HTTP status and warnings such as missing_day: <date>, request and byte counts, and firstUndeliveredKey, the first station (8518750) or station day (8518750:2026-10-23) left unstored when a cap or failure stopped the run, so a manual rerun can start there.

  • One request per station, sequential, with at least 1.2 seconds between requests.
  • More than 64 events in a response, or more than 8 on one UTC day, fails that station as unit_limit instead of being cut short. Conflicting events at the same time fail it as identity_conflict.
  • A 403, 429 or block page stops all source requests for the rest of the run; 5xx and timeouts are retried twice. NOAA error messages (including HTTP 200 error envelopes) are free errors, never empty forecasts. An "invalid station" message from NOAA can also mean a NOAA system error, so it is not proof a station is gone.
  • Work stops after 300 seconds, 100 requests or 16 MiB of responses; anything not reached is not_attempted.

Support

Open an issue on the actor's Issues tab with the run ID. Source documentation: NOAA CO-OPS Data API reference.