NOAA Tide Predictions Scraper avatar

NOAA Tide Predictions Scraper

Pricing

$0.35 / 1,000 tide predictions

Go to Apify Store
NOAA Tide Predictions Scraper

NOAA Tide Predictions Scraper

Get official NOAA CO-OPS tide predictions for one or more stations or geographic points. Choose high and low events or hourly water levels, then receive structured rows with station, time, level, time zone, and NOAA source links.

Pricing

$0.35 / 1,000 tide predictions

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

🌊 NOAA Tide Predictions for Stations and Coastal Points

Marine operators, boaters, anglers, coastal planners, and developers can use this Actor to get official NOAA CO-OPS tide predictions as structured dataset rows. Choose stations or geographic points, set a prediction window and units, and use high and low events or hourly water levels in tide charts, schedules, and coastal tools.

📊 Structured tide prediction rows

Each dataset row describes one predicted high or low tide event or one hourly predicted water level. Rows keep station identity, prediction time, level, datum, units, time-zone context, optional range and next-tide data, and direct NOAA source links.

▶️ Run predictions by station or geographic point

How it works

  1. Choose high and low events or hourly predicted water levels.
  2. Choose official NOAA CO-OPS station IDs or geographic points. A point is matched to its nearest official prediction station, and the row can show the distance.
  3. Set the start and end dates, level units, vertical datum, and station local time or GMT / UTC. These settings apply to every station or point in the run.
  4. Leave maxItems empty to return all available results until the source is exhausted, or set a positive cap across the run.
  5. Run the Actor and open the dataset link in the run output.

⚙️ Input

Input fields

FieldTypeWhat it does
resultTypestringSelects highLow for predicted turning points or hourly for one predicted water level per hour.
discoveryMethodstringChooses whether the run uses official station IDs or geographic points.
stationIdsarray of stringsLists one or more official NOAA CO-OPS station IDs. Each uses the shared dates, result type, units, datum, and time zone.
coordinatesarray of objectsLists one or more latitude and longitude points in decimal degrees. Each point is matched to the nearest official prediction station.
coordinates[].latitudenumberLatitude of a submitted point in decimal degrees, from -90 to 90.
coordinates[].longitudenumberLongitude of a submitted point in decimal degrees, from -180 to 180.
startDatestringSets the first date in the prediction window in YYYY-MM-DD format.
endDatestringSets the last date in the prediction window in YYYY-MM-DD format. Use the same date or a later date than startDate.
unitsstringSelects feet or meters for the chosen level value. Feet and meter values are kept when NOAA provides both.
datumstringSets the vertical datum for predicted levels, such as MLLW. Use a datum supported at the selected station.
timezonestringSelects station local time or gmt / UTC for prediction timestamps. Rows include the station time zone and applied UTC offset.
maxItemsintegerSets an optional positive limit on returned prediction records across the run. Leave it empty to return all available results until the source is exhausted.

Input example

This is the public input from a successful current-beta high and low prediction run. It leaves maxItems empty, so the source can return all available results.

{
"resultType": "highLow",
"discoveryMethod": "stationIds",
"stationIds": [
"9414290"
],
"startDate": "2026-01-01",
"endDate": "2026-01-02",
"units": "feet",
"datum": "MLLW",
"timezone": "local"
}

🧾 Output

Run output

FieldTypeWhat it does
datasetstringLinks to the prediction rows saved by the run.

Open dataset to read the row shapes below. The Actor returns one of these shapes based on resultType.

High and low tide event fields

