US NOAA Tide Times Scraper (Predictions & Water Levels) avatar

US NOAA Tide Times Scraper (Predictions & Water Levels)

Pricing

from $1.50 / 1,000 row delivereds

Go to Apify Store
US NOAA Tide Times Scraper (Predictions & Water Levels)

US NOAA Tide Times Scraper (Predictions & Water Levels)

Fetches NOAA tide predictions (high/low tides) and water-level data for US coastal stations. Returns one normalized row per tidal event with station info, timestamps (UTC), values in meters and source URLs. For surf and fishing apps, coastal monitoring and tourism planning.

Pricing

from $1.50 / 1,000 row delivereds

Rating

0.0

(0)

Developer

Steadfetch

Steadfetch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

steadfetch/us-tide-times-extractor

Returns NOAA tide predictions (high/low tides) and water-level measurements for US coastal stations, as JSON. One row per tidal event, with station info, UTC timestamps, values in meters, and source URLs.

What it does

  • Queries the public, keyless NOAA CO-OPS API (api.tidesandcurrents.noaa.gov) for tide predictions or water-level data.
  • Returns one row per predicted high/low tide or water-level measurement: station_id, product, event_type, time, value, unit, datum, source_url, captured_at.
  • Supports two product modes: predictions (high/low tides) and water_level (continuous measurements with H/L detection).
  • Uses plain HTTP + JSON. No browser, no login, no paywall.
  • Validates every row against the dataset schema before it reaches the dataset.
  • Geo-discovery: find stations near a lat/lon coordinate within a radius.

How to use

Run it from the Apify Console or with the CLI:

$apify call steadfetch/us-tide-times-extractor --input='{"stations":["8443970","9414290"]}'

Read the rows from the run's default dataset (JSON, CSV or the API).

Minimum input

{ "stations": ["9414290"] }

With no input the Actor checks the default US stations (8443970 Boston, 9414290 San Francisco) for today.

Input fields

FieldTypeRequiredDefaultDescriptionExample
stationsarrayNo[]NOAA station IDs (7-10 digits). Use lat/lon for geo-discovery instead.["8443970","9414290"]
latnumberNonullLatitude for geo-discovery (requires lon + radiusKm).36.95
lonnumberNonullLongitude for geo-discovery (requires lat + radiusKm).-121.99
radiusKmintegerNo25Radius in km for geo-discovery (1-100).25
productstringNopredictionsNOAA product: predictions or water_level.predictions
datestringNotodayQuery date in YYYY-MM-DD format. Defaults to today for predictions."2026-10-26"
monitorModebooleanNofalseWhen true, only emits rows whose values changed vs knownState.false
knownStateobjectNo{}Maps station IDs to their last known value (for monitor mode).{"9414290":1.521}

Output

Example output

{
"station_id": "9414290",
"station_name": "San Francisco, CA",
"latitude": 37.8063,
"longitude": -122.4659,
"product": "predictions",
"event_type": "H",
"time": "2026-10-26T07:25:00.000Z",
"value": 1.521,
"unit": "m",
"datum": "MLLW",
"source_url": "https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?product=predictions&station=9414290&date=2026-10-26&timezone=gmt&units=metric&format=json",
"captured_at": "2026-10-26T09:00:00.000Z"
}

Output fields

FieldTypeDescription
station_idstringSeven- to ten-digit NOAA station identifier (required).
station_namestring or nullHuman-readable station name.
latitudenumber or nullStation latitude in decimal degrees.
longitudenumber or nullStation longitude in decimal degrees.
productstringpredictions or water_level (required).
event_typestring or nullHigh tide (H) or low tide (L). Predictions only.
timedate-timeUTC ISO 8601 timestamp (required).
valuenumberTide height or water level in meters (required).
unitstringAlways m (metric). Required.
datumstring or nullVertical datum reference (e.g., MLLW).
source_urlstringPublic NOAA URL that returns the same data (required).
captured_atdate-timeUTC timestamp when the data was fetched (required).

Pricing

Pay-per-event: apify-actor-start at 0.00005 USD per run (Apify-recommended default) and apify-default-dataset-item at 1.50 USD per 1,000 results (0.0015 USD per row delivered), plus steadfetch-monitor-check at 0.0004 USD per monitor check (0 results delivered).

Measured cost per 1,000 results: about 0.010 USD (local run of two stations: ~12 rows each, 4 HTTP requests, 8 s at 256 MB and 0.2 USD per GB-hour), so the price leaves about 99% margin.

Works on the Apify free plan - about 3,333 results for the $5 monthly credit.

FAQ

Does the Actor need an API key from NOAA? No. The NOAA CO-OPS datagetter API is public and keyless.

Which stations are available? Any NOAA CO-OPS station in the US and its territories. Use the station list or geo-discovery to find the nearest station to a coordinate.

Can I monitor a station for changes? Yes. Set monitorMode: true and pass knownState mapping station IDs to their last known values. Only changed rows are emitted.

What time zone are the timestamps in? All timestamps are UTC. The NOAA API returns times in local time; the Actor converts to UTC when time_zone=gmt is used.

Can I get water-level data? Yes. Set product to water_level and the Actor returns continuous water-level measurements. H/L extrema are auto-detected from the measurements.

When am I charged? Once per run start and once per row delivered. Monitor checks without new data only charge the monitor-check event.

Maintenance

This Actor is tested daily. Data comes from the NOAA CO-OPS API, a public US federal source with no copyright restrictions (17 U.S.C. section 105). No known rotatable anti-bot patterns; the only rate limit is 1 request/second between calls.

Support

Report bugs or request features through the Apify Store page (Issues tab) of the Actor, or through the Steadfetch actors repository issues. Include the run ID and the input used.