{"id":64726,"name":"NDBC API","description":"A Python API for retrieving meteorological and oceanographic data from the National Data Buoy Center.","url":"https://github.com/cdjellen/ndbc-api","last_synced_at":"2026-06-14T12:00:47.240Z","repository":{"id":53884693,"uuid":"496301776","full_name":"CDJellen/ndbc-api","owner":"CDJellen","description":"A Python API for retrieving meteorological and oceanographic data from the National Data Buoy Center (NDBC).","archived":false,"fork":false,"pushed_at":"2026-03-08T22:30:54.000Z","size":35812,"stargazers_count":26,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-04T07:03:51.139Z","etag":null,"topics":["climate-data","data-science","noaa","python3"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/ndbc-api/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CDJellen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-25T16:05:23.000Z","updated_at":"2026-05-27T04:18:11.000Z","dependencies_parsed_at":"2024-11-23T01:20:39.337Z","dependency_job_id":"e24e7eea-75a6-46d9-91a4-9a6e6441b46d","html_url":"https://github.com/CDJellen/ndbc-api","commit_stats":{"total_commits":106,"total_committers":2,"mean_commits":53.0,"dds":"0.28301886792452835","last_synced_commit":"cd920f88b09c5cb4189dbb4f9373e075480be041"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/CDJellen/ndbc-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CDJellen","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33973868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"CDJellen","name":"Chris Jellen","uuid":"64814231","kind":"user","description":"Cloud software engineering at Microsoft.\r\n\r\nCross-team data solutions focused on observability, reliability, strategic planning, and automation.","email":"","website":"cdjellen.com","location":"Seattle, WA","twitter":null,"company":"@Microsoft","icon_url":"https://avatars.githubusercontent.com/u/64814231?u=c278c4c6fa8a93417c54df64b65d75f2372780c9\u0026v=4","repositories_count":5,"last_synced_at":"2023-05-05T07:45:47.738Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/CDJellen","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-05-05T07:45:47.745Z","updated_at":"2023-05-05T07:45:47.745Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CDJellen","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CDJellen/repositories"},"packages":[{"id":5137352,"name":"ndbc-api","ecosystem":"pypi","description":"A Python API for the National Data Buoy Center.","homepage":"https://github.com/cdjellen/ndbc-api","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/cdjellen/ndbc-api","keywords_array":["ndbc","python3","api","oceanography","buoy","atmospheric","async","aiohttp"],"namespace":null,"versions_count":27,"first_release_published_at":"2022-08-06T00:27:34.000Z","latest_release_published_at":"2022-08-06T00:27:34.000Z","latest_release_number":"0.0.2","last_synced_at":"2026-06-12T13:30:19.767Z","created_at":"2022-08-06T02:52:26.098Z","updated_at":"2026-06-12T15:35:08.156Z","registry_url":"https://pypi.org/project/ndbc-api/","install_command":"pip install ndbc-api --index-url https://pypi.org/simple","documentation_url":"https://ndbc-api.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","License :: OSI Approved :: MIT License","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.14","Programming Language :: Python :: 3.9","Topic :: Software Development :: Build Tools"],"normalized_name":"ndbc-api","project_status":null},"repo_metadata":{"id":53884693,"uuid":"496301776","full_name":"CDJellen/ndbc-api","owner":"CDJellen","description":"A Python API for retrieving meteorological and oceanographic data from the National Data Buoy Center (NDBC).","archived":false,"fork":false,"pushed_at":"2026-03-08T22:30:54.000Z","size":35812,"stargazers_count":26,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-08T11:06:26.147Z","etag":null,"topics":["climate-data","data-science","noaa","python3"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/ndbc-api/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CDJellen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-25T16:05:23.000Z","updated_at":"2026-04-03T06:53:09.000Z","dependencies_parsed_at":"2024-11-23T01:20:39.337Z","dependency_job_id":"e24e7eea-75a6-46d9-91a4-9a6e6441b46d","html_url":"https://github.com/CDJellen/ndbc-api","commit_stats":{"total_commits":106,"total_committers":2,"mean_commits":53.0,"dds":"0.28301886792452835","last_synced_commit":"cd920f88b09c5cb4189dbb4f9373e075480be041"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/CDJellen/ndbc-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CDJellen","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31584816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"CDJellen","name":"Chris Jellen","uuid":"64814231","kind":"user","description":"Cloud software engineering at Microsoft.\r\n\r\nCross-team data solutions focused on observability, reliability, strategic planning, and automation.","email":"","website":"cdjellen.com","location":"Seattle, WA","twitter":null,"company":"@Microsoft","icon_url":"https://avatars.githubusercontent.com/u/64814231?u=c278c4c6fa8a93417c54df64b65d75f2372780c9\u0026v=4","repositories_count":5,"last_synced_at":"2023-05-05T07:45:47.738Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/CDJellen","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-05-05T07:45:47.745Z","updated_at":"2023-05-05T07:45:47.745Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CDJellen","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CDJellen/repositories"},"tags":[{"name":"v2026.03.08.1","sha":"d3783f6eb02b14afa21313a515a8e682e1d47dbf","kind":"commit","published_at":"2026-03-08T22:29:17.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2026.03.08.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2026.03.08.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2026.03.08.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2026.03.08.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2026.03.08.1/manifests"},{"name":"v2026.03.02.1","sha":"0e5952c6626dce9dee15adf9e79d7d42c822d987","kind":"commit","published_at":"2026-03-03T03:49:28.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2026.03.02.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2026.03.02.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2026.03.02.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2026.03.02.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2026.03.02.1/manifests"},{"name":"v2025.10.28.1","sha":"eb49d46a702a23ab0bb05a24891bcd11cab81d90","kind":"commit","published_at":"2025-10-28T19:57:18.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2025.10.28.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2025.10.28.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2025.10.28.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2025.10.28.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2025.10.28.1/manifests"},{"name":"v2025.10.26.1","sha":"df2c8c37730310e25f6d6b5d47ac91e37f86e688","kind":"commit","published_at":"2025-10-27T04:17:50.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2025.10.26.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2025.10.26.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2025.10.26.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2025.10.26.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2025.10.26.1/manifests"},{"name":"v2025.06.09.1","sha":"5c0a7026f23bb49117b93c0fdbc3293e5c8fd352","kind":"commit","published_at":"2025-06-09T15:36:50.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2025.06.09.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2025.06.09.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2025.06.09.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2025.06.09.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2025.06.09.1/manifests"},{"name":"v2024.12.20.1","sha":"d62f4e971719ee2fcf35b0d2f777f3af3065e10c","kind":"commit","published_at":"2024-12-21T02:15:11.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.12.20.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.12.20.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.12.20.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.12.20.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.12.20.1/manifests"},{"name":"v2024.12.02.1","sha":"6c3a4bccb7fee5097065687b042f5fd618b3ff5a","kind":"commit","published_at":"2024-12-02T16:17:51.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.12.02.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.12.02.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.12.02.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.12.02.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.12.02.1/manifests"},{"name":"v2024.11.17.1","sha":"ceba4d2360303ff0d22d26ff6e9d1dfe9549d3be","kind":"commit","published_at":"2024-11-17T23:00:52.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.11.17.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.11.17.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.11.17.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.11.17.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.11.17.1/manifests"},{"name":"v2024.10.15.1","sha":"4b8d31243a724e2b332965378072be7c69f90f2f","kind":"commit","published_at":"2024-10-16T04:44:49.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.10.15.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.10.15.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.10.15.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.10.15.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.10.15.1/manifests"},{"name":"v2024.09.01.1","sha":"b44fac1a850382118f7304cbdb692ff66c50cb83","kind":"commit","published_at":"2024-09-01T21:10:34.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.09.01.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.09.01.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.09.01.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.09.01.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.09.01.1/manifests"},{"name":"v2024.08.28.1","sha":"1ea64071a9c986e99ff5b24b61d0acf85beb2eb7","kind":"commit","published_at":"2024-08-28T14:26:52.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.08.28.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.08.28.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.08.28.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.08.28.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.08.28.1/manifests"},{"name":"v2024.08.04.1","sha":"b3dc6fbf366b28ff96dde01458671d8b846c33a9","kind":"commit","published_at":"2024-08-04T23:05:39.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.08.04.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.08.04.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.08.04.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.08.04.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.08.04.1/manifests"},{"name":"v2024.07.28.1","sha":"605eb29fd98ee25a64d50bd549aa0ce382eb7710","kind":"commit","published_at":"2024-07-28T15:20:57.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.07.28.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.07.28.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.07.28.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.07.28.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.07.28.1/manifests"},{"name":"v2024.06.12.1","sha":"ee6d4fa391b6fbd8617ac501ec50e094b7ca6f2e","kind":"commit","published_at":"2024-06-12T20:48:45.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v2024.06.12.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v2024.06.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v2024.06.12.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.06.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v2024.06.12.1/manifests"},{"name":"v0.24.1.6.1","sha":"cd920f88b09c5cb4189dbb4f9373e075480be041","kind":"commit","published_at":"2024-01-06T18:34:11.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v0.24.1.6.1","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v0.24.1.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v0.24.1.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v0.24.1.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v0.24.1.6.1/manifests"},{"name":"v0.23.7.31","sha":"4e8a4ceefac17a7dff886db3a40de231cea7fbd8","kind":"commit","published_at":"2023-08-01T05:23:23.000Z","download_url":"https://codeload.github.com/CDJellen/ndbc-api/tar.gz/v0.23.7.31","html_url":"https://github.com/CDJellen/ndbc-api/releases/tag/v0.23.7.31","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CDJellen/ndbc-api@v0.23.7.31","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v0.23.7.31","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/tags/v0.23.7.31/manifests"}]},"repo_metadata_updated_at":"2026-06-12T15:35:08.135Z","dependent_packages_count":0,"downloads":3842,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":32.78617735234588,"dependent_repos_count":21.544734775075646,"dependent_packages_count":10.119285352930213,"stargazers_count":25.064230442281982,"forks_count":29.79117102828443,"docker_downloads_count":null,"average":23.86111979018363},"purl":"pkg:pypi/ndbc-api","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/ndbc-api","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/ndbc-api","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/ndbc-api/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-21T19:01:21.289Z","issues_count":13,"pull_requests_count":73,"avg_time_to_close_issue":542163.7,"avg_time_to_close_pull_request":12517.013888888889,"issues_closed_count":10,"pull_requests_closed_count":72,"pull_request_authors_count":5,"issue_authors_count":10,"avg_comments_per_issue":2.6923076923076925,"avg_comments_per_pull_request":0.1095890410958904,"merged_pull_requests_count":70,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":5845.75,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":4,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":4,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/issues","maintainers":[{"login":"CDJellen","count":66,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/CDJellen"}],"active_maintainers":[{"login":"CDJellen","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/CDJellen"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ndbc-api/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ndbc-api/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ndbc-api/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ndbc-api/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ndbc-api/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ndbc-api/codemeta","maintainers":[{"uuid":"CDJellen","login":"CDJellen","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://pypi.org/user/CDJellen/","role":null,"created_at":"2023-01-08T07:48:51.122Z","updated_at":"2023-01-08T07:48:51.122Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/CDJellen/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":885596,"maintainers_count":378844,"namespaces_count":0,"keywords_count":289179,"github":"pypi","metadata":{"funded_packages_count":54301},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-06-10T05:13:28.296Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":685751,"full_name":"CDJellen/ndbc-api","default_branch":"main","total_commits":201,"total_committers":5,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":40.2,"dds":0.02487562189054726,"past_year_total_commits":11,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":11.0,"past_year_dds":0.0,"last_synced_at":"2026-06-12T11:01:23.875Z","last_synced_commit":"d3783f6eb02b14afa21313a515a8e682e1d47dbf","created_at":"2023-03-09T11:09:20.530Z","updated_at":"2026-06-12T11:01:23.773Z","committers":[{"name":"cdjellen","email":"cdjellen@gmail.com","login":"CDJellen","count":196},{"name":"Rachel Wegener","email":"35503632+rwegener2","login":"rwegener2","count":2},{"name":"abdu558","email":"61558312+abdu558","login":"abdu558","count":1},{"name":"Weidav","email":"66092635+Weidav","login":"Weidav","count":1},{"name":"Austin Raney","email":"aaraney@protonmail.com","login":"aaraney","count":1}],"past_year_committers":[{"name":"cdjellen","email":"cdjellen@gmail.com","login":"CDJellen","count":11}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-14T00:00:10.507Z","repositories_count":6259346,"commits_count":882465951,"contributors_count":35084096,"owners_count":1166440,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"CDJellen/ndbc-api","html_url":"https://github.com/CDJellen/ndbc-api","last_synced_at":"2026-03-21T19:01:21.289Z","status":"error","issues_count":13,"pull_requests_count":73,"avg_time_to_close_issue":542163.7,"avg_time_to_close_pull_request":12517.013888888889,"issues_closed_count":10,"pull_requests_closed_count":72,"pull_request_authors_count":5,"issue_authors_count":10,"avg_comments_per_issue":2.6923076923076925,"avg_comments_per_pull_request":0.1095890410958904,"merged_pull_requests_count":70,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":5845.75,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":4,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":4,"created_at":"2023-05-15T04:27:23.264Z","updated_at":"2026-03-21T19:01:21.290Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDJellen%2Fndbc-api/issues","issue_labels_count":{"enhancement":6,"bug":5,"documentation":1},"pull_request_labels_count":{"enhancement":37,"documentation":32,"bug":8,"help wanted":1},"issue_author_associations_count":{"NONE":10,"CONTRIBUTOR":2,"OWNER":1},"pull_request_author_associations_count":{"OWNER":65,"NONE":4,"CONTRIBUTOR":4},"issue_authors":{"ks905383":4,"Weidav":1,"anthony-meza":1,"CDJellen":1,"supermanzer":1,"abdu558":1,"Thomasdht":1,"rwegener2":1,"thex1le":1,"dominicdill":1},"pull_request_authors":{"CDJellen":65,"Weidav":2,"aaraney":2,"rwegener2":2,"abdu558":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-06T00:00:10.330Z","repositories_count":14763836,"issues_count":33412931,"pull_requests_count":110034190,"authors_count":11293968,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"bug":1},"past_year_pull_request_labels_count":{"documentation":4,"enhancement":4,"bug":1},"past_year_issue_author_associations_count":{"OWNER":1},"past_year_pull_request_author_associations_count":{"OWNER":4},"past_year_issue_authors":{"CDJellen":1},"past_year_pull_request_authors":{"CDJellen":4},"maintainers":[{"login":"CDJellen","count":66,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/CDJellen"}],"active_maintainers":[{"login":"CDJellen","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/CDJellen"}]},"events":{"total":{"ReleaseEvent":9,"DeleteEvent":5,"PullRequestEvent":30,"ForkEvent":3,"IssuesEvent":10,"WatchEvent":10,"IssueCommentEvent":11,"PushEvent":39,"PullRequestReviewCommentEvent":2,"PullRequestReviewEvent":4,"CreateEvent":15},"last_year":{"ReleaseEvent":1,"PullRequestEvent":7,"IssuesEvent":1,"WatchEvent":6,"PushEvent":2}},"keywords":["climate-data","data-science","noaa","python3"],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-13T03:20:13.846Z","updated_at":"2022-08-13T03:20:13.846Z","repository_link":"https://github.com/CDJellen/ndbc-api/blob/main/requirements.txt","dependencies":[{"id":1394270374,"package_name":"requests","ecosystem":"pypi","requirements":"\u003e=2.10.0","direct":true,"kind":"runtime","optional":false},{"id":1394270375,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=1.3.5","direct":true,"kind":"runtime","optional":false},{"id":1394270376,"package_name":"bs4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1394270377,"package_name":"html5lib","ecosystem":"pypi","requirements":"\u003e=1.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements_dev.txt","sha":null,"kind":"manifest","created_at":"2022-08-13T03:20:14.113Z","updated_at":"2022-08-13T03:20:14.113Z","repository_link":"https://github.com/CDJellen/ndbc-api/blob/main/requirements_dev.txt","dependencies":[{"id":1394273292,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":1394273293,"package_name":"pyyaml","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":1394273294,"package_name":"pyarrow","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-08-13T03:20:14.643Z","updated_at":"2022-08-13T03:20:14.643Z","repository_link":"https://github.com/CDJellen/ndbc-api/blob/main/setup.py","dependencies":[{"id":1394283371,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1394283372,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1394283373,"package_name":"bs4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1394283374,"package_name":"html5lib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2023-02-09T20:30:42.834Z","updated_at":"2023-02-09T20:30:42.834Z","repository_link":"https://github.com/CDJellen/ndbc-api/blob/main/.github/workflows/ci.yml","dependencies":[{"id":7504822844,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7504822845,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish.yml","sha":null,"kind":"manifest","created_at":"2023-02-09T20:30:42.877Z","updated_at":"2023-02-09T20:30:42.877Z","repository_link":"https://github.com/CDJellen/ndbc-api/blob/main/.github/workflows/publish.yml","dependencies":[{"id":7504822846,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7504822847,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"poetry.lock","sha":null,"kind":"lockfile","created_at":"2024-07-06T05:52:58.502Z","updated_at":"2024-07-06T05:52:58.502Z","repository_link":"https://github.com/CDJellen/ndbc-api/blob/main/poetry.lock","dependencies":[{"id":18921201680,"package_name":"numpy","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":18921201666,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"4.12.3","direct":false,"kind":"runtime","optional":false},{"id":18921201667,"package_name":"certifi","ecosystem":"pypi","requirements":"2024.7.4","direct":false,"kind":"runtime","optional":false},{"id":18921201668,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.3.2","direct":false,"kind":"runtime","optional":false},{"id":18921201669,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":18921201670,"package_name":"coverage","ecosystem":"pypi","requirements":"7.5.4","direct":false,"kind":"runtime","optional":false},{"id":18921201671,"package_name":"coveralls","ecosystem":"pypi","requirements":"4.0.1","direct":false,"kind":"runtime","optional":false},{"id":18921201672,"package_name":"docopt","ecosystem":"pypi","requirements":"0.6.2","direct":false,"kind":"runtime","optional":false},{"id":18921201673,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.1","direct":false,"kind":"runtime","optional":false},{"id":18921201674,"package_name":"html5lib","ecosystem":"pypi","requirements":"1.1","direct":false,"kind":"runtime","optional":false},{"id":18921201675,"package_name":"httpretty","ecosystem":"pypi","requirements":"1.1.4","direct":false,"kind":"runtime","optional":false},{"id":18921201676,"package_name":"idna","ecosystem":"pypi","requirements":"3.7","direct":false,"kind":"runtime","optional":false},{"id":18921201677,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"8.0.0","direct":false,"kind":"runtime","optional":false},{"id":18921201678,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":18921201679,"package_name":"numpy","ecosystem":"pypi","requirements":"1.24.4","direct":false,"kind":"runtime","optional":false},{"id":18921201681,"package_name":"packaging","ecosystem":"pypi","requirements":"24.1","direct":false,"kind":"runtime","optional":false},{"id":18921201682,"package_name":"pandas","ecosystem":"pypi","requirements":"2.0.3","direct":false,"kind":"runtime","optional":false},{"id":18921201683,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.2.2","direct":false,"kind":"runtime","optional":false},{"id":18921201684,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":18921201685,"package_name":"pyarrow","ecosystem":"pypi","requirements":"16.1.0","direct":false,"kind":"runtime","optional":false},{"id":18921201686,"package_name":"pytest","ecosystem":"pypi","requirements":"8.2.2","direct":false,"kind":"runtime","optional":false},{"id":18921201687,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"5.0.0","direct":false,"kind":"runtime","optional":false},{"id":18921201688,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.9.0.post0","direct":false,"kind":"runtime","optional":false},{"id":18921201689,"package_name":"pytz","ecosystem":"pypi","requirements":"2024.1","direct":false,"kind":"runtime","optional":false},{"id":18921201690,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.1","direct":false,"kind":"runtime","optional":false},{"id":18921201691,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":18921201692,"package_name":"setuptools","ecosystem":"pypi","requirements":"70.2.0","direct":false,"kind":"runtime","optional":false},{"id":18921201693,"package_name":"six","ecosystem":"pypi","requirements":"1.16.0","direct":false,"kind":"runtime","optional":false},{"id":18921201694,"package_name":"soupsieve","ecosystem":"pypi","requirements":"2.5","direct":false,"kind":"runtime","optional":false},{"id":18921201695,"package_name":"tomli","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"runtime","optional":false},{"id":18921201696,"package_name":"tzdata","ecosystem":"pypi","requirements":"2024.1","direct":false,"kind":"runtime","optional":false},{"id":18921201697,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.2.2","direct":false,"kind":"runtime","optional":false},{"id":18921201698,"package_name":"webencodings","ecosystem":"pypi","requirements":"0.5.1","direct":false,"kind":"runtime","optional":false},{"id":18921201699,"package_name":"yapf","ecosystem":"pypi","requirements":"0.40.2","direct":false,"kind":"runtime","optional":false},{"id":18921201700,"package_name":"zipp","ecosystem":"pypi","requirements":"3.19.2","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-07-06T05:52:58.941Z","updated_at":"2024-07-06T05:52:58.941Z","repository_link":"https://github.com/CDJellen/ndbc-api/blob/main/pyproject.toml","dependencies":[{"id":18921201702,"package_name":"python","ecosystem":"pypi","requirements":"\u003e=3.8,\u003c3.13","direct":true,"kind":"runtime","optional":false},{"id":18921201703,"package_name":"requests","ecosystem":"pypi","requirements":"\u003e=2.10.0","direct":true,"kind":"runtime","optional":false},{"id":18921201704,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=1.5.3","direct":true,"kind":"runtime","optional":false},{"id":18921201705,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"~4","direct":true,"kind":"runtime","optional":false},{"id":18921201706,"package_name":"html5lib","ecosystem":"pypi","requirements":"^1.1","direct":true,"kind":"runtime","optional":false},{"id":18921201707,"package_name":"coveralls","ecosystem":"pypi","requirements":"\u003e=4.0.1","direct":true,"kind":"develop","optional":false},{"id":18921201708,"package_name":"httpretty","ecosystem":"pypi","requirements":"\u003e=0.9.1","direct":true,"kind":"develop","optional":false},{"id":18921201709,"package_name":"pytest","ecosystem":"pypi","requirements":"\u003e=7.1.2","direct":true,"kind":"develop","optional":false},{"id":18921201710,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"\u003e=3.0.0","direct":true,"kind":"develop","optional":false},{"id":18921201711,"package_name":"pyyaml","ecosystem":"pypi","requirements":"\u003e=6.0","direct":true,"kind":"develop","optional":false},{"id":18921201712,"package_name":"pyarrow","ecosystem":"pypi","requirements":"~16","direct":true,"kind":"develop","optional":false},{"id":18921201713,"package_name":"yapf","ecosystem":"pypi","requirements":"\u003e=0.30","direct":true,"kind":"develop","optional":false},{"id":18921201714,"package_name":"setuptools","ecosystem":"pypi","requirements":"\u003e=61.0","direct":true,"kind":"develop","optional":false}]}],"score":13.121803220545766,"created_at":"2023-09-18T13:10:25.348Z","updated_at":"2026-06-14T12:00:47.252Z","avatar_url":"https://github.com/CDJellen.png","language":"Jupyter Notebook","category":"Hydrosphere","sub_category":"Ocean and Hydrology Data Access","monthly_downloads":3842,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch2\u003eNDBC API\u003c/h2\u003e\n\u003c/div\u003e\n\n\n[![Coverage Status](https://coveralls.io/repos/github/CDJellen/ndbc-api/badge.svg?branch=main)](https://coveralls.io/github/CDJellen/ndbc-api?branch=main)\n[![PyPI](https://img.shields.io/pypi/v/ndbc-api)](https://pypi.org/project/ndbc-api/#history)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.07406/status.svg)](https://doi.org/10.21105/joss.07406)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ndbc-api)](https://pypi.org/project/ndbc-api/)\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\u0026style=flat-square)](https://www.linkedin.com/in/cdjellen/)\n[![GitHub](https://img.shields.io/github/license/cdjellen/ndbc-api)](https://github.com/cdjellen/ndbc-api/blob/main/LICENSE)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/ndbc-api)](https://pypi.org/project/ndbc-api/)\n\n\n\u003cdiv align=\"center\"\u003e\n    \u003ch3\u003eA Python API for the National Data Buoy Center\u003c/h3\u003e\n\u003c/div\u003e\n\n\nThe National Oceanic and Atmospheric Association's National Data Buoy Center maintains marine monitoring and observation stations around the world[^1]. These stations report atmospheric, oceanographic, and other meterological data at regular intervals to the NDBC. Measurements are made available over HTTP through the NDBC's data service.\n\nThe ndbc-api is a python library that makes this data more widely accessible.\n\nThe ndbc-api is primarily built to parse whitespace-delimited oceanographic and atmospheric data distributed as text files for available time ranges, on a station-by-station basis[^2]. Measurements are typically distributed as `utf-8` encoded, station-by-station, fixed-period text files. More information on the measurements and methodology are available [on the NDBC website](https://www.ndbc.noaa.gov/docs/ndbc_web_data_guide.pdf)[^3].\n\nPlease see [the included example notebook](/notebooks/overview.ipynb) for a more detailed walkthrough of the API's capabilities.\n\n[^1]: https://www.ndbc.noaa.gov/\n[^2]: https://www.ndbc.noaa.gov/obs.shtml\n[^3]: https://www.ndbc.noaa.gov/docs/ndbc_web_data_guide.pdf\n\n\n\n#### Installation\nThe `ndbc-api` can be installed via PIP:\n\n```sh\npip install ndbc-api\n```\n\nTo use the async API, install the optional `async` extra:\n\n```sh\npip install ndbc-api[async]\n```\n\nConda users can install the `ndbc-api` via the `conda-forge` channel:\n\n```sh\nconda install -c conda-forge ndbc-api\n```\n\nFinally, to install the `ndbc-api` from source, clone the repository and run the following command:\n\n```sh\npip install .\n```\n\n#### Requirements\nThe `ndbc-api` has been tested on Python 3.9, 3.10, 3.12, and 3.13.\n\nThe API uses synchronous HTTP requests to compile data matching the user-supplied parameters. The `ndbc-api` package depends on:\n* requests\u003e=2.10.0\n* pandas\u003e=2.0.0\n* numpy\u003e=1.26.3\n* beautifulsoup4\n* html5lib\u003e=1.1\n* xarray\n* scipy\n* h5netcdf\n\n##### Async\nThe async API additionally requires:\n* aiohttp\u003e=3.9.0\n\nInstall it with `pip install ndbc-api[async]`.\n\n##### Development\nIf you would like to contribute to the growth and maintenance of the `ndbc-api`, please feel free to open a PR with tests covering your changes. The tests leverage `pytest` and depend on the above requirements, as well as:\n* coveralls\n* httpretty\n* pytest\n* pytest-cov\n* pytest-asyncio\n* aioresponses\n* pyyaml\n* pyarrow\n\nBreaking changes will be considered, especially in the current `alpha` state of the package on `PyPi`.  As the API further matures, breaking changes will only be considered with new major versions (e.g. `N.0.0`).\n\n#### Example\n\nThe `ndbc-api` exposes public methods through the `NdbcApi` class.\n\n```python3\nfrom ndbc_api import NdbcApi\n\napi = NdbcApi()\n```\n\nThe `NdbcApi` provides a unified access point for NDBC data. All methods for obtaining data, metadata, and locating stations are available using the `api` object. The `get_data` method is the primary method for accessing NDBC data, and is used to retrieve measurements from a given station over a specified time range. This method can request data from the NDBC HTTP Data Service or the THREDDS data service, and return the data as a `pandas.DataFrame`, `xarray.Dataset` or python `dict` object.\n\nData made available by the NDBC falls into two broad categories.\n\n1. Station metadata\n2. Station measurements\n\nThe `api` supports a range of public methods for accessing data from the above categories.\n\n##### Station metadata\n\nThe `api` has five key public methods for accessing NDBC metadata.\n\n1. The `stations` method, which returns all NDBC stations.\n2. The `nearest_station` method, which returns the station ID of the nearest station.\n3. The `station` method, which returns station metadata from a given station ID.\n4. The `available_realtime` method, which returns hyperlinks and measurement names for realtime measurements captured by a given station.\n5. The `available_historical` method, which returns hyperlinks and measurement names for historical measurements captured by a given station.\n\n###### `stations`\n\n```python3\n# get all stations and some metadata as a Pandas DataFrame\nstations_df = api.stations()\n# parse the response as a dictionary\nstations_dict = api.stations(as_df=False)\n```\n\n###### `nearest_station`\n\n```python3\n# specify desired latitude and longitude\nlat = '38.88N'\nlon = '76.43W'\n\n# find the station ID of the nearest NDBC station\nnearest = api.nearest_station(lat=lat, lon=lon)\nprint(nearest_station)\n```\n\n```python3\n'tplm2'\n```\n\n###### `radial_search`\n\n```python3\n# specify desired latitude, longitude, radius, and units\nlat = '38.88N'\nlon = '76.43W'\nradius = 100\nunits = 'km'\n\n# find the station IDs of all NDBC stations within the radius\nnearby_stations_df = api.radial_search(lat=lat, lon=lon, radius=radius, units=units)\n```\n\n```python3\n'tplm2'\n```\n\n###### `station`\n\n```python3\n# get station metadata\ntplm2_meta = api.station(station_id='tplm2')\n# parse the response as a Pandas DataFrame\ntplm2_df = api.station(station_id='tplm2', as_df=True)\n```\n\n###### `available_realtime`\n\n```python3\n# get all available realtime measurements, periods, and hyperlinks\ntplm2_realtime = api.available_realtime(station_id='tplm2')\n# parse the response as a Pandas DataFrame\ntplm2_realtime_df = api.available_realtime(station_id='tplm2', as_df=True)\n```\n\n###### `available_historical`\n\n```python3\n# get all available historical measurements, periods, and hyperlinks\ntplm2_historical = api.available_historical(station_id='tplm2')\n# parse the response as a Pandas DataFrame\ntplm2_historical_df = api.available_historical(station_id='tplm2', as_df=True)\n```\n\n##### Station measurements\n\nThe `api` has two public methods which support accessing supported NDBC station measurements.\n\n1. The `get_modes` method, which returns a list of supported `mode`s, corresponding to the data formats provided by the NDBC data service. For example, the `adcp` mode represents \"Acoustic Doppler Current Profiler\" measurements, providing information about ocean currents at different depths, while `cwind` represents \"Continuous winds\" data, offering high-frequency wind speed and direction measurements.\n\nNote that not all stations provide the same set of measurements. The `available_realtime` and `available_historical` methods can be called on a station-by station basis to ensure a station has the desired data available, before building and executing requests with `get_data`. \n\n2. The `get_data` method, which returns measurements of a given type for a given station.\n\n###### `get_modes`\n\n```python3\n# get the list of supported meterological measurement modes\nmodes = api.get_modes()\nprint(modes)\n```\n\n```python3\n[\n    'adcp',\n    'cwind',\n    'ocean',\n    'spec',\n    'stdmet',\n    'supl',\n    'swden',\n    'swdir',\n    'swdir2',\n    'swr1',\n    'swr2'\n]\n```\n\nThe mode values above map directly to the identifiers used buy the NDBC. Desriptions for each mode are presented below:\n* `adcp`: Acoustic Doppler Current Profiler measurements, providing information about ocean currents at different depths.\n* `cwind`: Continuous winds data, offering high-frequency wind speed and direction measurements.\n* `ocean`: Oceanographic data, including water temperature, salinity, and wave measurements.\n* `spec`: Spectral wave data, providing detailed information about wave energy and direction.\n* `stdmet`: Standard meteorological data, including air temperature, pressure, wind speed, and visibility.\n* `supl`: Supplemental measurements, which can vary depending on the specific buoy and its sensors.\n* `swden`: Spectral wave density data, providing information about the distribution of wave energy across different frequencies.\n* `swdir`: Spectral wave direction data, indicating the primary direction of wave energy.\n* `swdir2`: Secondary spectral wave direction data, capturing additional wave direction information.\n* `swr1`: First-order spectral wave data, providing basic wave height and period information.\n* `swr2`: Second-order spectral wave data, offering more detailed wave measurements.\n\n###### `get_data`\n\n```python3\n# get all continuous wind (`cwind`) measurements for station tplm2\ncwind_df = api.get_data(\n    station_id='tplm2',\n    mode='cwind',\n    start_time='2020-01-01',\n    end_time='2022-09-15',\n)\n# return data as a dictionary\ncwind_dict = api.get_data(\n    station_id='tplm2',\n    mode='cwind',\n    start_time='2020-01-01',\n    end_time='2022-09-15',\n    as_df=False\n)\n# get only the wind speed measurements\nwspd_df = api.get_data(\n    station_id='tplm2',\n    mode='cwind',\n    start_time='2020-01-01',\n    end_time='2022-09-15',\n    as_df=True,\n    cols=['WSPD']\n)\n# get all standard meterological (`stdmet`) measurements for stations tplm2 and apam2\nstdmet_df = api.get_data(\n    station_ids=['tplm2', 'apam2'],\n    mode='stdmet',\n    start_time='2022-01-01',\n    end_time='2023-01-01',\n)\n# get all (available) continuous wind and standard meterological measurements for stations tplm2 and apam2\n# for station apam2, this is unavailable and will log an error but not affect the rest of the results.\nstdmet_df = api.get_data(\n    station_ids=['tplm2', 'apam2'],\n    modes=['stdmet', 'cwind'],\n    start_time='2022-01-01',\n    end_time='2023-01-01',\n)\n```\n\n#### Async API\n\nThe `ndbc-api` also provides an async API, `AsyncNdbcApi`, for use in `asyncio` applications. All public methods mirror those of the synchronous `NdbcApi`, but are defined as `async def` and use `aiohttp` for non-blocking I/O.\n\nInstall the async extra if you haven't already:\n\n```sh\npip install ndbc-api[async]\n```\n\nThe `AsyncNdbcApi` is used as an async context manager:\n\n```python3\nimport asyncio\nfrom ndbc_api import AsyncNdbcApi\n\nasync def main():\n    async with AsyncNdbcApi() as api:\n        # get all stations\n        stations_df = await api.stations()\n\n        # find the nearest station\n        nearest = await api.nearest_station(lat='38.88N', lon='76.43W')\n\n        # get standard meteorological data\n        stdmet_df = await api.get_data(\n            station_id='tplm2',\n            mode='stdmet',\n            start_time='2020-01-01',\n            end_time='2022-01-01',\n        )\n\n        # concurrent multi-station query\n        multi_df = await api.get_data(\n            station_ids=['tplm2', 'apam2'],\n            mode='stdmet',\n            start_time='2022-01-01',\n            end_time='2023-01-01',\n        )\n\nasyncio.run(main())\n```\n\nThe async API supports the same `use_opendap` / `as_xarray_dataset` options as the synchronous API for accessing data via the THREDDS/OpenDAP service:\n\n```python3\nasync with AsyncNdbcApi() as api:\n    ds = await api.get_data(\n        station_id='tplm2',\n        mode='stdmet',\n        start_time='2020-01-01',\n        end_time='2022-01-01',\n        use_opendap=True,\n    )\n```\n\n#### More Information\nPlease see [the included example notebook](/notebooks/overview.ipynb) for a more detailed walkthrough of the API's capabilities.\n\n#### Questions\nIf you have questions regarding the library please post them into\nthe [GitHub discussion forum](https://github.com/cdjellen/ndbc-api/discussions).\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.21105/joss.07406"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["climate","ocean"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/64726","html_url":"https://ost.ecosyste.ms/projects/64726"}