NOAA Buoy Data API - Live Wave Height, Wind & Water Temp avatar

NOAA Buoy Data API - Live Wave Height, Wind & Water Temp

Pricing

from $3.70 / 1,000 buoy observations

Go to Apify Store
NOAA Buoy Data API - Live Wave Height, Wind & Water Temp

NOAA Buoy Data API - Live Wave Height, Wind & Water Temp

Live observations from NOAA NDBC buoys and coastal stations: wave height, dominant period, wind and gusts, water and air temperature, pressure. Give a station id or a lat,lon point and it finds the nearest buoy. Missing readings stay null, never zero, and every row says how old it is.

Pricing

from $3.70 / 1,000 buoy observations

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Live observations from NOAA NDBC buoys and coastal stations: wave height and period, wind and gusts, water temperature, air temperature, pressure, dew point, visibility.

Give it a station id, or just a lat,lon point and it finds the nearest station that is actually publishing right now.

  • No API key, no scraping of a web page, no proxy. US government data, public domain.
  • Both unit systems on every row — metres and feet, m/s and knots, Celsius and Fahrenheit.
  • Latest reading by default, so one station costs one row. Ask for history when you want it.

What this returns that the raw NDBC file does not

NDBC publishes a fixed-width text file per station with two header lines and about 45 days of readings. Everything below is the work this Actor does on top of it.

ColumnWhy it matters
ageMinutes, observedAtA buoy can keep a file online and stop reporting. Station 41001 on 2026-08-31 still served a 340 KB file whose newest reading was 32 days old. Every row says exactly how old it is, in UTC and in minutes, and the run warns when the newest reading is over 6 hours old.
Missing values as nullNDBC writes MM for a missing reading. Turning that into 0 would report a flat calm or no waves. Missing stays missing.
Both unit systemswaveHeightMeters / waveHeightFeet, windSpeedMs / windSpeedKnots, waterTemperatureC / waterTemperatureF, and the same for gusts, air temperature and dew point.
stationName, stationOwner, stationType, latitude, longitudeThe observation file has none of this. It is joined from NDBC's active-station list.
requestedPoint, distanceKmGive "36.8,-122.4" and you get the nearest station and how far away it is.
Only stations with dataNDBC lists 1,351 active stations but only 943 publish a standard meteorological file (DART tsunami buoys, TAO moorings and many fixed sites never do). A naive "nearest station" lands on one of the other 409 about 7% of the time and returns nothing. Chicago (41.88,-87.61) resolves here to CNII2 at 2.67 km with live data, not to the empty station 1.58 km away.
Column names read from the headerThe parser matches NDBC's own column header line instead of counting characters, so a change in the file's layout cannot silently shift wind into the wave column.

Input

FieldTypeDefaultMeaning
locationsarray["44013"]NDBC station ids (44013, TPLM2) and/or points ("36.8,-122.4").
latestOnlybooleantrueOne row per station: the newest reading. Turn off for history.
hoursinteger24How far back when latestOnly is off. 1 to 1100 (NDBC keeps about 45 days). NDBC buoys report about every 10 minutes; fixed coastal stations usually once an hour.
maxRowsPerStationinteger200Upper bound per station so a long window cannot run up a bill.
maxDistanceKminteger300If the nearest station with data is further than this, the location is reported and not charged.
maxRetriesinteger4Retries when NDBC does not answer.

Output

{
"rowType": "observation",
"stationId": "44013",
"stationName": "BOSTON 16 NM East of Boston, MA",
"stationType": "buoy",
"latitude": 42.346,
"longitude": -70.651,
"observedAt": "2026-08-31T16:00:00.000Z",
"ageMinutes": 20,
"windDirectionDegrees": 70,
"windSpeedMs": 2,
"windSpeedKnots": 3.9,
"waveHeightMeters": 0.6,
"waveHeightFeet": 1.97,
"dominantWavePeriodSeconds": 4,
"waterTemperatureC": 20.5,
"waterTemperatureF": 68.9,
"pressureHpa": 1021.2
}

What it does when something is wrong

  • A station that publishes no standard meteorological file — pulled for winter, in for servicing, or a DART/TAO/oil-rig station that never publishes this format → a station-offline row saying so, not charged, and the run does not fail.
  • A point with no station near it → a no-station-nearby row with the distance, not charged. Denver resolves to a station 1,296 km away, which is past the default maxDistanceKm of 300.
  • NDBC not answering, or answering with something that is not an observation file → an error row with the reason, and the run fails if nothing at all could be read. It is never reported as "no observations".
  • A window with no readings in it → one row saying so, with the newest reading NDBC does have. Not charged.
  • Lines that do not match the column header are counted and reported, never mixed into the rows.
  • A run that hits the maximum total charge you set says so in the log and in RUN_BUDGET_STOP.
  • Failures are collected in RUN_ISSUES and offline stations in RUN_OFFLINE_STATIONS in the run's key-value store.

Measured

Run on 2026-09-01 with 8 inputs — 3 station ids, 1 offline station, 3 points (coastal, inland-lake city, landlocked), 1 unusable string: 5 observation rows + 1 station-offline row + 1 no-station-nearby row in 14.6 seconds. 943 of the 1,351 listed stations were publishing. 36.8,-122.4 resolved to Monterey buoy 46042 at 1.61 km, 41.88,-87.61 to CNII2 at 2.67 km. East Hatteras (41001) was flagged: its newest reading was 781 hours old.

The build is covered by 58 automated checks, and 61 deliberate defects were injected one at a time to confirm those checks actually catch them.

Billing

Pay per event: one charge per observation row delivered. station-offline, no-station-nearby, error rows and the "no observations in this window" row are not charged. With the default latestOnly, one station costs one row per run.

Support

Questions and bug reports: use the Issues tab on this Actor. Include the input you ran and the run id.

Data source: NOAA National Data Buoy Center — official US government data, public domain. This Actor is not affiliated with NOAA. Marine observations are not a substitute for an official marine forecast or warning.