● UNOFFICIAL · community project

bpstat-pt

Client SDKs for the BPstat API — Banco de Portugal statistics

Domínios, séries e observações (séries temporais) de milhares de indicadores económicos e financeiros. Grátis, sem key. TypeScript, Java e .NET, uma API idêntica.

🟦 TypeScript☕ Java🟣 .NET / C#
TypeScript CI Java CI .NET CI MIT

Why this exists

As séries, já tipadas

O BPstat guarda milhares de séries temporais económicas e financeiras de Portugal, atrás de uma API REST paginada com etiquetas bilingues ({ EN, PT }) e valores em string. Estes SDKs dão-te Domain, Series e Observation tipados, tratam dos envelopes { data } / paginação e juntam um parser de valores.

🗂️

Domínios

77 áreas temáticas, com título e descrição em EN e PT.

📊

Séries

Milhares de séries por domínio, paginadas, com o último valor.

📈

Observações

A série temporal completa: valor + data de referência.

Quick start

Instala e corre

npm install bpstat-pt
import { BpstatClient, valueOf } from "bpstat-pt";

const bp = new BpstatClient();
const domains = await bp.domains();
const page = await bp.seriesByDomain(domains[0].id);
const obs = await bp.observations([page.data[0].id]);
console.log(valueOf(obs.at(-1)!));
<dependency>
  <groupId>io.github.marcelogdomingues</groupId>
  <artifactId>bpstat</artifactId>
  <version>0.1.0</version>
</dependency>
BpstatClient bp = BpstatClient.builder().build();
List<Domain> domains = bp.domains();
SeriesPage page = bp.seriesByDomain(domains.get(0).id, 1);
List<Observation> obs = bp.observations(List.of(page.data.get(0).id));
dotnet add package Bpstat
var bp = new BpstatClient();
var domains = await bp.DomainsAsync();
var page = await bp.SeriesByDomainAsync(domains[0].Id);
var obs = await bp.ObservationsAsync(new[] { page.Data[0].Id });

API

Superfície

ÁreaMétodoEndpoint
Domíniosdomains(lang?)/domains/
Séries de um domínioseriesByDomain(domainId, page?, lang?)/series/ (paginado)
Séries por idseriesByIds(ids, lang?)/series/
Observaçõesobservations(seriesIds, lang?)/observations/

lang é "EN" (default) ou "PT". Erros lançam BpstatError / BpstatException e expõem a errors[].message da API.

The model

Domain · Series · Observation

Domain — área temática, com title/description bilingues. Series — uma série temporal; last_observation_reference_date/_value dão o último ponto. Observation — um ponto: value (string), reference_date, is_highlighted.

valueOf(observation);   // 2.38  — string → number

Em Java/C#: observation.numericValue() / observation.NumericValue(). O endpoint /series é paginado — seriesByDomain devolve um SeriesPage com links.next.

FAQ

Common questions

Preciso de uma API key?

Não — a API do BPstat é pública. Cita a fonte e segue os termos de uso.

Como encontro o id de uma série?

Começa em domains(), depois seriesByDomain(domainId) para paginar as séries; ou procura os ids no site do BPstat e passa-os a seriesByIds / observations.

Porque é que os valores são strings?

É como a API os devolve (preservando precisão/formato). Usa valueOf / numericValue() / NumericValue() para números.

Isto é afiliado ao Banco de Portugal?

Não — é um cliente comunitário independente.