---
title: "List Series"
method: GET
path: "/api/v1/series"
tags: ["series"]
---

# List Series

`GET /api/v1/series`

## Request

- Base URL: `https://statsmapped.com`
- URL: `https://statsmapped.com/api/v1/series`
- Auth: none declared

All datasets with their latest value and changes.

A GROUP is returned as ONE entry carrying a `facets` array — not as N flat rows and
not omitted. The first cut of this dropped grouped series entirely, which silently
removed `rppi_national_houses` (the panel's national comparison line) the moment
property gained facets. Returning 334 flat rows instead was the other extreme: it
made this the slowest endpoint in the app.

`include_facets=true` additionally returns every facet as its own top-level row.

`stat_key`: restrict to one stat (e.g. 'crime', 'sale_price'); omit for every
series site-wide. See /api/v1/stats for valid keys. Added for the MCP tool
package's rank_areas -- an unfiltered call measures ~6.5MB (every series, every
geography); ranking one stat across areas needs only a slice of that. Plain
default (not Query(...)) deliberately: this function is also called directly as
a plain Python function in this codebase's own tests, and a Query(...) object
survives unresolved as the literal default there, not as None -- the exact bug
already caught and fixed once on series_for_geography's own stat_key filter
earlier this session.

## Query parameters

- `include_facets` boolean
- `stat_key` string, nullable

## Response `200`

Successful Response

- SeriesEntry[]
  - `country` string
  - `series_key` string, required
  - `display_name` string, required
  - `region_label` string, nullable
  - `unit` string, nullable
  - `geography_id` string, nullable
  - `stat_key` string, nullable
  - `periodicity` string, nullable
  - `latest_period` string, nullable
  - `latest_value` number, nullable
  - `data_refreshed_at` string, nullable
  - `prev_period_pct` number, nullable
  - `year_on_year_pct` number, nullable
  - `caveats` Caveat[]
    - `country` string
    - `kind` string, required
    - `severity` string, required
    - `label` string, required
    - `body` string, required
    - `source_url` string, nullable
    - `origin` string, required
    - `interpretive` boolean
    - `stats` CaveatStats
      - `country` string
      - `median` number, required
      - `n` integer, required
      - `modified_z` number, required
      - `peer_basis` string, required
  - `group_name` string, nullable
  - `facets` SeriesFacet[], nullable
    - `country` string
    - `series_key` string, nullable
    - `label` string, nullable
    - `latest_value` number, nullable
    - `year_on_year_pct` number, nullable
    - `unit` string, nullable
  - `group_key` string, nullable

## Other responses

- `400`: Bad request
- `401`: Missing or invalid credentials
- `403`: Not authorized for this request
- `404`: Not found
- `422`: Validation error
- `429`: Rate limited

---

[API](https://skmtc.dev/statsmapped/apis/statsmapped-api.md) · [All operations](https://skmtc.dev/statsmapped/apis/statsmapped-api/llms.txt) · [OpenAPI document](https://skmtc.dev/statsmapped/apis/statsmapped-api/revisions/7c5b264d05b7?raw)