FieldTypeWhat it does
resultTypestringIdentifies this row as highLow.
stationobjectHolds the official NOAA CO-OPS station identity and location.
station.idstringOfficial NOAA CO-OPS station identifier.
station.namestringOfficial prediction station name.
station.latitudenumberStation latitude in decimal degrees.
station.longitudenumberStation longitude in decimal degrees.
predictionTimestringPredicted high or low event time in the requested time zone, with its UTC offset.
eventTypestringIdentifies the event as high or low.
levelobjectHolds the predicted level, its unit, and its vertical datum.
level.valuenumberPredicted level in the selected unit.
level.unitstringSelected level unit, feet or meters.
level.datumstringVertical reference reported for the level.
level.feetnumberPredicted level in feet when NOAA provides it.
level.metersnumberPredicted level in meters when NOAA provides it.
timeZoneobjectHolds the station time zone and the applied UTC offset.
timeZone.namestringStation time-zone name used for local prediction times.
timeZone.utcOffsetMinutesintegerOffset from UTC applied to predictionTime. GMT or UTC uses zero.
resolutionobjectGeographic point and distance used to find the station when coordinates were submitted.
resolution.requestedPointobjectSubmitted geographic point used for station matching.
resolution.requestedPoint.latitudenumberSubmitted latitude in decimal degrees.
resolution.requestedPoint.longitudenumberSubmitted longitude in decimal degrees.
resolution.distanceKmnumberDistance in kilometers from the submitted point to the resolved station.
nextTideobjectThe next computable high or low tide after this prediction, when available.
nextTide.timestringTime of the next tide in the requested time zone, with its UTC offset.
nextTide.typestringIdentifies the next tide as high or low.
nextTide.levelobjectHolds the next tide level, unit, and vertical datum.
nextTide.level.valuenumberNext tide level in the selected unit.
nextTide.level.unitstringUnit for the next tide value, feet or meters.
nextTide.level.datumstringVertical reference reported for the next tide level.
nextTide.level.feetnumberNext tide level in feet when NOAA provides it.
nextTide.level.metersnumberNext tide level in meters when NOAA provides it.
predictionRangeobjectLowest and highest predicted levels in the returned station window, when computable.
predictionRange.minimumnumberLowest predicted level in the selected unit.
predictionRange.maximumnumberHighest predicted level in the selected unit.
predictionRange.unitstringUnit used for the minimum and maximum levels.
predictionRange.minimumFeetnumberLowest predicted level in feet when NOAA provides it.
predictionRange.maximumFeetnumberHighest predicted level in feet when NOAA provides it.
predictionRange.minimumMetersnumberLowest predicted level in meters when NOAA provides it.
predictionRange.maximumMetersnumberHighest predicted level in meters when NOAA provides it.
provenanceobjectHolds direct official NOAA links for the prediction and station information.
provenance.predictionUrlstringOfficial NOAA URL used for the prediction.
provenance.stationUrlstringOfficial NOAA URL used for station context.

Genuine high and low event row

This complete row comes from the successful current-beta high and low run. It used station 9414290, so the coordinate-only resolution field is not present.

{
"resultType": "highLow",
"station": {
"id": "9414290",
"name": "San Francisco",
"latitude": 37.806305,
"longitude": -122.46589
},
"predictionTime": "2026-01-01T02:25:00-08:00",
"level": {
"value": 3.15,
"unit": "feet",
"datum": "MLLW",
"feet": 3.15,
"meters": 0.96
},
"timeZone": {
"name": "PST",
"utcOffsetMinutes": -480
},
"predictionRange": {
"minimum": -1.659,
"maximum": 7.162,
"unit": "feet",
"minimumFeet": -1.659,
"maximumFeet": 7.162,
"minimumMeters": -0.506,
"maximumMeters": 2.183
},
"provenance": {
"predictionUrl": "https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?application=NOS.COOPS.TAC.TidePredictions&begin_date=20260101&end_date=20260102&datum=MLLW&format=json&interval=hilo&product=predictions&station=9414290&time_zone=lst_ldt&units=english",
"stationUrl": "https://api.tidesandcurrents.noaa.gov/mdapi/prod/webapi/stations/9414290.json"
},
"eventType": "low",
"nextTide": {
"time": "2026-01-01T08:41:00-08:00",
"type": "high",
"level": {
"value": 7.046,
"unit": "feet",
"datum": "MLLW",
"feet": 7.046,
"meters": 2.148
}
}
}

Hourly predicted water level fields

FieldTypeWhat it does
resultTypestringIdentifies this row as hourly.
stationobjectHolds the official NOAA CO-OPS station identity and location.
station.idstringOfficial NOAA CO-OPS station identifier.
station.namestringOfficial prediction station name.
station.latitudenumberStation latitude in decimal degrees.
station.longitudenumberStation longitude in decimal degrees.
predictionTimestringHourly prediction time in the requested time zone, with its UTC offset.
levelobjectHolds the predicted level, its unit, and its vertical datum.
level.valuenumberPredicted level in the selected unit.
level.unitstringSelected level unit, feet or meters.
level.datumstringVertical reference reported for the level.
level.feetnumberPredicted level in feet when NOAA provides it.
level.metersnumberPredicted level in meters when NOAA provides it.
timeZoneobjectHolds the station time zone and the applied UTC offset.
timeZone.namestringStation time-zone name used for local prediction times.
timeZone.utcOffsetMinutesintegerOffset from UTC applied to predictionTime. GMT or UTC uses zero.
resolutionobjectGeographic point and distance used to find the station when coordinates were submitted.
resolution.requestedPointobjectSubmitted geographic point used for station matching.
resolution.requestedPoint.latitudenumberSubmitted latitude in decimal degrees.
resolution.requestedPoint.longitudenumberSubmitted longitude in decimal degrees.
resolution.distanceKmnumberDistance in kilometers from the submitted point to the resolved station.
nextTideobjectThe next computable high or low tide after this prediction, when available.
nextTide.timestringTime of the next tide in the requested time zone, with its UTC offset.
nextTide.typestringIdentifies the next tide as high or low.
nextTide.levelobjectHolds the next tide level, unit, and vertical datum.
nextTide.level.valuenumberNext tide level in the selected unit.
nextTide.level.unitstringUnit for the next tide value, feet or meters.
nextTide.level.datumstringVertical reference reported for the next tide level.
nextTide.level.feetnumberNext tide level in feet when NOAA provides it.
nextTide.level.metersnumberNext tide level in meters when NOAA provides it.
predictionRangeobjectLowest and highest predicted levels in the returned station window, when computable.
predictionRange.minimumnumberLowest predicted level in the selected unit.
predictionRange.maximumnumberHighest predicted level in the selected unit.
predictionRange.unitstringUnit used for the minimum and maximum levels.
predictionRange.minimumFeetnumberLowest predicted level in feet when NOAA provides it.
predictionRange.maximumFeetnumberHighest predicted level in feet when NOAA provides it.
predictionRange.minimumMetersnumberLowest predicted level in meters when NOAA provides it.
predictionRange.maximumMetersnumberHighest predicted level in meters when NOAA provides it.
provenanceobjectHolds direct official NOAA links for the prediction and station information.
provenance.predictionUrlstringOfficial NOAA URL used for the prediction.
provenance.stationUrlstringOfficial NOAA URL used for station context.

