# Euronext Lisbon (PSI 20) API
> 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.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/portugal-stock-api/..."
```

## Pricing
- **Free** (Free) — 1,550 calls/Mo, 2 req/s
- **Basic** ($12/Mo) — 45,500 calls/Mo, 5 req/s
- **Pro** ($36/Mo) — 189,000 calls/Mo, 15 req/s
- **Business** ($77/Mo) — 768,000 calls/Mo, 40 req/s

## Endpoints

### Quotes

#### `GET /v1/quote` — Live quote for one or more Lisbon stocks

**Parameters:**
- `symbols` (query, required, string) — Comma-separated Lisbon tickers (up to 20) Example: `EDP,GALP,JMT`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/portugal-stock-api/v1/quote?symbols=EDP%2CGALP%2CJMT"
```

**Response:**
```json
{
    "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,
                "pe_ttm": null,
                "sector": "Retail Trade",
                "symbol": "JMT",
                "ticker": "EURONEXT:JMT",
…(truncated, see openapi.json for full schema)
```

### Screener

#### `GET /v1/screener` — Rank local primary listings

**Parameters:**
- `sort` (query, optional, string) — Sort field: market_cap, change or volume Example: `market_cap`
- `order` (query, optional, string) — asc or desc Example: `desc`
- `limit` (query, optional, string) — Number of results (1-100) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/portugal-stock-api/v1/screener?sort=market_cap&order=desc&limit=25"
```

**Response:**
```json
{
    "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": "GA
…(truncated, see openapi.json for full schema)
```

### Indices

#### `GET /v1/index` — Lisbon index family (PSI 20, PSI All-Share)

**Parameters:**
- `symbol` (query, optional, string) — Optional specific index symbol(s) Example: `PSI20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/portugal-stock-api/v1/index?symbol=PSI20"
```

**Response:**
```json
{
    "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
}
```

### Meta

#### `GET /v1/meta` — Market metadata & endpoint guide

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/portugal-stock-api/v1/meta"
```

**Response:**
```json
{
    "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
}
```


---
Marketplace page: https://www.oanor.com/api/portugal-stock-api
OpenAPI spec: https://www.oanor.com/api/portugal-stock-api/openapi.json
