{"openapi":"3.1.0","info":{"title":"Euronext Lisbon (PSI 20) API","version":"1.0.0","description":"Live Portuguese equity data from Euronext Lisbon: real-time quotes for any listed stock by ticker (price, % change, intraday OHLC, volume, market cap in EUR), a ranking screener for gainers, losers, most-active and top market-cap local primary listings, and the Lisbon index family (PSI 20 and PSI All-Share). Foreign depositary receipts are filtered out so you get only genuine Portuguese companies such as EDP, EDP Renewables, Galp Energia, Banco Comercial Portugues and Jeronimo Martins.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/portugal-stock-api","description":"oanor gateway"}],"tags":[{"name":"Quotes"},{"name":"Screener"},{"name":"Indices"},{"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/quote":{"get":{"operationId":"get_v1_quote","tags":["Quotes"],"summary":"Live quote for one or more Lisbon stocks","description":"","parameters":[{"name":"symbols","in":"query","required":true,"description":"Comma-separated Lisbon tickers (up to 20)","schema":{"type":"string"},"example":"EDP,GALP,JMT"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":3,"market":"ELI","quotes":[{"low":4.424,"high":4.5,"last":4.467,"name":"EDP S.A.","open":4.5,"pe_ttm":16.8439,"sector":"Utilities","symbol":"EDP","ticker":"EURONEXT:EDP","volume":9250814,"currency":"EUR","change_abs":-0.015,"change_pct":-0.3347,"market_cap":18461620272},{"low":18.725,"high":19.25,"last":19.12,"name":"Galp Energia, SGPS S.A. Class B","open":19.1,"pe_ttm":21.7199,"sector":"Energy Minerals","symbol":"GALP","ticker":"EURONEXT:GALP","volume":2476746,"currency":"EUR","change_abs":-0.545,"change_pct":-2.7714,"market_cap":14091877957},{"low":17.62,"high":17.86,"last":17.76,"name":"Jeronimo Martins, SGPS S.A.","open":17.85,"sector":"Retail Trade","symbol":"JMT","ticker":"EURONEXT:JMT","volume":1312936,"currency":"EUR","change_abs":0.08,"change_pct":0.4525,"market_cap":11176248689}]},"meta":{"timestamp":"2026-06-15T02:09:56.355Z","request_id":"b1b73e30-7560-461f-a826-f829b1399e2c"},"status":"ok","message":"Quote 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/screener":{"get":{"operationId":"get_v1_screener","tags":["Screener"],"summary":"Rank local primary listings","description":"","parameters":[{"name":"sort","in":"query","required":false,"description":"Sort field: market_cap, change or volume","schema":{"type":"string"},"example":"market_cap"},{"name":"order","in":"query","required":false,"description":"asc or desc","schema":{"type":"string"},"example":"desc"},{"name":"limit","in":"query","required":false,"description":"Number of results (1-100)","schema":{"type":"string"},"example":"25"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"sort":"market_cap","count":25,"order":"desc","market":"ELI","results":[{"low":4.424,"high":4.5,"last":4.467,"name":"EDP S.A.","open":4.5,"pe_ttm":16.8439,"sector":"Utilities","symbol":"EDP","ticker":"EURONEXT:EDP","volume":9250814,"currency":"EUR","change_abs":-0.015,"change_pct":-0.3347,"market_cap":18461620272},{"low":13.53,"high":13.95,"last":13.63,"name":"EDP Renewables SA","open":13.79,"pe_ttm":66.1972,"sector":"Utilities","symbol":"EDPR","ticker":"EURONEXT:EDPR","volume":1660150,"currency":"EUR","change_abs":-0.1,"change_pct":-0.7283,"market_cap":14443697145},{"low":18.725,"high":19.25,"last":19.12,"name":"Galp Energia, SGPS S.A. Class B","open":19.1,"pe_ttm":21.7199,"sector":"Energy Minerals","symbol":"GALP","ticker":"EURONEXT:GALP","volume":2476746,"currency":"EUR","change_abs":-0.545,"change_pct":-2.7714,"market_cap":14091877957},{"low":0.9322,"high":0.9546,"last":0.95,"name":"Banco Comercial Portugues S.A.","open":0.9366,"pe_ttm":13.1579,"sector":"Finance","symbol":"BCP","ticker":"EURONEXT:BCP","volume":82619137,"currency":"EUR","change_abs":0.0332,"change_pct":3.6213,"market_cap":14064395429},{"low":17.62,"high":17.86,"last":17.76,"name":"Jeronimo Martins, SGPS S.A.","open":17.85,"sector":"Retail Trade","symbol":"JMT","ticker":"EURONEXT:JMT","volume":1312936,"currency":"EUR","change_abs":0.08,"change_pct":0.4525,"market_cap":11176248689},{"low":1.964,"high":1.992,"last":1.982,"name":"Sonae SGPS SA","open":1.97,"pe_ttm":18.9484,"sector":"Technology Services","symbol":"SON","ticker":"EURONEXT:SON","volume":2004954,"currency":"EUR","change_abs":0.01,"change_pct":0.5071,"market_cap":3963999987},{"low":5.315,"high":5.43,"last":5.4,"name":"NOS SGPS SA","open":5.35,"pe_ttm":11.1065,"sector":"Communications","symbol":"NOS","ticker":"EURONEXT:NOS","volume":483798,"currency":"EUR","change_abs":0.045,"change_pct":0.8403,"market_cap":2781871485},{"low":3.51,"high":3.558,"last":3.554,"name":"Navigator Company SA","open":3.53,"sector":"Process Industries","symbol":"NVG","ticker":"EURONEXT:NVG","volume":1164015,"currency":"EUR","change_abs":0.054,"change_pct":1.5429,"market_cap":2527544469},{"low":3.48,"high":3.55,"last":3.545,"name":"Redes Energeticas Nacionais SA","open":3.485,"pe_ttm":12.9521,"sector":"Utilities","symbol":"RENE","ticker":"EURONEXT:RENE","volume":821470,"currency":"EUR","change_abs":0.045,"change_pct":1.2857,"market_cap":2351433559},{"low":23.4,"high":24,"last":23.95,"name":"Semapa Sociedade de Investimento e Gestao SGPS SA","open":23.5,"sector":"Process Industries","symbol":"SEM","ticker":"EURONEXT:SEM","volume":74681,"currency":"EUR","change_abs":0.6,"change_pct":2.5696,"market_cap":1946416482},{"low":4.6,"high":4.83,"last":4.782,"name":"Mota-Engil SGPS SA","open":4.6,"pe_ttm":10.9378,"sector":"Industrial Services","symbol":"EGL","ticker":"EURONEXT:EGL","volume":3244577,"currency":"EUR","change_abs":0.26,"change_pct":5.7497,"market_cap":1437872759},{"low":5.01,"high":5.05,"last":5.03,"name":"Altri, SGPS, S.A.","open":5.04,"pe_ttm":159.6825,"sector":"Process Industries","symbol":"ALTR","ticker":"EURONEXT:ALTR","volume":86013,"currency":"EUR","change_abs":0.05,"change_pct":1.004,"market_cap":1031812334},{"low":2.84,"high":2.9,"last":2.9,"name":"Sonaecom SGPS SA","open":2.84,"pe_ttm":14.9331,"sector":"Technology Services","symbol":"SNC","ticker":"EURONEXT:SNC","volume":5475,"currency":"EUR","change_abs":-0.02,"change_pct":-0.6849,"market_cap":886730254},{"low":6.42,"high":6.66,"last":6.57,"name":"Corticeira Amorim SGPS SA","open":6.65,"pe_ttm":18.4137,"sector":"Process Industries","symbol":"COR","ticker":"EURONEXT:COR","volume":277322,"currency":"EUR","change_abs":-0.02,"change_pct":-0.3035,"market_cap":873810023},{"low":5.82,"high":6,"last":5.99,"name":"CTT - Correios de Portugal SA","open":5.82,"pe_ttm":15.9733,"sector":"Transportation","symbol":"CTT","ticker":"EURONEXT:CTT","volume":604611,"currency":"EUR","change_abs":0.25,"change_pct":4.3554,"market_cap":801581813},{"low":10.18,"high":10.42,"last":10.42,"name":"Ibersol, SGPS S.A.","open":10.3,"pe_ttm":26.05,"sector":"Consumer Services","symbol":"IBS","ticker":"EURONEXT:IBS","volume":38927,"currency":"EUR","change_abs":0.22,"change_pct":2.1569,"market_cap":420613934},{"low":8.5,"high":8.74,"last":8.6,"name":"Novabase SGPS SA","open":8.74,"pe_ttm":32.2823,"sector":"Technology Services","symbol":"NBA","ticker":"EURONEXT:NBA","volume":45685,"currency":"EUR","change_abs":-0.16,"change_pct":-1.8265,"market_cap":324740429},{"low":6.65,"high":6.65,"last":6.65,"name":"TOYOTA CAETANO PORTUGAL","open":6.65,"pe_ttm":9.2799,"sector":"Retail Trade","symbol":"SCT","ticker":"EURONEXT:SCT","volume":19,"currency":"EUR","change_abs":0.15,"change_pct":2.3077,"market_cap":232750003},{"low":2.29,"high":2.4,"last":2.29,"name":"Martifer SGPS","open":2.4,"pe_ttm":23.657,"sector":"Industrial Services","symbol":"MAR","ticker":"EURONEXT:MAR","volume":139641,"currency":"EUR","change_abs":-0.11,"change_pct":-4.5833,"market_cap":228999996},{"low":1,"high":1,"last":1,"name":"Sporting Clube de Portugal Futebol SAD","open":1,"sector":"Consumer Services","symbol":"SCP","ticker":"EURONEXT:SCP","volume":3000,"currency":"EUR","change_abs":0.045,"change_pct":4.712,"market_cap":201990433},{"low":0.433,"high":0.466,"last":0.465,"name":"Teixeira Duarte, S.A.","open":0.433,"pe_ttm":3.9043,"sector":"Industrial Services","symbol":"TDSA","ticker":"EURONEXT:TDSA","volume":15130889,"currency":"EUR","change_abs":0.0335,"change_pct":7.7636,"market_cap":195300002},{"low":1.06,"high":1.07,"last":1.07,"name":"VAA Vista Alegre Atlantis SGPS SA","open":1.07,"pe_ttm":41.1538,"sector":"Consumer Durables","symbol":"VAF","ticker":"EURONEXT:VAF","volume":54218,"currency":"EUR","change_abs":0,"change_pct":0,"market_cap":179385453},{"low":6.6,"high":7.28,"last":6.76,"name":"Ramada Investimentos e Industria,S.A.","open":7.28,"sector":"Non-Energy Minerals","symbol":"RAM","ticker":"EURONEXT:RAM","volume":4699,"currency":"EUR","change_abs":-0.22,"change_pct":-3.1519,"market_cap":173336278},{"low":6.94,"high":7.14,"last":6.96,"name":"Sport Lisboa e Benfica-Futebol SA","open":6.94,"pe_ttm":4.6096,"sector":"Consumer Services","symbol":"SLBEN","ticker":"EURONEXT:SLBEN","volume":304,"currency":"EUR","change_abs":-0.2,"change_pct":-2.7933,"market_cap":160080001},{"low":1.19,"high":1.225,"last":1.225,"name":"GLINTT GLOBAL, S.A.","open":1.21,"pe_ttm":13.1156,"sector":"Commercial Services","symbol":"GLINT","ticker":"EURONEXT:GLINT","volume":16770,"currency":"EUR","change_abs":0.025,"change_pct":2.0833,"market_cap":106529515}]},"meta":{"timestamp":"2026-06-15T02:09:56.579Z","request_id":"cf046257-980f-453a-bb45-cd58d6976a41"},"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/index":{"get":{"operationId":"get_v1_index","tags":["Indices"],"summary":"Lisbon index family (PSI 20, PSI All-Share)","description":"","parameters":[{"name":"symbol","in":"query","required":false,"description":"Optional specific index symbol(s)","schema":{"type":"string"},"example":"PSI20"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":1,"market":"ELI","indices":[{"low":9043.96,"high":9117.14,"name":"PSI Index","open":9046.28,"index":"PSI20","value":9093.82,"change_abs":68.93,"change_pct":0.7638}]},"meta":{"timestamp":"2026-06-15T02:09:56.802Z","request_id":"8f8f16fc-88e1-46e9-bf54-89288c7d68f6"},"status":"ok","message":"Index 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":"Market metadata & endpoint guide","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"market":"Euronext Lisbon","source":"TradingView screener (portugal market), keyless","country":"Portugal","indices":["PSI20","BVL"],"currency":"EUR","examples":{"index":"/v1/index","quote":"/v1/quote?symbols=EDP,GALP,JMT","screener":"/v1/screener?sort=change&order=desc&limit=10"},"endpoints":{"/v1/index":"Lisbon index family (PSI 20, PSI All-Share)","/v1/quote":"live quote for one or more Lisbon stocks by ticker (symbols=EDP,GALP,JMT)","/v1/screener":"rank local primary listings by market_cap | change | volume (sort, order, limit)"},"cache_ttl_ms":20000},"meta":{"timestamp":"2026-06-15T02:09:56.898Z","request_id":"57b1c46c-35b6-46f5-8aef-d52854a97148"},"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":1550,"rps_limit":2,"hard_limit":true},{"slug":"basic","name":"Basic","price_cents_month":1220,"monthly_call_quota":45500,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3550,"monthly_call_quota":189000,"rps_limit":15,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":7670,"monthly_call_quota":768000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/portugal-stock-api"}