{
  "openapi": "3.1.0",
  "info": {
    "title": "Marine Buoys API",
    "version": "1.0.0",
    "description": "Live wave, wind and sea-temperature observations from 1,938 NOAA buoys and coastal stations worldwide.\n\nLive ocean conditions from NOAA's buoy network. A directory of 1,938 NDBC stations — moored buoys, coastal weather stations and wave sensors worldwide — with nearest-station lookup by coordinates, plus the latest observation for every reporting station, refreshed from NOAA's live feed and edge-cached 10 minutes: wave height, dominant and average wave period, wave direction, wind speed/gusts/direction, air and water temperature, pressure, dewpoint, visibility and tide. Monterey Canyon right now: 1.2 m waves at 10 s dominant period from 290°, water 15.4 °C. Ask for one buoy, up to 25 in a single call, or the nearest reporting stations to a point (non-reporting directory entries are filtered out by default). Missing sensors are simply omitted, never faked. Surf forecasting, sailing and passage planning, fishing apps, coastal safety and marine research — pairs naturally with our Tides API for the complete coastal picture.",
    "contact": {
      "name": "Data and APIs",
      "url": "https://dataandapis.com/contact"
    },
    "termsOfService": "https://dataandapis.com/terms-of-service",
    "license": {
      "name": "Data and APIs Terms of Service",
      "url": "https://dataandapis.com/terms-of-service"
    },
    "x-logo": {
      "url": "https://dataandapis.com/images/buoys.webp"
    }
  },
  "externalDocs": {
    "description": "Documentation, live tester and pricing",
    "url": "https://dataandapis.com/apis/buoys"
  },
  "servers": [
    {
      "url": "https://api-buoys.dataandapis.com"
    }
  ],
  "tags": [
    {
      "name": "Data",
      "description": "Marine Buoys API belongs to the Data category of the Data and APIs catalog."
    }
  ],
  "paths": {
    "/v1/buoys/{id}": {
      "get": {
        "operationId": "buoyDetail",
        "summary": "Buoy Detail",
        "description": "Buoy Detail endpoint of the Marine Buoys API. Costs 2 tokens per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/buoys/buoy-detail"
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "46042"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "station": {
                    "id": "46042",
                    "name": "MONTEREY - 27NM WNW of Monterey, CA",
                    "owner": "N",
                    "type": "3-meter foam buoy w/ seal cage",
                    "lat": 36.787,
                    "lng": -122.408,
                    "timezone": "P"
                  },
                  "units": {
                    "wind": "m/s",
                    "waves": "m / s / degT",
                    "pressure": "hPa",
                    "temps": "degC"
                  },
                  "observation": {
                    "time": "2026-09-13T03:10:00Z",
                    "wind_dir_deg": 330,
                    "wind_speed_ms": 10,
                    "gust_ms": 13,
                    "pressure_hpa": 1014.9,
                    "air_temp_c": 17.3,
                    "water_temp_c": 18.3,
                    "dewpoint_c": 14.3
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/v1/sources": {
      "get": {
        "operationId": "dataSources",
        "summary": "Data Sources",
        "description": "Data Sources endpoint of the Marine Buoys API. Costs 2 tokens per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/buoys/data-sources"
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "sources": [
                    {
                      "slug": "ndbc",
                      "name": "NOAA National Data Buoy Center",
                      "publisher": "NOAA",
                      "licence": "US government work (public domain)",
                      "source_url": "https://www.ndbc.noaa.gov/",
                      "file_url": "https://www.ndbc.noaa.gov/data/stations/station_table.txt",
                      "cadence": "directory ~static; observations fetched live",
                      "record_count": 1938,
                      "retrieved_at": "2026-09-06"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/v1/buoys/observations": {
      "get": {
        "operationId": "latestObservations",
        "summary": "Latest Observations",
        "description": "Latest Observations endpoint of the Marine Buoys API. Costs 2 tokens per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/buoys/latest-observations"
        },
        "parameters": [
          {
            "name": "stations",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "46236,41002"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "units": {
                    "wind": "m/s",
                    "waves": "m / s / degT",
                    "pressure": "hPa",
                    "temps": "degC",
                    "visibility": "nmi",
                    "tide": "ft"
                  },
                  "cache": "observations edge-cached 10 minutes",
                  "stations": [
                    {
                      "id": "46236",
                      "known_station": true,
                      "name": "Monterey Canyon Outer, CA (156)",
                      "lat": 36.759,
                      "lng": -121.95,
                      "observation": {
                        "time": "2026-09-13T03:00:00Z",
                        "wave_height_m": 1.6,
                        "dominant_wave_period_s": 6,
                        "average_wave_period_s": 4.7,
                        "wave_dir_deg": 302,
                        "air_temp_c": 16.5,
                        "water_temp_c": 15.6
                      }
                    },
                    {
                      "id": "41002",
                      "known_station": true,
                      "name": "SOUTH HATTERAS - 225 NM South of Cape Hatteras",
                      "lat": 31.743,
                      "lng": -74.955,
                      "observation": {
                        "time": "2026-09-13T03:10:00Z",
                        "wind_dir_deg": 180,
                        "wind_speed_ms": 5,
                        "gust_ms": 7,
                        "pressure_hpa": 1018.4,
                        "air_temp_c": 28.2,
                        "water_temp_c": 28.9,
                        "dewpoint_c": 26.3
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/v1/buoys/nearest": {
      "get": {
        "operationId": "nearestBuoys",
        "summary": "Nearest Buoys",
        "description": "Nearest Buoys endpoint of the Marine Buoys API. Costs 2 tokens per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/buoys/nearest-buoys"
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "36.95"
          },
          {
            "name": "lng",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "-122.03"
          },
          {
            "name": "reporting",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "true"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "query": {
                    "lat": 36.95,
                    "lng": -122.03
                  },
                  "reporting_only": true,
                  "stations": [
                    {
                      "id": "46092",
                      "name": "MBM1",
                      "owner": "MB",
                      "type": "Buoy",
                      "lat": 36.751,
                      "lng": -122.029,
                      "timezone": "P",
                      "distance_km": 22.1,
                      "observation": {
                        "time": "2026-09-13T02:09:00Z",
                        "wind_dir_deg": 320,
                        "wind_speed_ms": 11,
                        "pressure_hpa": 1012.9
                      }
                    },
                    {
                      "id": "46236",
                      "name": "Monterey Canyon Outer, CA (156)",
                      "owner": "R",
                      "type": "Waverider Buoy",
                      "lat": 36.759,
                      "lng": -121.95,
                      "timezone": "P",
                      "distance_km": 22.4,
                      "observation": {
                        "time": "2026-09-13T03:00:00Z",
                        "wave_height_m": 1.6,
                        "dominant_wave_period_s": 6,
                        "average_wave_period_s": 4.7,
                        "wave_dir_deg": 302,
                        "air_temp_c": 16.5,
                        "water_temp_c": 15.6
                      }
                    },
                    {
                      "id": "MLSC1",
                      "name": "Moss Landing, South Harbor, CA",
                      "owner": "ML",
                      "type": "Coastal Marine Station",
                      "lat": 36.802,
                      "lng": -121.791,
                      "timezone": "P",
                      "distance_km": 26.9,
                      "observation": {
                        "time": "2026-09-13T03:16:00Z",
                        "wind_speed_ms": 2.6,
                        "pressure_hpa": 1014
                      }
                    },
                    {
                      "id": "46042",
                      "name": "MONTEREY - 27NM WNW of Monterey, CA",
                      "owner": "N",
                      "type": "3-meter foam buoy w/ seal cage",
                      "lat": 36.787,
                      "lng": -122.408,
                      "timezone": "P",
                      "distance_km": 38.2,
                      "observation": {
                        "time": "2026-09-13T03:10:00Z",
                        "wind_dir_deg": 330,
                        "wind_speed_ms": 10,
                        "gust_ms": 13,
                        "pressure_hpa": 1014.9,
                        "air_temp_c": 17.3,
                        "water_temp_c": 18.3,
                        "dewpoint_c": 14.3
                      }
                    },
                    {
                      "id": "MEYC1",
                      "name": "9413450 - Monterey, CA",
                      "owner": "O",
                      "type": "Water Level Observation Network",
                      "lat": 36.605,
                      "lng": -121.889,
                      "timezone": "P",
                      "distance_km": 40.4,
                      "observation": {
                        "time": "2026-09-13T02:36:00Z",
                        "pressure_hpa": 1014.8,
                        "water_temp_c": 17.2
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/v1/buoys/stations": {
      "get": {
        "operationId": "searchStations",
        "summary": "Search Stations",
        "description": "Search Stations endpoint of the Marine Buoys API. Costs 2 tokens per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/buoys/search-stations"
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "monterey"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "page": 1,
                  "limit": 25,
                  "total": 7,
                  "total_pages": 1,
                  "stations": [
                    {
                      "id": "46042",
                      "name": "MONTEREY - 27NM WNW of Monterey, CA",
                      "owner": "N",
                      "type": "3-meter foam buoy w/ seal cage",
                      "lat": 36.787,
                      "lng": -122.408,
                      "timezone": "P"
                    },
                    {
                      "id": "46114",
                      "name": "West Monterey Bay, CA (185)",
                      "owner": "R",
                      "type": "Waverider Buoy",
                      "lat": 36.7,
                      "lng": -122.343,
                      "timezone": "P"
                    },
                    {
                      "id": "46236",
                      "name": "Monterey Canyon Outer, CA (156)",
                      "owner": "R",
                      "type": "Waverider Buoy",
                      "lat": 36.759,
                      "lng": -121.95,
                      "timezone": "P"
                    },
                    {
                      "id": "46240",
                      "name": "Cabrillo Point, Monterey Bay, CA (158)",
                      "owner": "R",
                      "type": "Waverider Buoy",
                      "lat": 36.626,
                      "lng": -121.907,
                      "timezone": "P"
                    },
                    {
                      "id": "46FLO",
                      "name": "Monterey Bay (FLOSSIE)",
                      "owner": "N",
                      "type": "6-meter NOMAD buoy",
                      "lat": 36.668,
                      "lng": -122.562,
                      "timezone": "P"
                    },
                    {
                      "id": "MEYC1",
                      "name": "9413450 - Monterey, CA",
                      "owner": "O",
                      "type": "Water Level Observation Network",
                      "lat": 36.605,
                      "lng": -121.889,
                      "timezone": "P"
                    },
                    {
                      "id": "MTYC1",
                      "name": "9413450 - Monterey, CA",
                      "owner": "O",
                      "type": "Water Level Observation Network",
                      "lat": 36.605,
                      "lng": -121.889,
                      "timezone": "P"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Key",
        "description": "Create a free key at https://dataandapis.com/sign-up. 500 tokens a month on the Free plan; this API costs 2 tokens per call."
      }
    }
  },
  "security": [
    {
      "ApiKey": []
    }
  ]
}