DataBolsa docs
Referência da APIDados de mercadoAções

Quem está comprando o papel, por mês (fundos + insiders)

Série mensal com o delta de posição dos fundos de investimento (CDA/CVM) e o fluxo de insiders (VLMO/CVM) no mesmo eixo temporal. Dois campos são guardas, não decoração. `funds_shares_delta` só existe quando o painel de fundos divulgantes é comparável entre as duas competências — quando não é, vem null com o motivo em `funds_delta_reason`, o TAMANHO do painel em `funds_panel_n` e a cobertura do universo (percentual 0–100) em `funds_panel_coverage_pct` (sem esse corte o sinal inverte em 27,8% dos tickers). E o insider é nível-COMPANHIA: a mesma linha se repete em todos os tickers do emissor, então agregue apenas onde `is_issuer_anchor_ticker` é true, ou o total infla 40,4%. Fluxo em R$ é `funds_value_flow_brl` (Δqtd × preço implícito do CDA); a variação do valor bruto NÃO serve como fluxo, porque embute marcação a mercado — em ITUB4 as duas contas dão sinais opostos. `insider_corporate_event_shares` nunca deve ser somado a `insider_net_shares`. Meses em que só há insider vêm com `comptc_date` nula: a série de VLMO é mais longa que a janela do CDA.

GET
/v1/stocks/{ticker}/ownership-flow
AuthorizationBearer <token>

In: header

Path Parameters

tickerstring
Match^[A-Z][A-Z0-9]{3}[0-9]{0,2}$

Query Parameters

cursor?string
limit?integer
Default100
Range1 <= value <= 1000
from?string
Match^\d{4}-\d{2}-\d{2}$
to?string
Match^\d{4}-\d{2}-\d{2}$

Response Body

curl -X GET "https://api.databolsa.com/v1/stocks/string/ownership-flow?cursor=string&limit=100&from=string&to=string"
{
  "data": [
    {
      "ticker": "string",
      "month_ref": "string",
      "comptc_date": "string",
      "asset_kind": "equity",
      "funds_holders": 0,
      "funds_short_holders": 0,
      "funds_shares": 0,
      "funds_value_brl": 0,
      "funds_implied_price": 0,
      "funds_shares_delta": 0,
      "funds_value_flow_brl": 0,
      "funds_value_price_effect_brl": 0,
      "funds_entered": 0,
      "funds_exited": 0,
      "funds_increased": 0,
      "funds_decreased": 0,
      "funds_opened_short": 0,
      "funds_closed_short": 0,
      "funds_qty_undisclosed": 0,
      "funds_partial_disclosure": 0,
      "funds_appeared": 0,
      "funds_panel_n": 0,
      "funds_panel_coverage_pct": 0,
      "funds_delta_reason": "fora_da_janela_cda",
      "issuer_cnpj": "string",
      "is_issuer_anchor_ticker": true,
      "insider_net_shares": 0,
      "insider_net_value_brl": 0,
      "insider_buy_value_brl": 0,
      "insider_sell_value_brl": 0,
      "insider_corporate_event_shares": 0,
      "insider_reason": "sem_cnpj_no_cadastro",
      "lineage": "string"
    }
  ],
  "meta": {
    "next_cursor": "string",
    "count": 0
  }
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string"
}

Movimentações de insiders (CVM VLMO, por mês)

Saldo mensal de negociação de administradores, controladores e pessoas ligadas (VLMO/CVM). A série é nível-COMPANHIA: todos os papéis do emissor devolvem os MESMOS números, então somar PETR3 + PETR4 conta a mesma movimentação duas vezes — 174 das 433 companhias (40,2%) têm 2+ papéis e a inflação medida ao agregar sem filtro é de 40,4%. Para agregar por emissor, use `/ownership-flow` e filtre `is_issuer_anchor_ticker`. `corporate_event_shares` sai SEPARADO e não soma a `net_shares`: é ruído não-mercado (bonificação, herança, grupamento), 3,9× maior em magnitude absoluta que o fluxo real.

Fundos que mais aumentaram e reduziram posição no papel

Quem se mexeu, fundo a fundo, numa competência do CDA: posição anterior, posição corrente e a variação em QUANTIDADE (`qty_delta`), já na posição econômica — direta + cedida em empréstimo − obrigação por recebida, que é o que a carteira do fundo esconde (428 dos 2.770 pares fundo×ativo cedidos em 2026-05 existem SÓ como empréstimo). Por isso os números aqui divergem de `/fund-holders`, que serve a posição DECLARADA em carteira, sem empréstimo nem obrigação — as duas rotas respondem perguntas diferentes sobre o mesmo papel. Só aparecem fundos do PAINEL BALANCEADO, isto é, que divulgaram carteira nas duas competências. Sem esse corte a queda de divulgação entre um mês de trimestre (6.625 fundos) e o mês seguinte (3.278) seria lida como venda — em PETR4 o sinal chega a inverter. Por isso um papel legítimo pode responder página vazia: significa 'não há competência comparável', não 'papel inexistente'.