---
title: "Rate change feed (observations)"
method: GET
path: "/api/v1/rates/changes"
tags: ["earn"]
---

# Rate change feed (observations)

`GET /api/v1/rates/changes`

## Request

- Base URL: `https://api.bitcompare.net`
- URL: `https://api.bitcompare.net/api/v1/rates/changes`
- Auth: HTTP bearer

The immutable rate-change log: every material yield move with full provenance (previous rate, raw value, multiplier, collection method, confidence, base/bonus split). Time-ascending pages via cursor. Unfiltered windows are capped at 31 days — filter by provider or symbol to walk deep history. Use for "what changed since X?" and audit trails.

## Query parameters

- `since` string, required: ISO date/datetime lower bound (required), e.g. "2026-08-01"
- `symbol` string
- `category` 'lending' | 'borrowing' | 'staking'

## Response `200`

Successful response

- object
  - `data` object[], required
    - `time` string, required
    - `provider` string, required
    - `symbol` string, required
    - `category` 'lending' | 'borrowing' | 'staking', required
    - `rate` number, required
    - `previousRate` number, nullable, required
    - `change` number, nullable, required
    - `collectionMethod` string, required
    - `confidence` integer, nullable, required
    - `baseRate` number, nullable, required
    - `bonusRate` number, nullable, required
  - `pagination` object, required
    - `nextCursor` string, nullable, required
    - `hasMore` boolean, required
    - `limit` integer, required

## Other responses

- `401`: Missing or invalid API key
- `403`: API key is valid but your plan does not grant access to this endpoint (e.g. Intelligence or bulk tier required)
- `429`: Plan rate limit exceeded — see X-RateLimit-* headers and Retry-After

---

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