Bitcoin Macro Oscillator (BMO)

Get the daily history of the Bitcoin Macro Oscillator (BMO), together with the price on each day. The endpoint takes no parameters and returns the full history since 2012 in one call, useful for seeing where bitcoin stands within the long-term cycle.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Available on these API plans: Startup Standard Professional Enterprise

Update frequencyDaily

Response Data

data is an array; each element is one day's data, and timestamp is the millisecond timestamp of 00:00 (UTC) on that day. This endpoint has no request parameters and returns the full history at once: as of 2026-10-20, 5371 records in total, and the first record is the earliest data (2012-01-09). The data date of the latest record may be earlier than the day of the call; for example, when called on 2026-10-23, the latest record was 2026-09-22. When displaying it, also show the date of its timestamp, and do not present it as today's value. The example on the right keeps only the first 2.

200 · application/json · See the response example in the right panel.

FieldTypeAlways ReturnedDescription
codestringYesBusiness status code; "0" means success
msgstringNoResult message; not returned on success
dataarray of objectYesArray of daily data
data[].pricenumberYesBitcoin price on that day, in USD; values include both integers and decimals. The price returned by different indicator endpoints for the same day is not exactly the same; keep this in mind when merging data
data[].bmo_valuenumberYesBMO indicator value; can be negative
data[].timestampinteger (int64)YesData date, timestamp in milliseconds (UTC), at 00:00 of that day

API Plans

Only the API plans marked Yes in the table below can call this endpoint. For the price of each plan, see API Plans.

API PlanAccess
Hobbyist❌ No
Startup✅ Yes
Standard✅ Yes
Professional✅ Yes
Enterprise✅ Yes

Use This Endpoint with AI

Pick a task and click Open in ChatGPT or Open in Claude: the AI reads this page first and then gives you the result. You can also click Copy and paste the full prompt into the AI tool you use.

Plot with Python
Have AI write code that plots BMO with the bitcoin price overlaid.
Calculate the historical percentile
Have AI write a function that calculates where the latest BMO record stands in its history.
Understand this endpoint
Have AI explain the response fields and what BMO means in plain language.

This endpoint provides data through the REST API. Use the prompts above to have AI write the request code. For the tools available through MCP, see CoinGlass MCP.

Use Cases

ScenarioDescription
Long-cycle position referenceObserve the highs and lows of BMO across past bull and bear cycles to understand the current relative position.
Cross-check with other cycle indicatorsRead it together with indicators such as Bitcoin Net Unrealized Profit/Loss (NUPL) and Puell Multiple so they confirm each other.
Cycle indicator dashboardSuitable for display on a cycle indicator dashboard; label the data date when displaying it, since the latest data may be dated earlier than the current day.
Charts for research reportsA single request returns the complete series since 2012, suitable for research reports.

Related Endpoints

EndpointHow It Differs
Bitcoin Net Unrealized Profit/Loss (NUPL)Unrealized profit/loss of all holders as a share of market cap
Bull Market Peak IndicatorsCurrent and target values of multiple cycle indicators
Puell MultipleLooks at the cycle position from the angle of miner revenue
2-Year MA MultiplierUses the 2-year moving average and 5 times its value to gauge the price position

FAQ

Can bmo_value be negative?

Yes. BMO is an oscillator; early data is about -0.26.

Can I query ETH or other coins?

No. This endpoint is a fixed bitcoin indicator dataset with no coin parameter; it only returns bitcoin data.

Can I query data for a specific time range only?

No. This endpoint has no parameters and always returns the full history (the response is about 450 KB). If you need a specific period, filter locally by timestamp. We recommend caching the results and refreshing as needed; there is no need to request frequently.

How often is it updated?

Once a day, but that does not mean every day has a new data date: when called on 2026-10-23, the latest record was still 2026-09-22. When getting data by date, rely on timestamp.

Learn More: Bitcoin Macro Oscillator (BMO)

What Is the Bitcoin Macro Oscillator?

The Bitcoin Macro Oscillator (BMO) is an oscillator used to observe the relative position of bitcoin in the macro cycle. This endpoint returns daily records of the BMO value and that day's price; the value can be negative.

How Should BMO Values Be Read?

BMO is best read by its relative position within its own history: compare the current value with the highs and lows of past bull and bear cycles to judge which stage of the cycle bitcoin is currently in.

Which Indicators Should You Combine with BMO?

BMO only describes relative position and does not constitute a buy or sell signal. You can use it together with cycle indicators such as Bitcoin Net Unrealized Profit/Loss (NUPL), Puell Multiple and Bull Market Peak Indicators so they confirm each other.

Response

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json