NOAA Buoy Data Scraper
Pricing
from $2.13 / 1,000 observation extracteds
NOAA Buoy Data Scraper
Export official NOAA NDBC buoy observations by station and time range, including wind, waves, pressure, temperatures, units, and provenance.
Pricing
from $2.13 / 1,000 observation extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
Export official NOAA buoy data from the National Data Buoy Center (NDBC) into a clean, timestamped dataset. Choose buoy station IDs, retrieve NOAA's rolling recent observations or complete yearly historical files, and receive normalized wind, wave, pressure, air temperature, water temperature, location, units, and source-provenance fields.
The Actor uses NOAA's first-party public data files. It needs no NOAA API key, browser, login, or proxy.
What can NOAA Buoy Data Scraper do?
- Retrieve recent standard-meteorological observations for up to 20 NDBC stations per run.
- Download as many as five annual historical station files in one run.
- Filter results with inclusive ISO 8601 start and end times.
- Normalize NOAA's dynamic columns and missing-value markers.
- Sort observations newest first and cap output with
maxItems. - Attach active-station names, coordinates, owner, program, and source URLs.
- Export through Apify as JSON, CSV, Excel, XML, RSS, or an API response.
Who is this NOAA buoy data Actor for?
Marine operations teams can monitor winds, waves, and pressure at relevant offshore stations. Coastal researchers and analysts can build bounded time-series datasets. Surf, fishing, and boating products can ingest official observations. Data engineers can schedule a Task and deliver fresh station readings to databases, webhooks, or BI tools.
This Actor returns measurements, not forecasts or safety advice. For daily land weather observations, use NOAA Historical Weather Observations.
What data is extracted?
| Group | Fields |
|---|---|
| Identity | stationId, stationName, stationType, owner, program |
| Time | timestamp, year, month, day, hour, minute |
| Wind | windDirectionDegrees, windSpeedMetersPerSecond, windGustMetersPerSecond |
| Waves | waveHeightMeters, dominantWavePeriodSeconds, averageWavePeriodSeconds, meanWaveDirectionDegrees |
| Weather | seaLevelPressureHpa, airTemperatureCelsius, dewPointCelsius, visibilityNauticalMiles, pressureTendencyHpa |
| Water | waterTemperatureCelsius, tideFeet |
| Location | latitude, longitude |
| Provenance | mode, units, sourceUrl, sourceAgency, retrievedAt |
A measurement is null when NOAA marks it missing or the station does not publish that sensor field. Nulls are preserved rather than replaced with misleading zeroes.
How to get NOAA buoy observations
- Open the Actor input page.
- Enter one or more NDBC station IDs, such as
41004. - Choose Recent / realtime or Historical yearly files.
- For historical data, provide one to five years.
- Optionally add start/end timestamps and adjust the result limit.
- Click Start and download the default dataset in your preferred format.
Input parameters
| Input | Type | Default | Description |
|---|---|---|---|
stationIds | string array | ["41004"] | 1–20 alphanumeric NDBC station IDs |
mode | string | realtime | realtime rolling archive or historical annual files |
years | integer array | [2025] | Required in historical mode; 1–5 years |
startDate | string | — | Optional inclusive ISO 8601 lower bound |
endDate | string | — | Optional inclusive ISO 8601 upper bound |
maxItems | integer | 100 | Total rows to save, from 1 to 10,000 |
Historical files only exist for station/year combinations published by NOAA. A missing file is logged and skipped so another requested station or year can still produce data.
Input examples
Recent observations for one buoy:
{"stationIds": ["41004"],"mode": "realtime","maxItems": 25}
A bounded historical analysis:
{"stationIds": ["41001"],"mode": "historical","years": [2025],"startDate": "2025-06-01T00:00:00Z","endDate": "2025-06-03T23:59:59Z","maxItems": 250}
Output example
A real recent run produces rows shaped like this:
{"stationId": "41004","stationName": "EDISTO - 41 NM Southeast of Charleston, SC","latitude": 32.502,"longitude": -79.099,"timestamp": "2026-09-19T04:00:00.000Z","windDirectionDegrees": 240,"windSpeedMetersPerSecond": 3,"windGustMetersPerSecond": 4,"waveHeightMeters": null,"seaLevelPressureHpa": 1017.6,"airTemperatureCelsius": 28.1,"waterTemperatureCelsius": 28.9,"mode": "realtime","sourceUrl": "https://www.ndbc.noaa.gov/data/realtime2/41004.txt","sourceAgency": "NOAA National Data Buoy Center"}
Every row also contains a units object, making downstream interpretation explicit.
How much does it cost to export NOAA buoy observations?
Pay-per-event pricing consists of a $0.00005 start fee and one observation event per saved row. The BRONZE price is $0.003552 per observation, with lower unit prices on higher subscription tiers.
| Saved observations | BRONZE estimate |
|---|---|
| 1 | 0.003602 USD |
| 25 | 0.08885 USD |
| 100 | 0.35525 USD |
| 1,000 | 3.55205 USD |
Estimates use the current BRONZE price and include the start event. Actual billing can differ by subscription tier and can be affected by refunds, fraud, disputes, taxes, corrections, or clawbacks. Missing files and filtered-out rows are not charged as observations.
Monitoring and automation workflows
Create an Apify Task with stable station IDs, schedule it hourly or daily, and send results through a webhook. Use timestamp plus stationId as a natural deduplication key in your destination. For historical backfills, request a bounded year/date range, export it once, and keep recurring jobs in realtime mode.
Useful integrations include Google Sheets, Make, Zapier, webhooks, cloud storage, PostgreSQL, and any client that can call the Apify API.
Use the Actor through the API
Replace APIFY_TOKEN with your token.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~noaa-buoy-observations/run-sync-get-dataset-items?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"stationIds":["41004"],"mode":"realtime","maxItems":25}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/noaa-buoy-observations').call({stationIds: ['41004'], mode: 'realtime', maxItems: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient(token="APIFY_TOKEN")run = client.actor("automation-lab/noaa-buoy-observations").call(run_input={"stationIds": ["41004"], "mode": "realtime", "maxItems": 25})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Use with MCP and AI agents
Claude Code setup
Add this Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/noaa-buoy-observations"
Claude Desktop, Cursor, and VS Code setup
Use this MCP configuration in Claude Desktop, Cursor, or VS Code:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/noaa-buoy-observations"}}}
Example prompts:
- “Get the 20 newest NOAA observations for buoy 41004 and summarize wind and waves.”
- “Export station 41001 observations from June 1–3, 2025 as a table.”
- “Compare the latest water temperatures at buoys 41002, 41004, and 46042.”
Reliability and failure behavior
The Actor retries transient network failures and HTTP 429/5xx responses up to three times with bounded backoff. Requests time out after 30 seconds. Invalid station identifiers, malformed dates, reversed date ranges, and unsupported modes fail the run with a clear error. Missing station/year files are warnings rather than fabricated empty records.
NOAA may change files, station availability, sensor packages, or update cadence. Source timestamps are authoritative; “realtime” means NOAA's rolling recent archive, not guaranteed instantaneous delivery.
Limits and tips
- Use exact NDBC station IDs; this version does not search by place or nearest coordinate.
- The Actor supports NDBC standard meteorological files, not every specialized NDBC sensor product.
- Active-station metadata can be unavailable for retired historical stations; observation rows still retain their station ID and source URL.
maxItemsapplies across all requested stations and years after newest-first sorting.- A maximum of 20 stations, five historical years, and 10,000 saved observations keeps runs bounded.
- No proxy setting is needed because NOAA's public files are accessed directly.
Legality and responsible use
NOAA/NDBC data is official U.S. government source material, but users remain responsible for checking applicable NOAA notices, attribution requirements, laws, and downstream-use obligations. Preserve sourceUrl, sourceAgency, and observation timestamps when redistributing records. Do not use this Actor as the sole source for navigation, emergency, or life-safety decisions.
Troubleshooting
Why did my run return no rows? Check that NOAA publishes a standard meteorological file for the station/year, then remove or widen date filters. The run log identifies missing files.
Why is a measurement null? NOAA uses missing-value markers when a sensor is unavailable or did not report. Null is the accurate normalized representation.
Why is my historical run large? Annual files can contain many observations. Set dates and maxItems before increasing scope.
Why is station metadata null? NOAA's active-station feed may no longer list a retired station. Historical measurements and provenance can still be valid.
FAQ
Does this provide forecasts? No. It exports measured NDBC observations.
Can I retrieve several buoys at once? Yes, provide up to 20 station IDs.
How far back does history go? Coverage varies by station. Request years from 1970 through the current year, but only NOAA-published files return records.
Are output units consistent? Yes. The Actor maps standard fields to explicit names and includes a units object on every row.
Are duplicate rows charged? No. Records are deduplicated by station ID and observation timestamp before charging and saving.
Related Automation Lab Actors
- NOAA Historical Weather Observations — daily land/weather station history.
- Weather.gov Active Alerts Tracker — active U.S. warning events and affected areas.
- NOAA Storm Events Database Scraper — retrospective severe-weather incident records.