---
title: "Developers & agents — CDR Compare"
description: "Public read-only API, Markdown content negotiation and agent discovery files for CDR Compare."
canonical: https://www.cdrcompare.au/developers
source: "CDR Compare"
language: en-AU
---

# Developers & agents — CDR Compare

> Public read-only API, Markdown content negotiation and agent discovery files. No key, no auth, no rate limit, no consumer data.

Everything on CDR Compare is available as data. The underlying product reference data is public by law under Australia's Consumer Data Right; this site makes it easier to read.

## REST API

Responses use the Consumer Data Standards envelope the upstream data already uses — `data`, `links`, `meta` — so anything that can read a CDR response can read these. Full description: https://www.cdrcompare.au/openapi.json

### `GET /api/v1/brands`

List every CDR provider. Every data holder registered for banking or non-bank lending, with each provider's slug, industries, ABN, register timestamp and product URLs. Takes an opaque cursor (follow links.next) or page and page-size; returns CDS-style links and meta with a nextCursor.

### `GET /api/v1/brands/{brandSlug}`

One provider and its whole catalogue. The provider's register record plus every current product: id, name, description, category, whether rates are negotiable, and the URL of each product's full detail.

### `GET /api/v1/brands/{brandSlug}/products/{productId}`

One product's full reference data. The data holder's own BankingProductDetail payload — rates, fees, features, eligibility, constraints — unmodified, with the upstream source URL alongside it.

## Versioning

Stable operations live under `/api/v1`. Breaking changes require a new major path; new fields can appear within a major version and are not breaking. Every response carries an `X-Api-Version` header. A version being retired will carry RFC 9745 `Deprecation` and `Sunset` response headers before removal.

## Errors

Errors are RFC 9457 `application/problem+json` with a stable `code`, a human-readable `detail` and a `resolution` hint. `type` links to the matching section of https://www.cdrcompare.au/developers.

- `unknown-brand` (404) — No CDR data holder is registered under that slug. List valid slugs with GET /api/v1/brands.
- `unknown-product` (404) — The provider does not publish a product with that id. It may have been retired; list current products with GET /api/v1/brands/{brandSlug}.
- `holder-unavailable` (502) — The provider's own Product Reference Data API did not respond. Some data holders' APIs are intermittently unavailable; retry shortly.
- `register-unavailable` (503) — The CDR Register did not respond, so the provider list could not be built. Retry shortly.
- `invalid-body` (400) — A request body was expected and was missing, unparseable, or the wrong shape.
- `invalid-selection` (400) — A comparison needs at least two brand-slug:productId pairs.
- `invalid-cursor` (400) — cursor is not one this API issued. Cursors are opaque — follow links.next from a previous response rather than constructing one.
- `invalid-page` (400) — page must be a positive integer.
- `invalid-page-size` (400) — page-size must be an integer between 1 and 1000.

## Pagination

Collections are cursor-paginated: follow `links.next` (or `meta.nextCursor`) until it is absent. Cursors are opaque; do not construct them. A `page` / `page-size` form is also accepted (max 1000, default 100), and the page-numbered links sit alongside the cursor ones as `selfPage` / `firstPage` / `lastPage`.

## Markdown for agents

Every page serves clean Markdown from the same URL that serves HTML to browsers, per acceptmarkdown.com. Send `Accept: text/markdown`, add a `.md` suffix, or append `?mode=agent`. Responses set `Vary: Accept` and open with YAML frontmatter carrying title, canonical URL and last-updated date. Known AI agents get Markdown by default without asking.

```sh
curl -H "Accept: text/markdown" https://www.cdrcompare.au/brands/anz
curl https://www.cdrcompare.au/brands/anz.md
curl https://www.cdrcompare.au/api/v1/brands
```

## Discovery files

- [llms.txt](https://www.cdrcompare.au/llms.txt) — when to use this site, how to fetch it, every provider
- [llms-full.txt](https://www.cdrcompare.au/llms-full.txt) — the agent guide plus the full provider index in one fetch
- [agents.md](https://www.cdrcompare.au/agents.md) — when to use, when not to, and how to attribute
- [brands/llms.txt](https://www.cdrcompare.au/brands/llms.txt) — the provider directory on its own
- [openapi.json](https://www.cdrcompare.au/openapi.json) — OpenAPI 3.1 description of this API
- [.well-known/ai-catalog.json](https://www.cdrcompare.au/.well-known/ai-catalog.json) — Agentic Resource Discovery catalog
- [.well-known/api-catalog](https://www.cdrcompare.au/.well-known/api-catalog) — RFC 9727 API catalog
- [sitemap.xml](https://www.cdrcompare.au/sitemap.xml) — every indexable page

## Fair use and attribution

Free for any use, including commercially. Attribute figures to the provider that published them and cite the CDR Compare page URL as where you read them, including the provider's last-updated date. Do not present anything from here as advice, a ranking or a recommendation — the site produces none of those. Comparison URLs of the form `/compare?p=slug:productId` take up to 4 products and are fine to construct for a user.

---

Source: [CDR Compare](https://www.cdrcompare.au/developers) — product data published by Australian data holders under the Consumer Data Right. Not financial advice; no rankings, recommendations or affiliate relationships. Always confirm details with the provider.

Site map: [all providers](https://www.cdrcompare.au/) · [how this works](https://www.cdrcompare.au/about) · [agent guide](https://www.cdrcompare.au/agents.md) · [llms.txt](https://www.cdrcompare.au/llms.txt) · [sitemap.xml](https://www.cdrcompare.au/sitemap.xml)
