# Retail Sales API
> How much consumers in each economy are actually spending, and which way the high street is turning — the OECD retail trade volume as an API, live from the OECD's official statistics, no key. Retail trade volume is the headline monthly read on consumer demand: it measures the real, inflation-adjusted volume of goods sold by retailers, and its year-on-year change tells you whether households are opening their wallets or pulling back. Consumer spending is the largest part of most economies, so the retail print moves markets and feeds straight into GDP nowcasts — and the latest month-on-month move is the bit traders react to first. The OECD publishes a seasonally-adjusted retail-trade-volume index for each economy; this API turns it into the numbers people use — the year-on-year and month-on-month growth of retail sales. The board endpoint ranks every economy by its year-on-year retail growth, so you can see where consumers are spending and where demand is fading. The momentum endpoint ranks by the latest month-on-month move — who is accelerating or rolling over right now. The country endpoint gives one economy's retail growth, year-on-year and month-on-month, with a plain-language read. Each reading carries its own period and discontinued series are excluded, so the board is genuinely current. The consumer-demand / retail hard-data cut — distinct from the industrial-production board (the supply side, factory output), the leading-indicator and confidence boards (soft survey data), and the generic multi-provider data aggregator. Figures are monthly, in percent.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/retailsales-api/..."
```

## Pricing
- **Free** (Free) — 795 calls/Mo, 2 req/s
- **Starter** ($11/Mo) — 17,600 calls/Mo, 6 req/s
- **Pro** ($34/Mo) — 89,800 calls/Mo, 16 req/s
- **Business** ($78/Mo) — 499,000 calls/Mo, 40 req/s

## Endpoints

### Board

#### `GET /v1/board` — Economies ranked by year-on-year retail-sales growth

**Parameters:**
- `countries_only` (query, optional, string) — Drop aggregate groups (true) Example: `true`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/retailsales-api/v1/board?countries_only=true"
```

**Response:**
```json
{
    "data": {
        "note": "Economies ranked by year-on-year retail-sales (retail trade volume) growth — the real, inflation-adjusted volume of goods sold. The headline read on consumer demand; feeds GDP nowcasts. Growth computed from the OECD's seasonally-adjusted retail-trade-volume index. Each row carries its own period; discontinued series are excluded. Monthly, cached a few hours.",
        "board": [
            {
                "mom": 2.59,
                "yoy": 20.64,
                "code": "TUR",
                "name": "Türkiye",
                "period": "2026-03",
                "reading": "consumers spending strongly",
                "is_aggregate": false
            },
            {
                "mom": 1.17,
                "yoy": 8.99,
                "code": "COL",
                "name": "Colombia",
                "period": "2026-03",
                "reading": "consumers spending strongly",
                "is_aggregate": false
            },
            {
                "mom": 1.87,
                "yoy": 8.23,
                "code": "LTU",
                "name": "Lithuania",
                "period": "2026-04",
                "reading": "consumers spending strongly",
                "is_aggregate": false
            },
            {
                "mom": -0.85,
                "yoy": 8.21,
                "code": "BGR",
                "name": "Bulgaria",
                "period": "2026-04",
                "reading": "consumers spend
…(truncated, see openapi.json for full schema)
```

### Momentum

#### `GET /v1/momentum` — Economies ranked by the latest month-on-month retail move

**Parameters:**
- `countries_only` (query, optional, string) — Drop aggregate groups (true) Example: `true`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/retailsales-api/v1/momentum?countries_only=true"
```

**Response:**
```json
{
    "data": {
        "note": "Economies ranked by the latest month-on-month move in retail sales — who is accelerating or rolling over right now, the part traders react to first. Year-on-year alongside. Growth computed from the OECD's seasonally-adjusted retail-trade-volume index. Monthly, cached a few hours.",
        "board": [
            {
                "mom": 2.59,
                "yoy": 20.64,
                "code": "TUR",
                "name": "Türkiye",
                "period": "2026-03",
                "is_aggregate": false
            },
            {
                "mom": 1.87,
                "yoy": 8.23,
                "code": "LTU",
                "name": "Lithuania",
                "period": "2026-04",
                "is_aggregate": false
            },
            {
                "mom": 1.17,
                "yoy": 8.99,
                "code": "COL",
                "name": "Colombia",
                "period": "2026-03",
                "is_aggregate": false
            },
            {
                "mom": 1,
                "yoy": 2.5,
                "code": "USA",
                "name": "United States",
                "period": "2026-03",
                "is_aggregate": false
            },
            {
                "mom": 0.51,
                "yoy": -0.05,
                "code": "JPN",
                "name": "Japan",
                "period": "2026-03",
                "is_aggregate": false
            },
            {
   
…(truncated, see openapi.json for full schema)
```

### Country

#### `GET /v1/country` — One economy's retail-sales growth, year-on-year and month-on-month

**Parameters:**
- `country` (query, required, string) — ISO-3 code or name Example: `USA`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/retailsales-api/v1/country?country=USA"
```

**Response:**
```json
{
    "data": {
        "code": "USA",
        "name": "United States",
        "note": "One economy's retail-sales growth, year-on-year and month-on-month, from the OECD's seasonally-adjusted retail-trade-volume index. A positive year-on-year change means real retail volume is above its level a year earlier. Monthly, cached a few hours.",
        "period": "2026-03",
        "source": "OECD retail trade volume (SDMX)",
        "is_aggregate": false,
        "retail_sales": {
            "mom": 1,
            "yoy": 2.5,
            "reading": "retail growing"
        }
    },
    "meta": {
        "timestamp": "2026-06-12T19:37:28.657Z",
        "request_id": "0460a097-2e74-4f21-b8f6-1090ad749a7c"
    },
    "status": "ok",
    "message": "Country retail sales retrieved successfully",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/retailsales-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "board and momentum take countries_only (true to drop aggregates). country takes country (ISO-3 code or name, required). meta takes no parameters. Growth figures are in percent; yoy is year-on-year, mom is month-on-month, computed from the retail-trade-volume index. Monthly data; a multi-hour protective cache fronts the OECD upstream.",
        "source": "OECD retail trade volume (DF_INDSERV, TOVM/G47) via OECD SDMX API (seasonally adjusted), live, keyless",
        "service": "retailsales-api",
        "economies": 43,
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/board": "Economies ranked by year-on-year retail-sales growth (countries_only optional).",
            "GET /v1/country": "One economy's retail-sales growth, year-on-year and month-on-month (country=USA).",
            "GET /v1/momentum": "Economies ranked by the latest month-on-month retail move."
        },
        "description": "Retail sales — how much consumers in each economy are spending and which way the high street is turning, live from the OECD (no key). It computes the year-on-year and month-on-month growth of the retail-trade-volume index (real, inflation-adjusted). board ranks economies by year-on-year retail growth; momentum ranks by the latest month-on-month move; country gives one economy's figures with a plain-language read. A headline consumer-demand print that feeds GDP nowcasts. The retail / consumer-demand cut — dis
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/retailsales-api
OpenAPI spec: https://www.oanor.com/api/retailsales-api/openapi.json
