Markets
Get the lending markets Scrooge tracks, with their current rates.
List markets
| Method | Path | Auth |
|---|---|---|
GET | Path/markets | AuthAPI key |
Parameters
| Parameter | Meaning |
|---|---|
chain | MeaningOnly markets on this chain: solana, ethereum. |
protocol | MeaningOnly markets of this protocol: Kamino, MarginFi, Save, Jupiter Lend, Jupiter, Hylo, Loopscale, Aave v3, Morpho Blue. |
Each parameter is optional. A value outside its list returns 422.
Response
| Field | Meaning |
|---|---|
success | MeaningAlways true on this response. |
data | MeaningThe markets, one object each. |
freshness.maxAgeSeconds | MeaningSeconds until the data can next change; 0 once that time has passed. |
sources | MeaningThe data sources and whether each holds data. A source without data adds no markets. |
Each market in data has these fields:
| Field | Meaning |
|---|---|
id | MeaningThe market's id on its chain. |
slug | MeaningNot present on this endpoint. |
protocol | MeaningThe protocol that runs the market. |
marketGroup | MeaningThe protocol's name for the group the market is in, or null. |
label | MeaningThe market's name, built from its assets, or null. |
labelCollateral | MeaningThe collateral asset of the pair in the name, or null. |
labelLltvBps | MeaningThe liquidation LTV of the pair in the name, or null. |
nameShared | Meaningtrue when another market in the list has the same name. |
asset | MeaningThe asset the market holds, and in what form. |
chain | MeaningThe chain the market is on. |
risk | MeaningThe market's risk class. No market is classified yet. |
supplyApyBps | MeaningThe supply APY, or null. |
borrowApyBps | MeaningThe borrow APY, or null. |
apyDisplayBoundBps | MeaningThe rate above which the protocol shows only this bound, or null. |
utilizationBps | MeaningThe share of the supplied amount that is borrowed, or null. |
tvl | MeaningTotal value locked: its value, currency and source, or null. |
tvlReadFailure | MeaningWhen the TVL could not be read, an object whose readAtUnixSeconds is the time of the failed read; otherwise null. |
protocolWarnings | MeaningThe warnings the protocol publishes for the market and when they were read, or null. |
suppliedBaseUnits | MeaningThe amount supplied, as a decimal string in the asset's smallest unit, or null. |
assetDecimals | MeaningThe asset's decimals, or null. |
history | MeaningAlways null on this endpoint. |
borrowHistory | MeaningAlways null on this endpoint. |
maxLtvBps | MeaningThe maximum LTV, or null. |
liquidationThresholdBps | MeaningThe liquidation threshold, or null. |
operationalState | MeaningThe state the protocol publishes for the market, or null. |
observedAt | MeaningWhen the market's values were read. |
Fields whose name ends in Bps are in basis points, where 100 is 1%. Times are Unix seconds.
Example
curl "$SCROOGE_API_URL/markets?chain=ethereum" \
-H "Authorization: Bearer $SCROOGE_API_KEY"The example response is shortened to one market.
{
"success": true,
"data": [
{
"id": "0x90ef0c5a0dc7c4de4ad4585002d44e9d411d212d2f6258e94948beecf8b4c0d5",
"protocol": "Morpho Blue",
"marketGroup": null,
"label": "sUSDe / PYUSD",
"labelCollateral": {
"kind": "unverified",
"chain": "ethereum",
"mint": "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497",
"claimedSymbol": "sUSDe"
},
"labelLltvBps": 9150,
"nameShared": false,
"asset": {
"kind": "spot",
"asset": {
"kind": "unverified",
"chain": "ethereum",
"mint": "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8",
"claimedSymbol": "PYUSD"
}
},
"chain": "ethereum",
"risk": {
"kind": "unclassified"
},
"supplyApyBps": 367,
"borrowApyBps": 413,
"apyDisplayBoundBps": 100000,
"utilizationBps": 8906,
"tvl": {
"value": 109657883.20646952,
"currency": {
"kind": "unit",
"namespace": "iso-4217",
"unit": "USD"
},
"source": {
"kind": "venue-figure",
"readAtUnixSeconds": 1792873003
}
},
"tvlReadFailure": null,
"protocolWarnings": {
"source": "Morpho Blue",
"readAtUnixSeconds": 1792872177,
"warnings": []
},
"suppliedBaseUnits": "109621052328718",
"assetDecimals": 6,
"history": null,
"borrowHistory": null,
"maxLtvBps": 9150,
"liquidationThresholdBps": 9150,
"operationalState": "NoStatusMechanism",
"observedAt": 1792873000
}
],
"freshness": {
"maxAgeSeconds": 900
},
"sources": [
{
"sourceId": "kamino",
"kind": "observed"
},
{
"sourceId": "aave",
"kind": "observed"
},
{
"sourceId": "morpho",
"kind": "observed"
}
]
}