AQUAVIEW Python SDK
Python SDK for the AQUAVIEW oceanographic and environmental data catalog.
📖 Full API reference: docs/api-reference.md
Other ways to access AQUAVIEW
AI agents: https://mcp.aquaview.org/mcp (learn more)
Interactive discovery map: https://aquaview.org/explore
Read more on our blog: https://aquaview.org/blog
Installation
pip install aquaview
Quick Start
import aquaview
client = aquaview.connect()
# List STAC collections
for col in client.get_collections():
print(f"{col.id}: {col.title}")
# Search for datasets
search = client.search(
collections=["IOOS"],
bbox=[-71, 42, -70, 43],
datetime="2023-01-01/2023-12-31",
limit=10,
)
for item in search.items():
print(item.id, item.properties.get("title"))
More Examples
# Multiple collections, bounding box, time range
search = client.search(
collections=["NDBC", "IOOS"],
bbox=[-75, 35, -70, 40],
datetime="2024-01-01/2024-12-31",
)
# CQL2 property filters
search = client.search(
filter={
"op": "like",
"args": [{"property": "aquaview:variables"}, "%temperature%"],
},
filter_lang="cql2-json",
)
# As GeoJSON
fc = client.search(collections=["IOOS"], limit=5).item_collection_as_dict()
Data sources & curated collections
Beyond catalog search, aquaview.Client exposes AQUAVIEW's data sources and
curated collections:
import aquaview
client = aquaview.Client()
# Queryable data sources (id, description, variables, limits, columns)
for src in client.get_sources():
print(src["source_id"], "—", src["description"])
# One source's detail
wod = client.get_source("WOD")
print(wod["canonical_variables"])
# Curated, theme-based collections (region / platform / use case)
for col in client.get_curated_collections():
print(col["id"], "—", col["title"])
# Search still works — it delegates to pystac-client
search = client.search(collections=["IOOS"], bbox=[-71, 42, -70, 43], limit=5)
for item in search.items():
print(item.id)
Pulling data
get_data() slices a source and returns the bytes, or streams them straight to
a file:
client.get_data(
"WOD",
variables=["temperature", "salinity"],
bbox=[-71, 42, -70, 43],
datetime="2020-01-01/2020-12-31",
limit=1000,
format="csv", # parquet | csv | arrow | ipc | netcdf
to_file="wod.csv", # omit to get the bytes back instead
)
# Similar datasets, and the Beacon schema
client.get_similar("IOOS", "unit_1190-20241218T1433-delayed", limit=5)
client.get_schema()
Large pulls (async export)
For pulls too big to stream inline, run them as a background job. submit_export
returns a handle you poll and then download — the result is partitioned into one
file per time shard. Requires an API key.
client = aquaview.Client(api_key="sk_...")
job = client.submit_export("WOD", ["temperature"], bbox=[-80, 20, -60, 45])
job.wait() # blocks until done (or raises JobError)
paths = job.download("wod_export/") # -> ["wod_export/part-0000.parquet", ...]
# Or fire-and-forget:
job = client.submit_export("WOD", ["temperature"])
job.status() # {"status": "running", "progress": {...}, ...}
Authenticated calls
Pass an API key (mint one in the portal under Settings → API keys) — or set
AQUAVIEW_API_KEY — to reach gated data and account endpoints:
client = aquaview.Client(api_key="sk_...")
client.get_usage() # your usage, limits, warnings
client.interpret("warm water off Florida in 2024") # NL → structured filters
# Ask the agent — chat() returns the final answer; chat_stream() yields live events
print(client.chat("what glider data is off the east coast?"))
for event in client.chat_stream("summarize WOD coverage in the Gulf"):
print(event["event"], event["data"])
Errors come back as aquaview.AquaviewAPIError with .status, .code
(e.g. query_too_large), .message, and the raw .payload.
API
aquaview.Client is the full surface:
| Area | Methods |
|---|---|
| Search (STAC) | search(), get_collections(), get_collection(id) |
| Sources & collections | get_sources(), get_source(id), get_curated_collections() |
| Data & discovery | get_data(...), submit_export(...) → ExportJob, get_similar(...), get_schema() |
| Account (needs key) | get_usage() |
| NL & chat | interpret(query), chat(message), chat_stream(message) |
aquaview.connect() remains a shortcut that returns a
pystac_client.Client for
search-only use.
License
MIT
Metadata
Release files for aquaview 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| aquaview-0.5.0.tar.gz | 17.2 kB | With provenance | Details for aquaview-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| aquaview-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for aquaview-0.5.0-py3-none-any.whl |
Total release size: 28.6 kB
Release files / aquaview-0.5.0.tar.gz
| Download URL | aquaview-0.5.0.tar.gz |
|---|---|
| Size | 17.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
440f4d7ef70abab44f82f9f7811f8fb23412db1956a499a4eb90891b4ba74eab
|
|
BLAKE2b-256 checksum How to use checksums |
7524c8eb194c47eb45a434db745a6a2b5f0eddf9cb656774cae9bddf9dc2140e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / aquaview-0.5.0-py3-none-any.whl
| Download URL | aquaview-0.5.0-py3-none-any.whl |
|---|---|
| Size | 11.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b262f03cf5278041e7b32d9440c669f20de0d0b091ae14ff99aafd8a55fd28d6
|
|
BLAKE2b-256 checksum How to use checksums |
29dd698e220aa59b6803ad9b1bbf04a553a06d9c3aaa099fa335b05a8f27e69d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logSecurity for aquaview 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for aquaview-0.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.