Genuine hourly prediction row

This complete row comes from the successful current-beta hourly run. It shows a geographic point resolved to San Francisco and a GMT prediction in meters.

{
"resultType": "hourly",
"station": {
"id": "9414290",
"name": "San Francisco",
"latitude": 37.806305,
"longitude": -122.46589
},
"predictionTime": "2026-01-01T00:00:00+00:00",
"level": {
"value": -0.227,
"unit": "meters",
"datum": "MLLW",
"feet": -0.746,
"meters": -0.227
},
"timeZone": {
"name": "PST",
"utcOffsetMinutes": 0
},
"predictionRange": {
"minimum": -0.436,
"maximum": 2.163,
"unit": "meters",
"minimumFeet": -1.429,
"maximumFeet": 7.096,
"minimumMeters": -0.436,
"maximumMeters": 2.163
},
"provenance": {
"predictionUrl": "https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?application=NOS.COOPS.TAC.TidePredictions&begin_date=20260101&end_date=20260102&datum=MLLW&format=json&interval=h&product=predictions&station=9414290&time_zone=gmt&units=metric",
"stationUrl": "https://api.tidesandcurrents.noaa.gov/mdapi/prod/webapi/stations/9414290.json"
},
"resolution": {
"requestedPoint": {
"latitude": 37.8063,
"longitude": -122.4659
},
"distanceKm": 0.0011552005852531499
},
"nextTide": {
"time": "2026-01-01T06:26:00+00:00",
"type": "high",
"level": {
"value": 1.401,
"unit": "meters",
"datum": "MLLW",
"feet": 4.598,
"meters": 1.401
}
}
}

💳 Pricing

Tide prediction

The Actor charges $0.00035 for each successfully saved normalized tide prediction. The charge applies when a prediction row is returned for a selected station and time window. A run that saves no prediction row has no tide-prediction event to charge.

🔌 Integrations

Call the Actor through the Apify API, then read the dataset link or the dataset API from the run output. Use the saved rows in tide charts, schedules, coastal planning tools, or other data workflows.

For a short visual guide, watch:

❓ FAQ

Can I use geographic coordinates instead of a station ID?

Yes. Choose geographic points and enter latitude and longitude in decimal degrees. Each point is matched to the nearest official NOAA prediction station, and the output can include the requested point and distance.

Can I request hourly predictions?

Yes. Choose hourly to receive one predicted water level for each returned hour. Choose highLow when you need predicted high and low turning points.

Does this return observed water levels or currents?

No. This Actor returns predicted tide events and predicted hourly water levels. It does not return observed or real-time water levels, currents, weather, waves, or swell.

What does the time zone setting change?

local returns station local prediction times. gmt uses GMT / UTC. Each row also includes the station time-zone name and the UTC offset used for the timestamp.

Why are feet and meters both in a row?

The selected unit controls level.value. The row also keeps feet and meter values when NOAA provides both, along with the vertical datum.

What happens when a station does not support my datum?

Use a datum supported at that station, such as MLLW. Datum availability can vary by station.

Can I leave maxItems empty?

Yes. An empty maxItems returns all available results until the source is exhausted. Set a positive value when you need a cap across the run.

Do I need a NOAA API key?

No. The Actor uses NOAA's public service and does not require a buyer-supplied API key or login.

Can I enter a place name instead of a station ID?

No. Use an official NOAA CO-OPS station ID or a geographic point. Natural-language place-name search is not an input option.

📝 Changelog

v0.0 (27-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré