(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como consumir uma API REST no Power BI com Power Query

João Barros 05 de July de 2026 5 min de leitura

Ligar o Power BI diretamente a uma API REST permite trazer dados sempre atualizados de serviços web — CRMs, lojas online ou ferramentas de marketing — sem exportações manuais. O Power Query trata do pedido HTTP, converte a resposta JSON numa tabela e deixa tudo pronto para atualização automática. Consumir uma API REST no Power BI é mais simples do que parece quando se conhece o padrão certo com a função Web.Contents.

Pré-requisitos

  • Power BI Desktop instalado (versão recente).
  • O endereço base (URL) da API e o endpoint que queres consultar.
  • Uma chave de API ou token de acesso, caso a API exija autenticação.
  • Noções básicas do Editor do Power Query (Base > Transformar dados).

Passo 1: Abrir o Power Query e criar uma consulta Web

No Power BI Desktop, clica em Obter dados > Web. Escolhe a opção Avançado para separares o endereço base do resto do pedido — este detalhe é importante para que a atualização agendada funcione mais tarde no Power BI Service. Coloca o endereço base na primeira parte do URL e o caminho do endpoint no campo das partes do URL.

Depois de confirmares, o Power Query cria automaticamente um passo com a função Web.Contents. Vais editá-lo à mão para ganhares controlo total sobre cabeçalhos e parâmetros.

Passo 2: Escrever o pedido com Web.Contents

Abre o Editor Avançado (Base > Editor Avançado) e substitui o código pelo padrão abaixo. Repara que o endereço base fica fixo e tudo o resto vai em RelativePath e Query — assim o Power BI reconhece a fonte de dados e permite a atualização na cloud.

let
    Response = Json.Document(
        Web.Contents(
            "https://api.example.com",
            [
                RelativePath = "v1/sales",
                Headers = [#"Authorization" = "Bearer YOUR_TOKEN", #"Accept" = "application/json"],
                Query = [ page = "1", per_page = "100" ]
            ]
        )
    )
in
    Response

A função Json.Document converte a resposta de texto num registo ou numa lista que o Power Query já sabe interpretar. Se a tua API usar uma chave em vez de um token, muda o cabeçalho Authorization para o nome que a documentação indicar (por exemplo, x-api-key).

Passo 3: Transformar o JSON numa tabela

A maioria das APIs devolve os registos dentro de um campo, por exemplo data. Extrai essa lista e converte-a numa tabela com colunas legíveis:

let
    Response = Json.Document(Web.Contents("https://api.example.com",
        [ RelativePath = "v1/sales",
          Headers = [#"Authorization" = "Bearer YOUR_TOKEN"],
          Query = [ page = "1", per_page = "100" ] ])),
    Items = Response[data],
    ToTable = Table.FromList(Items, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    Expanded = Table.ExpandRecordColumn(ToTable, "Column1", {"id", "customer", "total"})
in
    Expanded

Ajusta os nomes id, customer e total aos campos reais da tua API. A partir daqui podes usar o interface gráfico do Power Query para mudar tipos de dados, remover colunas e filtrar linhas.

Passo 4: Lidar com a paginação

As APIs raramente devolvem tudo de uma só vez. Para percorrer todas as páginas usa List.Generate, que repete o pedido até uma página vir vazia:

let
    GetPage = (p as number) as list =>
        let
            r = Json.Document(Web.Contents("https://api.example.com",
                [ RelativePath = "v1/sales",
                  Headers = [#"Authorization" = "Bearer YOUR_TOKEN"],
                  Query = [ page = Text.From(p), per_page = "100" ] ]))
        in
            r[data],
    Pages = List.Generate(
        () => [i = 1, rows = GetPage(1)],
        each List.Count([rows]) > 0,
        each [i = [i] + 1, rows = GetPage([i] + 1)],
        each [rows]
    ),
    AllRows = List.Combine(Pages)
in
    AllRows

O resultado é uma única lista com os registos de todas as páginas, pronta a converter em tabela tal como no passo anterior. Adapta a condição de paragem à tua API: algumas devolvem um campo next ou o total de páginas, que podes usar em vez de verificar se a lista está vazia.

Dica de segurança: evita escrever o token diretamente no código. Em produção, quando o Power BI pedir credenciais, escolhe Chave da Web API ou OAuth. Assim a chave fica guardada em segurança e não viaja dentro do ficheiro .pbix.

Verificar o resultado

Confirma que a coluna expandida mostra os dados esperados na pré-visualização do Power Query. Clica em Fechar e Aplicar e cria um visual simples, como uma tabela, para veres as linhas no relatório. Por fim, testa a atualização com Base > Atualizar: se os dados voltarem sem erros de credenciais, o pedido está bem configurado. Se aparecer o erro comum "Access to the resource is forbidden", revê o token e o cabeçalho Authorization.

Conclusão

Com Web.Contents, Json.Document e List.Generate tens tudo o que é preciso para transformar quase qualquer API REST numa fonte de dados atualizável no Power BI. O passo seguinte é publicar o relatório no Power BI Service e configurar a atualização agendada — reparaste como o padrão RelativePath torna isso possível? Experimenta agora com uma API pública, por exemplo de cotações ou de meteorologia, para praticares sem depender de credenciais.