DataBolsa docs
Referência da APIDados de mercadoScreeners

Filtra ações por múltiplos critérios fundamentalistas

Filtra o universo de ações por faixas de indicadores (pl_min/pl_max, pvp_min/pvp_max, dy_min, roe_min, ev_ebitda_max, div_liq_ebitda_max), liquidez mínima (min_volume), setor e segmento; ordena por `sort` (default `-market_cap`). Paginação por cursor (use meta.next_cursor). Retorna ticker, nome, setor e os indicadores principais por papel. Cada linha traz `quality_flags`: indicador estatisticamente implausível (DY > 20%, P/L < 1, ROE > 100%, payout > 200%) é MARCADO com o motivo, nunca escondido nem nulado. `sector` casa por igualdade EXATA e aceita UM valor. Grafia errada e pedido de dois setores devolvem página vazia, como um setor legítimo sem ação nenhuma — por isso `meta.unmatched_filters` nomeia o recorte que não casou ninguém, e `meta.available_sectors` traz o vocabulário quando o setor não existe. **Para cortar por vários setores, ou por qualquer propriedade categórica, use `rankObjects` / `aggregateObjects` com `where`** — lá o OU cabe dentro do campo (`where=sector=Bancos|Seguradoras`) e o vocabulário vem anunciado em `filterable_properties`, sem uma chamada extra para descobri-lo.

GET
/v1/screener/stocks
AuthorizationBearer <token>

In: header

Query Parameters

cursor?string
limit?integer
Default100
Range1 <= value <= 1000
pl_min?number
pl_max?number
pvp_min?number
pvp_max?number
dy_min?number
roe_min?number
ev_ebitda_max?number
div_liq_ebitda_max?number
min_volume?number

Piso de liquidez: volume financeiro médio dos últimos 2 meses, em R$/dia (ex.: 1000000 corta micro caps ilíquidas). Papel sem série de preço recente fica de fora quando o piso está ativo.

sector?string

Filtra por setor da empresa (match EXATO, case-sensitive). Valor desconhecido retorna página vazia, sem erro.

segment?string

Filtra por segmento de listagem B3 (substring, case-insensitive), ex.: 'Novo Mercado'.

sort?string

Ordena por indicador. Valores: pl, pvp, psr, dy, dy_12m, payout, roe, roic, ev_ebitda, market_cap, margem_liquida, volume_medio_2m. Prefixe com '-' para decrescente (ex.: -dy_12m). Nomes livres como 'dividend_yield' são inválidos. Default: -market_cap — o topo de -dy_12m é dominado por provento extraordinário sobre base pequena e não deve ser servido como resposta a uma consulta sem filtro.

Default"-market_cap"

Response Body

curl -X GET "https://api.databolsa.com/v1/screener/stocks?cursor=string&limit=100&pl_min=0&pl_max=0&pvp_min=0&pvp_max=0&dy_min=0&roe_min=0&ev_ebitda_max=0&div_liq_ebitda_max=0&min_volume=0&sector=string&segment=string&sort=-market_cap"
{
  "data": [
    {
      "ticker": "string",
      "name": "string",
      "sector": "string",
      "indicators": {
        "market_cap": 0,
        "pl": 0,
        "pvp": 0,
        "dy": 0,
        "payout": 0,
        "roe": 0,
        "roic": 0,
        "ev_ebitda": 0,
        "div_liq_ebitda": 0,
        "margem_liquida": 0,
        "volume_medio_2m": 0
      },
      "quality_flags": [
        {
          "code": "dy_outlier",
          "indicator": "string",
          "value": 0,
          "reason": "string"
        }
      ]
    }
  ],
  "meta": {
    "next_cursor": "string",
    "count": 0,
    "total": 0,
    "subject": {
      "property1": "string",
      "property2": "string"
    },
    "unmatched_filters": [
      "string"
    ],
    "available_sectors": [
      "string"
    ]
  }
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "details": {
    "property1": null,
    "property2": null
  }
}