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:
- Obtém os metadados do conjunto de dados via API do dados.gov.pt para descobrir os URLs dos XLSX
- Descarrega o XLSX de cada ano pretendido
- Filtra as linhas em que o campo
adjudicantecontém o(s) NIF(s) pedido(s) - 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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| base_contratos-0.1.1.tar.gz | 92.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.