Raw schema
{
"type": "object",
"properties": {
"latitude": {
"description": "Center latitude in decimal degrees for proximity search. Required together with longitude โ supplying only one is rejected rather than silently ignored. Optionally pair with radius_km.",
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"description": "Center longitude in decimal degrees for proximity search. Required together with latitude โ supplying only one is rejected rather than silently ignored. Optionally pair with radius_km.",
"type": "number",
"minimum": -180,
"maximum": 180
},
"radius_km": {
"default": 100,
"description": "Search radius in kilometers when latitude/longitude are provided. Defaults to 100 km.",
"type": "number",
"minimum": 1,
"maximum": 1000
},
"query": {
"description": "Station name or station ID substring to match, case-insensitive, on both sources. E.g. \"seattle\", \"puget sound\", \"9447130\", \"46041\". A station whose ID matches exactly is returned ahead of name matches, unless latitude/longitude were supplied โ a proximity search orders by distance instead. Blank or whitespace-only values are treated as omitted.",
"type": "string"
},
"state": {
"description": "Filter by 2-letter US state or territory code. Applies to CO-OPS stations only โ providing it restricts results to CO-OPS and excludes NDBC buoys (which carry no state). A station matches on its own catalog code, or โ when its catalog rows carry none, as with every current station โ on the state of the nearest state-bearing CO-OPS tide or water-level station within 25 km, which can be wrong on waters shared across a state or national border. E.g. \"WA\", \"CA\", \"PR\".",
"type": "string",
"enum": [
"AL",
"AK",
"AZ",
"AR",
"CA",
"CO",
"CT",
"DE",
"FL",
"GA",
"HI",
"ID",
"IL",
"IN",
"IA",
"KS",
"KY",
"LA",
"ME",
"MD",
"MA",
"MI",
"MN",
"MS",
"MO",
"MT",
"NE",
"NV",
"NH",
"NJ",
"NM",
"NY",
"NC",
"ND",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VT",
"VA",
"WA",
"WV",
"WI",
"WY",
"DC",
"PR",
"VI",
"GU",
"AS",
"MP"
]
},
"source": {
"default": "all",
"description": "Data source to search: coops (tide/water-level/current stations), ndbc (buoys), or all (default).",
"type": "string",
"enum": [
"coops",
"ndbc",
"all"
]
},
"types": {
"description": "Filter by data capability or NDBC platform class. Every returned station matches at least one requested value โ a capability value against its capabilities list, or buoy against its platform class. Omit to return all stations.",
"type": "array",
"items": {
"type": "string",
"enum": [
"tide",
"current",
"water_level",
"met",
"current_profile",
"water_quality",
"buoy"
],
"description": "Filter value. Six are data capabilities, matched against a station's capabilities list: tide (CO-OPS tide predictions โ noaa_marine_get_tide_predictions), current (CO-OPS tidal-current predictions โ noaa_marine_get_currents), water_level (CO-OPS observed water levels โ noaa_marine_get_water_level, and their verified monthly means โ noaa_marine_get_monthly_means), met (NDBC meteorological โ noaa_marine_get_conditions), current_profile (NDBC observed ocean-current depth profile โ noaa_marine_get_current_profile; note this is a different data product and source than CO-OPS `current`), water_quality (NDBC sub-surface water-column sensors โ noaa_marine_get_ocean_observations). The seventh, buoy, is a physical-platform filter (NDBC platform class equals buoy), not a data capability โ use it to select buoy-class platforms regardless of what data they serve."
}
},
"limit": {
"default": 20,
"description": "Maximum number of stations to return. Defaults to 20.",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}