Skip to main content

AQUAVIEW Python SDK

PyPI version Python 3.10+ License: MIT

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)

Source distribution for aquaview 0.5.0
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)

Table of built distributions (wheels) for aquaview 0.5.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page