---
name: noaa-ndbc-buoy-data-ingestion
description: "How to get NOAA NDBC buoy data data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load a live NOAA NDBC buoy's realtime observations into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/noaa-ndbc-buoy-data
Provider: https://www.ndbc.noaa.gov/faq/rt_data_access.shtml
Checked against the provider's documentation: 2026-11-04

## Access
- No account or key. Flat files are served over HTTPS.

## Request
```bash
curl 'https://www.ndbc.noaa.gov/data/realtime2/46042.txt'
```

## Format
Fixed-width-looking whitespace-delimited text: a #-prefixed column-name header, a units header, then one row per observation (newest first), with "MM" marking missing values.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""NOAA NDBC station 46042 realtime observations -> pandas -> Parquet. No key."""
import io
import requests
import pandas as pd

URL = "https://www.ndbc.noaa.gov/data/realtime2/46042.txt"
r = requests.get(URL, timeout=60)
r.raise_for_status()
lines = r.text.splitlines()
header = lines[0].lstrip("#").split()
df = pd.read_csv(io.StringIO("\n".join(lines[2:])), sep=r"\s+", names=header, na_values=["MM"])
df.to_parquet("ndbc_46042_realtime.parquet", index=False)
latest = df.iloc[0]
print(len(df), "observations; most recent", f"{int(latest['YY'])}-{int(latest['MM']):02d}-{int(latest['DD']):02d} {int(latest['hh']):02d}:{int(latest['mm']):02d} UTC")
```
Run by us on 2026-11-04 (python 3.13.5 | pandas 3.0.6 | pyarrow 26.0.1 | requests 2.34.2). Result: 6350 observations; most recent 2026-11-05 04:10 UTC

## Limits
- NDBC asks users to "limit your retrievals to a minimal level." No numeric threshold is published.
- Most stations report hourly; this station reports roughly every 10 minutes, so poll no faster than the station's own interval.

## Quirks
- Not every station reports every data type; check which files exist for a given station_id first.
- Some stations go silent for extended periods (a different station checked the same day had not reported in a month) without being removed from the directory, so check the most recent timestamp rather than assuming freshness.
- C-MAN land stations use uppercase station IDs in file names.

## Terms and attribution
- NDBC is a US federal government source; NOAA/NWS content on government servers is generally public domain unless marked otherwise.
- Realtime data has had only automated quality checks and carries no warranty of accuracy.
- Terms page: https://www.weather.gov/disclaimer

## Sources
- https://www.ndbc.noaa.gov/faq/rt_data_access.shtml: "We ask that you limit your retrievals to a minimal level."
- https://www.ndbc.noaa.gov/faq/rt_data_access.shtml: "The Realtime directory data/realtime2 contains the current (last 45 days) data."
- https://www.weather.gov/disclaimer: "The information on National Weather Service (NWS) Web pages are in the public domain, unless specifically noted otherwise, and may be used without charge for any lawful purpose"

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
