Skip to main content
base-contratos — Contratos públicos do BASE/IMPIC, em acesso aberto.

base-contratos

Obtém contratos públicos do conjunto de dados BASE/IMPIC em dados.gov.pt.

O conjunto de dados cobre todos os contratos públicos adjudicados em Portugal desde 2012, com atualização quinzenal. Esta biblioteca filtra por uma ou mais entidades adjudicantes (NIF) e devolve registos estruturados.

Instalação

pip install base-contratos

Utilização

Como biblioteca

from base_contratos import fetch_all, fetch_year

# Todos os contratos de uma entidade em todos os anos disponíveis
records = fetch_all("505279460")

# Um único ano
records = fetch_year("505279460", 2024)

# Múltiplas entidades
records = fetch_all(["505279460", "500754011"])

# Com cache local para evitar re-descarregamentos
records = fetch_all("505279460", cache_dir="~/.cache/base-contratos")

# Anos disponíveis no conjunto de dados
from base_contratos import list_available_years
print(list_available_years())  # [2012, 2013, ..., 2025]

Cada registo é um dict com os seguintes campos:

Campo Descrição
year Ano do contrato
contracting_entity_nif NIF da entidade adjudicante
contractor_name Nome da entidade adjudicatária
contractor_nif NIF da entidade adjudicatária (se disponível)
contract_type works, services ou goods
description Objeto do contrato
amount Preço contratual (€)
awarded_date Data de celebração do contrato (ISO 8601)
external_id ID do contrato no BASE
procedure_type Tipo de procedimento
cpv Código CPV
base_price Preço base do procedimento (€)
effective_price Preço total efetivo (€)
execution_days Prazo de execução em dias
direct_award_justification Fundamentação do ajuste direto (se aplicável)
competitors Concorrentes (se disponível)

Como ferramenta de linha de comandos

# Listar anos disponíveis
base-contratos --list-years

# Imprimir contratos como JSON (stdout)
base-contratos --nif 505279460

# Guardar em CSV
base-contratos --nif 505279460 --output contratos.csv

# Anos específicos, com cache local
base-contratos --nif 505279460 --year 2023 --year 2024 --cache-dir ~/.cache/base-contratos

# Múltiplas entidades, formato JSONL
base-contratos --nif 505279460 --nif 500754011 --format jsonl

Como funciona

O conjunto de dados é publicado como um ficheiro XLSX por ano com todos os contratos do país. Esta biblioteca:

  1. Obtém os metadados do conjunto de dados via API do dados.gov.pt para descobrir os URLs dos XLSX
  2. Descarrega o XLSX de cada ano pretendido
  3. Filtra as linhas em que o campo adjudicante contém o(s) NIF(s) pedido(s)
  4. Devolve registos estruturados

Os ficheiros XLSX são grandes (dezenas de MB por ano). Use cache_dir para evitar re-descarregamentos em execuções repetidas.

Como encontrar o NIF da sua entidade

Os NIFs dos municípios portugueses são públicos. Alguns exemplos:

Município NIF
Lousada 505279460
Porto 500754011
Lisboa 500731076
Braga 500726760

Licença

MIT. Os dados do dados.gov.pt são de domínio público.

Metadata

Release files for base-contratos 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for base-contratos 0.1.1
File Size Uploaded Provenance
base_contratos-0.1.1.tar.gz 92.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for base-contratos 0.1.1
File Interpreter ABI Platform
base_contratos-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 101.7 kB

Release files / base_contratos-0.1.1.tar.gz

Download URL base_contratos-0.1.1.tar.gz
Size 92.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9aaa5bb1d088371fdb31ac0a78f45952d1bd2e7a2da6840ea1ebca54c5a5b0bc
BLAKE2b-256 checksum
How to use checksums
98dd3c17fb010e209b8d1bc2013bb3d72aff11288dbd5d22efc1979753355516
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / base_contratos-0.1.1-py3-none-any.whl

Download URL base_contratos-0.1.1-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9cf720000b7494e5153f73e0ee4f33b4af9959b841cb93f2bf12822f8354b89e
BLAKE2b-256 checksum
How to use checksums
63d166fbd0e4599d4b7e66662e7af002fc3367c4707db039903571a0d4b782e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for base-contratos 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page