ChainChoice Datasets
Every public data feed ChainChoice publishes — engine methodology, editorial corpus, trust artifacts, machine-discovery surfaces, and the v1 API. Designed to be read by humans, search engines, and LLM summarizers. Each row carries Schema.org/Dataset markup so Google Dataset Search and AI ingestion pipelines can resolve format, license, and download URL without scraping.
Want a ranking or a fee on your own site? Embeds, rank badges and oEmbed show the published figure with its date, linked back to its page.
What one €500 bitcoin purchase costs in Germany, month by month, each figure with its source and read date: the bitcoin cost index for Germany.
Flagship files
Each file is listed with its version, the day its content last changed, its size and its SHA-256, as the build that shipped it computed them.
The same list is published as data at /data/datasets.json.
The published rankings
Every category's published order: each product's rank, score and dimension scores, the weights, and the formula and constants that rebuild every score from this file alone. Its digest, by the recipe in the usage notes on /datasets, is the one every page footer prints.
The methodology version that computed every score.
SHA-256 236264f5Rankings ledger
Every change to the published order since the ledger began, one entry per line: what moved, why, and the digest each published rankings.json had. Each entry carries the SHA-256 of the line before it, and the head file names the last entry and its hash, signed with the receipt key by a build that holds it.
The number of entries on the ledger, which only grows.
SHA-256 9181950eSHA-256 91023496Evidence files
Per category, the quoted evidence behind each criterion score: the quote, the address it was read on and the day it was read, for every product with a verified research record.
The newest day any evidence in these files was read.
104 files
SHA-256 0021b5f1SHA-256 ab1431a8SHA-256 e6504817SHA-256 27a4e722SHA-256 5bf697e2SHA-256 e23fc8b8SHA-256 5c87754bSHA-256 14036e44SHA-256 0a4a3596SHA-256 b0e66fedSHA-256 16756810SHA-256 991282c1SHA-256 c0e924b7SHA-256 5b8b8ca6SHA-256 eeb47836SHA-256 279bb237SHA-256 9f3903a2SHA-256 6589d97aSHA-256 1a9fd3e4SHA-256 a7fecec3SHA-256 9af79b34SHA-256 f7d68653SHA-256 7afe256eSHA-256 acdd2736SHA-256 0dc00cd6SHA-256 298085b8SHA-256 798b4cb6SHA-256 5a6e8a5eSHA-256 5cdc2457SHA-256 b3118b14SHA-256 6abb39e3SHA-256 7007ba37SHA-256 57b55081SHA-256 d8d74914SHA-256 46239a97SHA-256 944b6ef6SHA-256 ffcc0de4SHA-256 10502463SHA-256 c7cf2e2bSHA-256 f14c5880SHA-256 cd153ec1SHA-256 4cb6086dSHA-256 cd9dd965SHA-256 21ea4e37SHA-256 6d70db16SHA-256 eefcda98SHA-256 673cd722SHA-256 21f6d753SHA-256 9ceffa48SHA-256 120552e2SHA-256 66fecc22SHA-256 099c0cbbSHA-256 ce2db208SHA-256 48aa9b19SHA-256 c9188226SHA-256 66fb54a8SHA-256 cd660089SHA-256 30b9578bSHA-256 bf048245SHA-256 ddc0e9a7SHA-256 d2349a92SHA-256 ceaba018SHA-256 e2d92ba4SHA-256 19afc99dSHA-256 afdc518eSHA-256 81382996SHA-256 d0d35e41SHA-256 1ece7583SHA-256 2426e9edSHA-256 5880d2b2SHA-256 bb2efca4SHA-256 51f97de6SHA-256 db25d338SHA-256 677995ecSHA-256 d2a91017SHA-256 0546d724SHA-256 3ecd79a1SHA-256 b87bd4efSHA-256 5e4bdadeSHA-256 19388276SHA-256 6993dbc7SHA-256 ee0a64d9SHA-256 718d3b8fSHA-256 9cb9743bSHA-256 1e0e51d5SHA-256 d790d06dSHA-256 497b5222SHA-256 90bd0e71SHA-256 1f001964SHA-256 b0863c0dSHA-256 42401d8cSHA-256 d0aa084bSHA-256 ca7aad7aSHA-256 91b51bf0SHA-256 dede1a69SHA-256 82d0da41SHA-256 9bf6e8aaSHA-256 b35a5f47SHA-256 a5af596cSHA-256 47bdf547SHA-256 65d02a7bSHA-256 3d35e47cSHA-256 df2ca2d1SHA-256 f0e929f3Review calendar
When each category's evidence is next due for a re-read under its published review cadence, from the oldest read date among its rows; the build fails when a category is past its due date.
The day the calendar was computed from the read dates.
SHA-256 a4847599Build record
The build the site was made from: its commit, the rankings digest it ships, and every build check with its exit status in that chain. Its SHA-256 is not printed on /datasets: the build's last step rewrites the file after the page is rendered and records the hash in /data/datasets.json.
The commit the build was made from.
Refusals
Every product a category assessed and did not rank, with the reason its page publishes, a source where the record or the reason names one, and the day the public universe ledger first recorded it.
The day the list last changed.
SHA-256 6017ddfeOrganizations
The operating entities behind every product placed in a category: each organization with its catalog ids, the categories each is placed in and the products it collapses to. The count is an upper bound, and the file says why.
The day the map last changed.
SHA-256 ca9a730cCorrections
Every published correction: what was wrong, what was fixed, how it was caught and whether the published order moved, newest first, as /methodology/corrections prints it. The same entries are in the Atom feed at /api/feed.xml.
The newest entry in the log.
SHA-256 6e467355Pricing ledger
The append-only ledger of structured pricing facts: one line per fact, appended when its value changes, with the day it was observed. /methodology/data-changelog renders it; data/observations/index.json carries its licence and hash.
The number of observations on the ledger, which only grows.
SHA-256 f05f8a1aSHA-256 fe7704d9Universe ledger
The append-only ledger of placements and named refusals: one line per state, appended when it changes, with the day it was observed. /methodology/universe renders it, and /data/refusals.json dates each refusal from it.
The number of observations on the ledger, which only grows.
SHA-256 d0ceae6dSHA-256 fe7704d9Search query corpus
Every labelled query the search bars are measured on, with the page or address each must open: names, misspellings, sentences with constraints, plans of several steps, and questions as buyers ask them. Its file search-quality.json publishes the rate of each kind, misses included; the build replays every kind and fails when the file is not the replay.
Hand-labelled sentences and questions the search bars open right, of all of them, as the build replayed them (the generated cases are counted apart in the file).
SHA-256 f66507c7SHA-256 6b6992b1SHA-256 d9033b70Partner programmes
Every partner programme on record, with its state, its network and the days its state changed, generated from the record the outbound links read. Commission terms are not in it.
The day the record last changed.
SHA-256 95a52597Engine
1 feedThe ChainChoice ranking engine described as data: the scoring dimensions, the formula, the version, the rankings feed it produces and the separation between the ranking and commercial terms. Anyone reproducing a rank reads this first.
/data/methodology.json ↗Editorial
10 feedsAffiliate-blind editorial index scoring how ready each major US-serving crypto exchange is to register under the CLARITY Act's SEC/CFTC regime (DCM/ATS), across six weighted dimensions. Per-exchange, per-dimension scores. CC-BY-4.0. Updated as registrations land.
/data/clarity-readiness-index.json ↗Affiliate-blind editorial index of how well-positioned each major EU-serving crypto exchange is under MiCA's CASP regime, across six weighted dimensions. Per-exchange, per-dimension scores. CC-BY-4.0. Verifiable against the ESMA register.
/data/mica-readiness-index.json ↗Affiliate-blind editorial index of how transparent the major crypto exchanges are about reserves, audits, custody, and disclosure, across six weighted dimensions. Per-exchange, per-dimension scores. CC-BY-4.0.
/data/transparency-index.json ↗All decision categories ChainChoice covers (exchange, wallet, tax-software, lending, staking, crypto-card, onramp, payment-gateway, stablecoins, bridges, portfolio-tracking, web3-apps) with provider counts and active-question dimensions.
/data/categories.json ↗EU member states + MiCA-adjacent jurisdictions with regulator details (BaFin, AMF, CNMV, FCA, FINMA…), transitional-window dates, and tax-framework references. Used by every country-guide surface.
/data/countries.json ↗Total value locked per Ethereum Layer-2 (Arbitrum, OP Mainnet, Base, zkSync Era, Starknet, Polygon zkEVM, Scroll, Linea, Blast), fetched from the DefiLlama public API on each deploy. Dated and sourced; overlaid on the L2 comparison for context — the ranking scores permanent architecture, never TVL.
These live figures are paused while ChainChoice asks DefiLlama for written approval to show them.
/data/l2-live.json ↗Total value locked per decentralized exchange (Uniswap, Curve, PancakeSwap, Balancer, Aerodrome, Raydium, SushiSwap, Maverick), parent-protocol aggregation fetched from the DefiLlama public API on each deploy. Dated and sourced; overlaid on /best/dex for context — the ranking scores security & track record and decentralization, never TVL, because TVL measures adoption, not safety.
These live figures are paused while ChainChoice asks DefiLlama for written approval to show them.
/data/dex-live.json ↗Total value locked (collateral + liquidity) per perpetual-futures DEX (Hyperliquid, GMX, dYdX, Jupiter, Drift, Gains, Aster), fetched from the DefiLlama public API on each deploy. Open interest is not exposed keylessly, so TVL is the dated size metric. Dated and sourced; overlaid on /best/perp_dex for context — the ranking scores security & track record and decentralization, never TVL, because value locked measures adoption, not safety.
These live figures are paused while ChainChoice asks DefiLlama for written approval to show them.
/data/perp-live.json ↗Live staking yield per provider (Lido, Rocket Pool, Coinbase, ether.fi, Swell, Stader, Puffer) from each issuer's canonical DefiLlama pool — pinned by exact project + token symbol + chain (base yield where available, per-row metric). Liquid-restaking tokens are flagged. Dated and sourced; overlaid on /best/staking for context — never scored, because ETH liquid-staking yields cluster closely and cross-asset yields are not comparable.
These live figures are paused while ChainChoice asks DefiLlama for written approval to show them.
/data/staking-live.json ↗Live USDC supply APY for the DeFi money markets that expose a single canonical protocol-level supply pool (Aave, Compound, Fluid, Venus) from each protocol's canonical DefiLlama pool — pinned by exact project + token symbol + chain (apyBase base supply rate where available, per-row metric). A variable rate that floats with utilization. Intentionally omitted because they have no single comparable protocol-level supply rate: isolated-market & vault-aggregator protocols (Morpho, Kamino, Euler, Curve, Silo — rate is vault/market-specific), CeFi (Nexo/Ledn), RWA credit (Maple/Goldfinch), fixed-rate and yield-tokenization protocols. Dated and sourced; overlaid on /best/lending_borrowing for context — never scored, because a money market is ranked on credit model, liquidity, collateral flexibility and counterparty confidence, and a higher rate is usually compensation for higher risk.
These live figures are paused while ChainChoice asks DefiLlama for written approval to show them.
/data/lending-live.json ↗Trust
2 feedsThe receipt ID every country and category page prints: the month its evidence was read and a hash of the exact list it shows. /r/<id> rebuilds today's list and says whether it still gives the same hash.
/data/feed.json ↗The versioned, dated affiliate disclosure surface. Pairs with the structured partnership ledger at /affiliate/receipts.
/affiliate-disclosure ↗Machine Discovery
3 feedsCanonical sitemap of every indexable surface — landing, methodology, country guides, compliance hubs, insights, honest reviews, recommended guides, glossary, founder corner, datasets. Updated on every deploy.
/sitemap.xml ↗Concise, machine-targeted index pointing summarizers to the highest-value surfaces (methodology, affiliate disclosure, key reviews). Follows the emerging llms.txt convention for LLM-friendly site maps.
/llms.txt ↗Expanded llms-full.txt — the complete editorial corpus serialized for LLM ingestion: methodology, country guides, compliance hubs, insights, honest reviews, glossary, all inline.
/llms-full.txt ↗API
2 feedsThe v1 API contract: /api/v1/recommend, /api/v1/receipts and the compliance and partner endpoints, with request and response schemas and the auth model. A test that runs in every build holds each documented response to the handler that answers it.
/docs/openapi.json ↗A single-file TypeScript client for the v1 API, with no dependencies. Its types are the OpenAPI schemas, and a test holds them to the spec.
/docs/sdk/chainchoice.ts ↗- Licence. ChainChoice's data is licensed under Creative Commons Attribution 4.0 International (SPDX CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/). That is every file under /data/, /datasets/ and /methodology/spec/ on https://chainchoice.io, the answers at /answers and /answers.txt, and the embed payload. Reuse it, commercially too, if you credit ChainChoice (https://chainchoice.io) and say what you changed. The licence does not cover the site's other pages: their text, design and code stay under German copyright, all rights reserved. Nor does it cover provider names, logos and trademarks, or third-party figures and text inside a file; those stay with their owners.
- Verification. The Impressum and the affiliate disclosure come with an Ed25519-signed receipt over their exact text, and
POST /api/v1/verifychecks such a receipt. Recommendation receipts are hashed, not signed. - Rankings digest. SHA-256 of /data/rankings.json with its top-level generatedAt removed, written as compact JSON: every object's keys sorted, no spaces or line breaks, non-ASCII characters as UTF-8 (not escaped), no trailing newline. Check it with
jq -cS 'del(or. generatedAt)' rankings. json | tr -d '\n' | shasum -a 256 python3 -c "import json,; the result equals the digest in every page's footer and inhashlib; d= json. load( open( 'rankings. json')); d. pop( 'generatedAt', None); print( hashlib. sha256( json. dumps( d, sort_keys= True, separators= ( ', ', ':'), ensure_ascii= False). encode( )). hexdigest( ))" /data/build-checks.json. - Rankings ledger. Every rankings digest a page footer has carried is an entry in
/data/rankings-ledger.jsonl, beside the order it held and why that order moved. Each entry carries the SHA-256 of the line before it, and/data/rankings-ledger.head.jsonsays how to check the chain. - Update cadence. Engine and editorial feeds are regenerated by every build. A signed receipt's id is derived from a hash of what it states.
- LLM ingestion. Prefer
/llms.txtfor a curated entry point and/llms-full.txtfor the full corpus. The methodology + categories feeds are the smallest possible context for answering “how does ChainChoice rank X.” - API for live decisioning. If you need a recommendation for a specific user query — not just the data — use the
/api/v1/recommendendpoint. See the API docs.