# Ocean Buoy & Coastal Weather by Radius (NDBC, 45-Day History) (`bigsky-data-tools/ocean-buoy-observations-ndbc`) Actor

Every NOAA NDBC buoy and coastal station within a radius, nearest first, not just one station: waves, wind, pressure, air and water temps in both unit systems. Latest reading or up to 45 days of history, station-type and wave-data filters, and data age on every row.

- **URL**: https://apify.com/bigsky-data-tools/ocean-buoy-observations-ndbc.md
- **Developed by:** [BigSky Data Tools](https://apify.com/bigsky-data-tools) (community)
- **Categories:** Other
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Ocean Buoy & Coastal Weather by Radius: data from NOAA's National Data Buoy Center (Waves, Wind, Water Temp, 45-Day History)

Get **live and recent marine observations** from about 1,300 moored buoys and coastal stations distributed by **NOAA's National Data Buoy Center (NDBC)**: wave height and period, wave direction, wind speed, gusts and direction, pressure and tendency, air and water temperature, dew point, visibility and tide. Search **by radius around any point**, by station ID or by station type, and get either the latest reading per station or every reading from the last 45 days. **No API key, no login.** Published by BigSky Data Tools.

> **NOT FOR SAFETY-CRITICAL USE: data may be delayed or incomplete; not for life-safety, navigation or emergency decisions; use official NDBC sources.**
>
> **Partner stations:** some stations are owned by partners, not NDBC. Rows from non-NDBC owners are partner data, not NDBC quality controlled; owner terms may apply. Each row carries the station `owner` and a `dataNotice` field saying which applies.

### Why use this buoy data tool?

- 📍 **Radius search, nearest first**: every row has `distanceMiles`.
- 🌊 **Ready-to-use units**: meters and feet for waves, m/s and knots for wind, °C and °F for temperatures, ISO UTC timestamps.
- 🕒 **Two modes**: `latest` (one row per station, stale stations dropped with `maxAgeHours`) or `history` (every reading in the last N hours, up to 45 days).
- 🔎 Filters: station IDs, station type (moored buoy, fixed coastal platform, DART, USV), only rows with wave data.
- 🏷️ Station name, operator and a link to each station page.
- ⏱️ **`observedAgeMinutes`** on every row, so you can drop stale readings.

### How it compares

In our Apify Store search on 2026-10-31 we did not find another Actor offering all of the features marked **Yes** below together; some alternatives offer individual features, as the "Typical alternatives" column shows. The Store may have changed since.

| | This tool | Typical alternatives |
|---|---|---|
| Search area | **Radius around any point, many stations, nearest first** | One station ID, or the single nearest buoy |
| History in one run | **Up to 45 days** | Varies by tool |
| Filter by station type and wave data | **Yes** | Not offered |
| Data age on every row (`observedAgeMinutes`) | **Yes** | Not offered |

### Who uses it

Offshore wind and oil & gas operations, shipping and port logistics, marine insurers, fishing and charter fleets, surf and coastal apps, coastal engineering firms, weather and data-science teams training or validating models, and researchers.

### Input example

```json
{ "latitude": "36.6", "longitude": "-122.0", "radiusMiles": 100 }
```

History for two buoys: `{ "mode": "history", "stationIds": ["46026", "41009"], "historyHours": 12 }`

### Output example

```json
{ "stationId": "46042", "stationName": "MONTEREY - 27NM WNW of Monterey, CA", "stationType": "buoy", "owner": "NDBC",
  "latitude": 36.787, "longitude": -122.408, "distanceMiles": null, "observedAt": "2026-10-31T17:00:00Z",
  "windDirDeg": 60.0, "windSpeedMs": 3.0, "windSpeedKt": 5.8, "windGustMs": 4.0, "windGustKt": 7.8,
  "waveHeightM": null, "waveHeightFt": null, "pressureHpa": 1013.0, "pressureTendencyHpa": 0.4,
  "airTempC": 15.8, "airTempF": 60.4, "waterTempC": 18.1, "waterTempF": 64.6, "dewPointC": 10.8,
  "source": "NOAA National Data Buoy Center", "sourceUrl": "https://www.ndbc.noaa.gov/station_page.php?station=46042" }
```

Missing sensor values are `null`, and `missingNote` names every null field with its reason. Export to JSON, CSV, Excel or XML, or use the Apify API, Make, Zapier or n8n. Schedule it hourly to build your own time series.

### Pricing

**$7 per 1,000 results** ($0.007 per result) plus a $0.01 start fee per run.

Pay per result: you pay for each observation saved. A 100-mile latest-mode search usually returns 10-40 rows; history mode returns roughly 24-240 rows per station per day, so cap it with `historyHours`, `maxStations` and `maxResults`. Free-plan users can try it within their monthly platform credit.

Apify's per-run maximum charge setting also limits results: for example, a $4.44 limit allows about 632 rows. Raise it in the run options for a full pull.

### FAQ

**Where does the data come from?** From the public real-time files published by NOAA's National Data Buoy Center. Some stations are operated by NDBC partners (other agencies, universities, foreign met services); the `owner` field shows who. Data is provisional and not quality-controlled in real time. Source data are works of the U.S. federal government (NOAA NDBC) and generally not subject to U.S. copyright (17 U.S.C. 105). This is not a license or warranty; third-party or foreign rights may apply, including for partner-owned and foreign stations. You are responsible for how you use the data.
**Why are some values empty?** NDBC marks a value as missing (MM) without saying why. Each row's `missingNote` lists every null field: `no meteorological sensors at this station` only when NDBC's station list says the station has none (met=n) and the row has no meteorological values at all (that list can be stale: e.g. 41038 is listed met=n but reports wind, pressure and temperature); otherwise `not in this NDBC report (sensor offline, not installed or not transmitted; NDBC does not say which)`. Feet, knots and Fahrenheit fields say they were converted from a missing value, and `distanceMiles` is `not applicable` without a search center. Many shore (fixed) stations never report waves, tide or visibility; check the station page linked in `sourceUrl`. A blank station name or type is noted as `not given in NDBC's active station list`. `missingNote` is null when nothing is missing.
**How far back does history go?** NDBC's real-time files keep about 45 days.
**Is this tool run by the data agency?** No. BigSky Data Tools is independent and not affiliated with or endorsed by NOAA, NDBC or any partner station owner. Do not use it for navigation or safety-of-life decisions.

**Is the data guaranteed?** No. The tool and data are provided as is, without warranty of accuracy, completeness or timeliness, and values can differ from the source agency's official products.

# Actor input Schema

## `mode` (type: `string`):

Latest = newest observation from every matching station. History = every reading in the last N hours for the matching stations.

## `latitude` (type: `string`):

Optional. With longitude and radius, returns stations near this point, nearest first (e.g. 36.6 for Monterey Bay).

## `longitude` (type: `string`):

Optional, e.g. -122.0.

## `radiusMiles` (type: `integer`):

Search radius around the center point.

## `stationIds` (type: `array`):

Optional NDBC station IDs, e.g. 46026, 41009, SFXC1.

## `stationTypes` (type: `array`):

Optional. buoy = moored buoys, fixed = C-MAN and coastal platforms. Leave empty for all.

## `requireWaveData` (type: `boolean`):

Drop observations without a wave height reading.

## `maxAgeHours` (type: `integer`):

Skip stale stations whose latest reading is older than this. 0 = no limit.

## `historyHours` (type: `integer`):

How far back to return readings (NDBC keeps 45 days = 1080 hours).

## `maxStations` (type: `integer`):

Stations to fetch history for (nearest first when a radius is set).

## `maxResults` (type: `integer`):

Maximum observations to save (each saved observation is one billable result).

## Actor input object example

```json
{
  "mode": "latest",
  "latitude": "36.6",
  "longitude": "-122.0",
  "radiusMiles": 100,
  "requireWaveData": false,
  "maxAgeHours": 6,
  "historyHours": 24,
  "maxStations": 10,
  "maxResults": 5000
}
```

# Actor output Schema

## `dataset` (type: `string`):

Default dataset containing all output records

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "latitude": "36.6",
    "longitude": "-122.0"
};

// Run the Actor and wait for it to finish
const run = await client.actor("bigsky-data-tools/ocean-buoy-observations-ndbc").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "latitude": "36.6",
    "longitude": "-122.0",
}

# Run the Actor and wait for it to finish
run = client.actor("bigsky-data-tools/ocean-buoy-observations-ndbc").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "latitude": "36.6",
  "longitude": "-122.0"
}' |
apify call bigsky-data-tools/ocean-buoy-observations-ndbc --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bigsky-data-tools/ocean-buoy-observations-ndbc"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/397Bj6KcSva5qRyxj/builds/cxUCc4vZcFvKwzghR/openapi.json
