CDR Register (Australian Open Banking) avatar

CDR Register (Australian Open Banking)

Pricing

Pay per usage

Go to Apify Store
CDR Register (Australian Open Banking)

CDR Register (Australian Open Banking)

Lists data holders and their CDR participation status from the official Australian CDR Register. Two modes: holders (per-brand details with industry, ABN, public base URI) and status (per-legal-entity ACTIVE/REMOVED).

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Huxley

Huxley

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Share

Apify Store Python 3.11+ LICENSE

Lists the data holders and legal entities registered under Australia's Consumer Data Right (CDR) — the open-banking regime run by the ACCC. Two modes:

  • holders (default) — list data-holder brands (banks, energy retailers, non-bank lenders), with the industries they support, their public base URI, ABN/ACN, and logo.
  • status — list every legal entity in the Register with its current CDR status (ACTIVE or REMOVED).

The Actor talks to the official CDR Register REST API at https://api.cdr.gov.au/cdr-register/v1/. No auth, no rate limiting, no scraping.


Output shape (holders mode)

{
"kind": "data_holder_brand",
"brand_id": "ceca4dce-3f8f-ef11-95f6-000d3a79c46e",
"interim_id": "fe051e80-e743-44e1-ae83-a4d6286eb596",
"brand_name": "Alex.Bank",
"industries": ["banking"],
"public_base_uri": "https://public.cdr.alex.com.au",
"abn": "13627244848",
"acn": "627244848",
"logo_uri": "https://www.alex.bank/assets/alex-bank-logo.png",
"last_updated": "2026-07-01T12:14:23Z",
"fetched_at": "2026-07-09T14:19:48Z",
"status": null,
"legal_entity_status_counts": {"ACTIVE": 99, "REMOVED": 14}
}

Output shape (status mode)

{
"kind": "legal_entity_status",
"legal_entity_id": "e339fcd4-b5b8-ed11-a852-000d3a8842e1",
"status": "ACTIVE",
"fetched_at": "2026-07-09T14:20:10Z"
}

Quick start

# All 117 banking brands
apify call mrjerry/cdr-register --input '{"mode":"holders","industry":"banking"}'
# All brands with "AMP" in the name (catches AMP Bank GO, My AMP, Ampol Energy)
apify call mrjerry/cdr-register --input '{"mode":"holders","name_contains":"AMP"}'
# First 5 banking brands
apify call mrjerry/cdr-register --input '{"mode":"holders","industry":"banking","limit":5}'
# Every legal entity with its CDR status (113 records: 99 ACTIVE, 14 REMOVED)
apify call mrjerry/cdr-register --input '{"mode":"status"}'

From Python:

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_API_TOKEN")
run = client.actor("mrjerry/cdr-register").call(
run_input={"mode": "holders", "industry": "banking"},
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["brand_name"], "->", item["public_base_uri"])

Inputs

FieldModeTypeDefaultDescription
modeallstringholdersholders (default) or status.
industryholdersstringallbanking, energy, non-bank-lending, or all.
name_containsholdersstringCase-insensitive substring match on the brand name, e.g. commbank, AMP, paypal.
statusholdersstringACTIVE or REMOVED. The Register API doesn't expose brand-level status, so this is a forward-compatible filter — when the Register adds it, the filter will start working.
limitholdersintegerCap the number of brand records pushed.

What's in the Register

As of mid-2026 the Register has:

  • ~200 data-holder brands across three sectors
  • 113 legal entities with ACTIVE or REMOVED status
  • Three CDR sectors: banking (Big 4 + neobanks + non-bank lenders), energy (retailers), and non-bank-lending (mortgage managers, etc.)

Notable banking brands discovered by the Actor include: Alex.Bank, AMP Bank GO, ANZ, Bank of Queensland, Bendigo Bank, CBA, Citibank, HSBC, ING, Macquarie, MyState Bank, NAB, PayPal Australia, Suncorp, Tyro, Westpac, and many more.


How it works

The Actor calls two endpoints of the official CDR Register:

EndpointWhat it returns
GET /cdr-register/v1/{industry}/data-holders/brands/summaryPer-brand info: name, publicBaseUri, ABN/ACN, logoUri, industries, lastUpdated.
GET /cdr-register/v1/all/data-holders/statusPer-legal-entity ACTIVE/REMOVED status.

Both endpoints require the x-v: 1 header (per the Consumer Data Standards) but no authentication. The Actor does a single GET per run, normalises the response, and pushes one record per brand (or per legal entity, in status mode) to the Apify Dataset.


Use as an LLM tool

Three natural agent tasks this Actor enables:

  1. "Is bank X on CDR?"mode: "holders", name_contains: "<bank>", industry: "banking". A hit means they're on CDR; the publicBaseUri field is where to find their public product API.
  2. "Which banks are on CDR?"mode: "holders", industry: "banking". Get every banking brand in the Register.
  3. "Has any bank recently left CDR?"mode: "status", then look for status: "REMOVED" records.

You can wrap the Actor as an MCP server with the python-mcp-empty template to expose it directly to Claude as a tool.


Local development

# Install
pip install -r requirements.txt
# Run with a test input
echo '{"mode":"holders","industry":"banking","limit":3}' \
> storage/key_value_stores/default/INPUT.json
apify run
# Inspect
ls storage/datasets/default/
cat storage/datasets/default/000000001.json

Limits & gotchas

  • No brand-level status field. The Register's status endpoint is keyed by legalEntityId; brand records are keyed by dataHolderBrandId. There's no public join. Each brand record carries a legal_entity_status_counts field that summarises the Register-wide ACTIVE/REMOVED totals so callers can at least see the trend.
  • No retry on transient errors. The CDR Register is reliable; add tenacity if you need it.
  • Free plan = zero monetization. On Apify's free tier you pay for compute with monthly free credits. The Actor is tiny (one HTTP GET per mode) so cost is negligible.
  • Data recipients aren't covered yet. The data-recipients/brands/summary endpoint is not currently public (returns 404 on the public API). If it goes live, this Actor will be the natural place to add a recipients mode.

License

MIT.