{"openapi":"3.1.0","info":{"title":"Bollinger Bands & Squeeze Screener API","version":"1.0.0","description":"Which markets are coiled for a breakout and which are stretched to their bands, computed live from Yahoo Finance (no key, nothing stored). Bollinger Bands wrap a 20-day average in plus/minus two standard deviations; price riding the upper band is strong, the lower band weak, and — the prized signal — when the bands pinch tight (a \"squeeze\"), volatility has compressed and a big move usually follows. For a cross-asset, cross-sector universe — equity indices and sectors, gold, oil, commodities, bonds and crypto — this computes each asset's bands, its %B (where price sits between the lower band at 0 and the upper at 100), the bandwidth and whether bandwidth is at a multi-month low (a squeeze, breakout pending). The screener endpoint returns the board with the markets in a squeeze, the ones breaking above the upper band and the ones breaking below the lower. The asset endpoint returns one market's Bollinger card. The universe endpoint lists what is covered. The Bollinger Bands / volatility-squeeze screener cut — distinct from the bring-your-own-candle technical-indicator APIs, the FX-only z-score API and the market-breadth API. It finds the coiled springs across the whole market.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/bollinger-api","description":"oanor gateway"}],"tags":[{"name":"Screener"},{"name":"Asset"},{"name":"Universe"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/screener":{"get":{"operationId":"get_v1_screener","tags":["Screener"],"summary":"Cross-asset board with squeeze list, band breakouts and bandwidth ranking","description":"","parameters":[{"name":"class","in":"query","required":false,"description":"Filter by class: equities, sector, commodities, bonds, crypto","schema":{"type":"string"},"example":"sector"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Each market's 20-day Bollinger Bands. percent_b is where price sits between the lower band (0) and upper band (100); above 100 is breaking out, below 0 breaking down. bandwidth_pct is band width vs the average; bandwidth_percentile ranks it over ~6 months — a low percentile (squeeze=true at <=20) means volatility has compressed and a breakout often follows. Assets sorted tightest-squeeze first.","class":"sector","assets":[{"key":"energy","class":"sector","label":"Energy","price":57.12,"squeeze":false,"position":"inside bands","percent_b":25.2,"lower_band":55.8524,"upper_band":60.8836,"middle_band":58.368,"bandwidth_pct":8.62,"bandwidth_percentile":23},{"key":"financials","class":"sector","label":"Financials","price":52.62,"squeeze":false,"position":"near upper band (strong)","percent_b":98.2,"lower_band":50.7676,"upper_band":52.6534,"middle_band":51.7105,"bandwidth_pct":3.65,"bandwidth_percentile":24},{"key":"industrials","class":"sector","label":"Industrials","price":175.15,"squeeze":false,"position":"inside bands","percent_b":77.2,"lower_band":168.8995,"upper_band":176.9985,"middle_band":172.949,"bandwidth_pct":4.68,"bandwidth_percentile":29},{"key":"utilities","class":"sector","label":"Utilities","price":44.05,"squeeze":false,"position":"inside bands","percent_b":39.6,"lower_band":43.1035,"upper_band":45.4945,"middle_band":44.299,"bandwidth_pct":5.4,"bandwidth_percentile":47},{"key":"real_estate","class":"sector","label":"Real Estate","price":44.92,"squeeze":false,"position":"near upper band (strong)","percent_b":82.1,"lower_band":43.1221,"upper_band":45.3119,"middle_band":44.217,"bandwidth_pct":4.95,"bandwidth_percentile":48},{"key":"technology","class":"sector","label":"Technology","price":183.21,"squeeze":false,"position":"inside bands","percent_b":48.1,"lower_band":169.012,"upper_band":198.527,"middle_band":183.7695,"bandwidth_pct":16.06,"bandwidth_percentile":67},{"key":"health_care","class":"sector","label":"Health Care","price":154.09,"squeeze":false,"position":"near upper band (strong)","percent_b":91.1,"lower_band":143.7643,"upper_band":155.0987,"middle_band":149.4315,"bandwidth_pct":7.59,"bandwidth_percentile":88}],"source":"Yahoo Finance","scanned":7,"in_squeeze":[],"breaking_above":[],"breaking_below":[]},"meta":{"timestamp":"2026-06-12T10:35:07.967Z","request_id":"0455178e-78cd-443f-8304-ed86768df844"},"status":"ok","message":"Screener retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/asset":{"get":{"operationId":"get_v1_asset","tags":["Asset"],"summary":"One market Bollinger Bands card","description":"","parameters":[{"name":"asset","in":"query","required":true,"description":"Asset key (see /v1/universe)","schema":{"type":"string"},"example":"sp500"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"key":"sp500","note":"One market's Bollinger card: 20-day middle band and upper/lower bands (+/-2 sigma), percent_b (position in the bands), bandwidth and its ~6-month percentile, and whether it is in a squeeze (compressed, breakout pending).","class":"equities","label":"S&P 500","price":737.76,"source":"Yahoo Finance","symbol":"SPY","squeeze":false,"position":"inside bands","percent_b":29.5,"lower_band":726.8073,"upper_band":763.9837,"middle_band":745.3955,"bandwidth_pct":4.99,"bandwidth_percentile":55},"meta":{"timestamp":"2026-06-12T10:35:08.172Z","request_id":"1c1f94fa-6f7f-4c41-b451-03161789e65c"},"status":"ok","message":"Asset retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/universe":{"get":{"operationId":"get_v1_universe","tags":["Universe"],"summary":"Supported instruments","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Supported instruments. Pass key as asset= to /v1/asset, class= to /v1/screener.","count":21,"assets":[{"key":"sp500","class":"equities","label":"S&P 500","symbol":"SPY"},{"key":"nasdaq100","class":"equities","label":"Nasdaq 100","symbol":"QQQ"},{"key":"small_caps","class":"equities","label":"US Small Caps","symbol":"IWM"},{"key":"developed_intl","class":"equities","label":"Developed ex-US","symbol":"EFA"},{"key":"emerging","class":"equities","label":"Emerging Markets","symbol":"EEM"},{"key":"technology","class":"sector","label":"Technology","symbol":"XLK"},{"key":"financials","class":"sector","label":"Financials","symbol":"XLF"},{"key":"energy","class":"sector","label":"Energy","symbol":"XLE"},{"key":"health_care","class":"sector","label":"Health Care","symbol":"XLV"},{"key":"industrials","class":"sector","label":"Industrials","symbol":"XLI"},{"key":"utilities","class":"sector","label":"Utilities","symbol":"XLU"},{"key":"real_estate","class":"sector","label":"Real Estate","symbol":"XLRE"},{"key":"gold","class":"commodities","label":"Gold","symbol":"GLD"},{"key":"silver","class":"commodities","label":"Silver","symbol":"SLV"},{"key":"oil","class":"commodities","label":"Crude Oil","symbol":"USO"},{"key":"natural_gas","class":"commodities","label":"Natural Gas","symbol":"UNG"},{"key":"broad_commodities","class":"commodities","label":"Broad Commodities","symbol":"DBC"},{"key":"long_treasuries","class":"bonds","label":"Long Treasuries","symbol":"TLT"},{"key":"high_yield","class":"bonds","label":"High-Yield Credit","symbol":"HYG"},{"key":"bitcoin","class":"crypto","label":"Bitcoin","symbol":"BTC-USD"},{"key":"ether","class":"crypto","label":"Ether","symbol":"ETH-USD"}],"source":"Yahoo Finance","classes":["equities","sector","commodities","bonds","crypto"]},"meta":{"timestamp":"2026-06-12T10:35:08.279Z","request_id":"57ded726-5b89-49d7-bd22-4d8382c96c34"},"status":"ok","message":"Universe retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"screener class= filters by class. asset= is a supported key (see /v1/universe). Bands are 20-day SMA +/-2 standard deviations; squeeze = bandwidth in the lowest 20% of its ~6-month range. Read fresh per call, nothing cached.","source":"Yahoo Finance daily closes (9mo range) across a multi-asset universe, live","classes":["equities","sector","commodities","bonds","crypto"],"service":"bollinger-api","settings":{"period":20,"std_dev":2},"endpoints":{"GET /v1/meta":"This document.","GET /v1/asset":"One market's Bollinger Bands card (asset=sp500).","GET /v1/screener":"Cross-asset board with squeeze list, band breakouts and bandwidth ranking (class=sector optional).","GET /v1/universe":"The supported instruments."},"description":"Bollinger Bands & squeeze screener — which markets are coiled for a breakout and which are stretched to their bands, live from Yahoo Finance (no key, nothing stored). screener returns a cross-asset board with the markets in a volatility squeeze, the ones breaking above the upper band and below the lower, sorted tightest-first. asset returns one market's Bollinger card (bands, percent_b, bandwidth, percentile, squeeze). universe lists what is covered. The Bollinger Bands / volatility-squeeze screener cut — distinct from the bring-your-own-candle technical-indicator APIs, the FX-only z-score API and the market-breadth API.","universe_size":21,"assets_scanned":21,"upstream_status":"ok"},"meta":{"timestamp":"2026-06-12T10:35:08.525Z","request_id":"4b75bf8f-b95a-4dc8-8be2-dd44b3afb69a"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":770,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":994,"monthly_call_quota":17600,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3022,"monthly_call_quota":90000,"rps_limit":16,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":7240,"monthly_call_quota":490000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/bollinger-api"}