Full catalog
list() always returns the full catalog, keyless or not.
list() always returns the full catalog and never sends the API key even if
the Client has one configured:
client = Client()
datasets = client.list(category="finance")
for ds in datasets:
print(ds.slug, ds.keyless) # keyless tells you which need a key to loadThis is deliberate: the catalog is public for discovery/marketing purposes. What's gated is loading actual data (see Loading data).
Filters
All filters are optional and combine with AND. license, category, and
tags each accept either a single string or a list (sent as a comma-joined
value):
client.list(
query="housing", # free-text search over name/description
license=["MIT", "CC-BY-4.0"], # or a single string, e.g. license="MIT"
category="real-estate",
tags=["kenya", "prices"],
min_size=0, max_size=50_000_000, # bytes
min_rows=100, max_rows=1_000_000,
)Pagination
page (default 1) and page_size (default 20) control pagination; a
call always returns at most page_size results for that page:
page_2 = client.list(category="finance", page=2, page_size=50)Result fields
Each result is a DatasetSummary with the catalog metadata needed to decide
whether to load a dataset — no schema or column detail yet (that requires
load_dataset(), see Quickstart):
ds = datasets[0]
ds.slug # e.g. "kenya-housing-prices"
ds.name
ds.description
ds.license
ds.category
ds.tags # list[str]
ds.size # bytes
ds.row_count
ds.column_count
ds.keyless # loadable without an API key right now?
ds.keyless_until # if temporarily keyless, when that ends (else None)
ds.created_at
ds.updated_atInstall & Quickstart
Python client for the Aesops dataset API — install it and inspect a dataset's schema and summary stats in a few lines of Python, no API key required.
Loading data
Load a dataset's actual rows into pandas, polars, or DuckDB, run SQL directly against it, or export to CSV — plus how the API key and row limits work.