BitcoinYield Offers API
The Offers API from BitcoinYield — 1 operation(s) for offers.
The Offers API from BitcoinYield — 1 operation(s) for offers.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/bitcoinyield:bitcoinyield-offers-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: BitcoinYield Offers API
description: 'Live crypto yield comparison across the whole market (DeFi and CeFi), as a free REST API and MCP server. Live crypto interest rates on Bitcoin, ETH and stablecoins compared: DeFi yield, crypto lending rates, staking and CeFi earn, each graded A to D for risk. No key or account needed.'
version: 1.9.0
license:
name: BitcoinYield Terms of Service
url: https://bitcoinyield.co/legal/terms
servers:
- url: https://bitcoinyield.co
security: []
tags:
- name: Offers
paths:
/api/v1/offers:
get:
operationId: list_offers
summary: List the top live offers for one asset
description: 'The top live yield offers for one asset (5 by default, up to 20) in BitcoinYield''s own order: rate and risk together, with offers that have a month of steady history and $10M+ of liquidity first. Each offer carries its platform, chain, product type, reported rate (APY or APR), organic versus incentive split, 30-day average, liquidity, A-D risk grade with its main reasons, US availability, investor access, the platform''s own deposit link and the page to cite. Filter by chain or a risk ceiling. Use it to compare options; list_yields gives one pick per asset. Rates are variable and not advice. No key required.'
parameters:
- name: asset
in: query
required: true
description: The asset's symbol, e.g. BTC, USDC or USDE.
schema:
type: string
description: The asset's symbol, e.g. BTC, USDC or USDE.
enum:
- BTC
- ETH
- SOL
- USDC
- USDT
- DAI
- USDE
- GHO
- CRVUSD
- PYUSD
- RLUSD
- FRAX
- USD1
- USDY
- USD0
- USDG
- AUSD
- USDD
- USD3
- REUSD
- USDX
- DEUSD
- USDF
- USR
- USDAI
- JUPUSD
- AVUSD
- BNB
- AVAX
- TRX
- HYPE
- LINK
- XRP
- POL
- SKY
- CRV
- SUI
- CVX
- AERO
- BUIDL
- USYC
- USTB
- OUSG
- USCC
- TBILL
- VBILL
- THBILL
- ACRED
- STAC
- ONYC
- STBT
- DOLA
- FRXUSD
- MSUSD
- FXUSD
- APXUSD
- APYUSD
- STRUSD
- SYZUSD
- VUSD
- STCUSD
- USDU
- SRUSD
- BOLD
- LISUSD
- YUSD
- BUCK
- EURC
- EURE
- name: chain
in: query
required: false
description: Only offers on this chain, e.g. Ethereum, Base, Arbitrum or Solana (case-insensitive). Centralized (CeFi) offers have no chain.
schema:
type: string
description: Only offers on this chain, e.g. Ethereum, Base, Arbitrum or Solana (case-insensitive). Centralized (CeFi) offers have no chain.
- name: max_risk
in: query
required: false
description: 'Only offers graded at or below this letter: A (lower risk), B (moderate), C (elevated), D (higher).'
schema:
type: string
description: 'Only offers graded at or below this letter: A (lower risk), B (moderate), C (elevated), D (higher).'
enum:
- A
- B
- C
- D
- name: limit
in: query
required: false
description: How many offers to return, 1 to 20 (default 5).
schema:
type: integer
description: How many offers to return, 1 to 20 (default 5).
minimum: 1
maximum: 20
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
updated_at:
type:
- string
- 'null'
description: When the feed was last refreshed (ISO 8601). It refreshes every 3 hours.
stale:
type: boolean
description: True when part of this snapshot is over 6 hours old (a scheduled refresh was missed).
partial:
type: boolean
description: True when a data source was missing from this snapshot.
degraded_sources:
type: array
items:
type: string
description: The sources missing from this snapshot, if any.
asset:
type: string
count:
type: integer
url:
type: string
description: The asset's full comparison on BitcoinYield.
offers:
type: array
items:
type: object
properties:
rank:
type: integer
description: The offer's place in BitcoinYield's order (rate and risk together), 1 first.
platform:
type: string
description: The platform's name, e.g. Aave V3.
chain:
type:
- string
- 'null'
description: The chain the offer is on; null for a centralized (CeFi) offer.
market:
type: string
description: The vault, market or token the rate is paid in.
product_type:
type: string
description: How the yield is produced, e.g. DeFi lending, Savings rate or Liquid staking.
rate:
type: number
description: 'The annual rate in percent (5.2 means 5.2%) as BitcoinYield shows it and orders on it: today''s reported rate, or its 7-day average when that is lower, so a one-day spike never leads.'
rate_today:
type: number
description: 'The latest reading: today''s rate, or for a vault, pool or staking token the middle of its 1-day, 7-day and 30-day realized returns. Above rate when that reading is higher than the 7-day average.'
rate_basis:
type: string
enum:
- apy
- apr
- unknown
description: Whether the source reports the rate as APY (compounded) or APR; unknown when it does not say.
rate_base:
type:
- number
- 'null'
description: The organic part of rate (interest, fees, staking); rate_base + rate_rewards = rate.
rate_rewards:
type:
- number
- 'null'
description: The part of rate paid as incentive rewards, which last only as long as someone funds them (beside a rate held at its 7-day average, scaled to that rate).
avg_7d:
type:
- number
- 'null'
description: The rate's 7-day average (rate is the lower of it and rate_today).
rewards_program:
type:
- object
- 'null'
description: Who pays rate_rewards and how far ahead it is funded, when the incentive program is known (Merkl campaigns on Morpho, Euler, Aave and Fluid); null otherwise.
properties:
paid_in:
type: array
items:
type: string
description: Reward token symbols.
funded_through:
type: string
description: Last day (UTC, YYYY-MM-DD) the live round is funded through.
since:
type: string
description: First day (UTC) of the unbroken run of rounds the live one belongs to.
rounds:
type: integer
description: Rounds in that run, the live one included (1 = never renewed yet).
source:
type: string
enum:
- merkl
required:
- paid_in
- funded_through
- since
- rounds
- source
avg_30d:
type:
- number
- 'null'
description: The rate's 30-day average; null under a month of history.
durability:
type:
- string
- 'null'
description: 'The rate (as shown and ordered) against its 30-day average: durable, moderate, volatile or spiking; posted when it has not moved in 30 days (a rate the platform sets); lumpy when a realized rate''s 1-day, 7-day and 30-day readings disagree (income booked in lumps); insufficient under a month of history.'
liquidity_usd:
type:
- number
- 'null'
description: 'The liquidity a depositor can exit into, in US dollars: a lending pool''s withdrawable amount, a credit pool''s cash, or for a staking token what sells at once within 1% of its market price (the rest of its stake leaves through its issuer''s queue, see exit), or for a fund its issuer redeems what its redemption vault pays at once. Null when the source reports none (custodial desks).'
exit:
type:
- string
- 'null'
description: 'How a holder gets the underlying back at full value, as its issuer states it: a withdrawal queue, a cooldown or a redemption wait, and whether the token can also be sold on a market at the market price. Null when none is on record; a lending market''s exit is its liquidity_usd.'
risk_tier:
type:
- string
- 'null'
description: 'BitcoinYield''s A-D risk grade: A lower risk, D higher.'
risk_reasons:
type:
- string
- 'null'
description: The main factors behind the grade.
us_available:
type: string
enum:
- 'yes'
- 'no'
- unknown
description: 'Whether a US retail user can open it: no when the platform or issuer excludes US persons, or admits only accredited investors or invited addresses (see access).'
access:
type:
- string
- 'null'
description: 'An investor restriction: KYC, Accredited only or Invite only.'
earn_url:
type:
- string
- 'null'
description: 'Where to deposit: the platform''s own page.'
partner:
type: boolean
description: True when BitcoinYield may earn a commission through earn_url (it never changes the order).
rate_source_url:
type:
- string
- 'null'
description: Where the rate was read.
fetched_at:
type:
- string
- 'null'
description: When this rate was read (ISO 8601).
required:
- rank
- platform
- product_type
- rate
- rate_today
- rate_basis
- us_available
- partner
required:
- asset
- count
- offers
- url
'400':
description: A parameter outside its declared values
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
tags:
- Offers
x-provenance:
method: harvested
publisher: BitcoinYield
source: https://bitcoinyield.co/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)