Cliente oficial de la API de LicitaPilot: licitaciones públicas de España (PLACSP y autonómicas), baja temeraria, radar de vencimientos y rankings de adjudicatarios.
Project description
licitapilot-python
Cliente oficial de Python para la API de LicitaPilot — licitaciones públicas de España (PLACSP y boletines autonómicos), estadísticas de baja temeraria, radar de vencimientos y rankings de adjudicatarios.
Datos de contratación pública española, listos para tu código en 10 segundos. La capa pública no necesita registro ni clave.
from licitapilot import LicitaPilot
lp = LicitaPilot() # sin clave
radar = lp.vencimientos(sector="45") # contratos de construcción que van a re-licitarse
print(radar["total"], "vencimientos próximos")
for v in radar["items"][:5]:
print(v["title"], "→ vence", v.get("contract_end_date"))
Instalación
pip install licitapilot
Dos capas
| Capa | Necesita clave | Qué te da |
|---|---|---|
| Pública | ❌ | Radar de vencimientos, baja temeraria, rankings de adjudicatarios, ficha de empresa y de licitación por id — los mismos datos abiertos que ya publica la web |
| Empresa | ✅ lp_live_… |
/v1: listado masivo de licitaciones (histórico + filtros) y tus matches personalizados por perfil |
Consigue tu clave en licitapilot.com (plan Empresa).
Uso
"El foso": vencimientos, baja temeraria y rankings (público, sin clave)
lp = LicitaPilot()
lp.vencimientos() # hub global de contratos que caducan y volverán a salir
lp.vencimientos(sector="45") # detalle de un sector (división CPV)
lp.baja_temeraria("45") # cuánto se baja de media en construcción
lp.ranking_adjudicatarios("obras") # quién gana más en un sector
lp.empresa("acme-construcciones") # ficha pública de una adjudicataria
lp.tender(123) # ficha pública de una licitación por id
Licitaciones y matches (plan Empresa, con clave)
El listado masivo y tus coincidencias personalizadas viven en /v1 y requieren clave:
lp = LicitaPilot(api_key="lp_live_…") # o export LICITAPILOT_API_KEY=…
# Listado con filtros e histórico
page = lp.tenders(cpv="72", province="Madrid", state="open", limit=50)
for t in lp.iter_tenders(cpv="45", state="all", max_items=1000):
print(t.id, t.title, t.url)
# Tus matches por perfil (scoring de relevancia + IA)
for m in lp.matches(limit=50):
print(m.relevance_score, m.tender.title, m.status)
Sin clave, tenders() y matches() lanzan AuthRequiredError a propósito: son la
parte de pago y la capa gratis no compite con ellas.
CLI
Instalar el paquete te da el comando licitapilot:
licitapilot tenders --cpv 45 --province Madrid
licitapilot vencimientos --sector 45
licitapilot baja --cpv 45
licitapilot ranking obras
licitapilot matches # usa LICITAPILOT_API_KEY
licitapilot tenders --cpv 72 --json # salida JSON para pipes
Ejemplos
Recetas listas para copiar en examples/:
export_csv.py— vuelca a CSV el radar de vencimientos de un sector (sin clave).vencimientos_telegram.py— bot de Telegram que te avisa de contratos que van a re-licitarse (sin clave).streamlit_foso.py— dashboard de baja temeraria por sector (sin clave).
Manejo de errores
from licitapilot import LicitaPilot, APIError, AuthRequiredError
try:
LicitaPilot().matches() # sin clave
except AuthRequiredError:
... # esta operación es de plan Empresa
except APIError as e:
print(e.status_code, e.payload) # la API devolvió 4xx/5xx
Desarrollo
pip install -e ".[dev]"
ruff check src tests
pytest -q # tests con HTTP simulado, sin red
Sobre LicitaPilot
LicitaPilot es el copiloto de licitaciones públicas para empresas y autónomos en España: alertas por perfil, análisis con IA, radar de vencimientos, grafo de competidores y escritos jurídicos asistidos. Este SDK expone parte de esos datos de forma programática.
Licencia
MIT © LicitaPilot
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file licitapilot-0.1.0.tar.gz.
File metadata
- Download URL: licitapilot-0.1.0.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f779e64429047637ef8305631e3af36bdb897b24618a8d4676c94e655d26e93
|
|
| MD5 |
ea03dbf28e20a96a6c0b2bbc0456290c
|
|
| BLAKE2b-256 |
81071ff7f46032e7070a4f523e722069638f3d35a53bf9cc55166fca62efc249
|
Provenance
The following attestation bundles were made for licitapilot-0.1.0.tar.gz:
Publisher:
publish.yml on jmcodero/licitapilot-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
licitapilot-0.1.0.tar.gz -
Subject digest:
5f779e64429047637ef8305631e3af36bdb897b24618a8d4676c94e655d26e93 - Sigstore transparency entry: 2164168187
- Sigstore integration time:
-
Permalink:
jmcodero/licitapilot-python@1073b3d31a980b283b2e2aab4cfdfa14d8d9ab5b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jmcodero
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1073b3d31a980b283b2e2aab4cfdfa14d8d9ab5b -
Trigger Event:
release
-
Statement type:
File details
Details for the file licitapilot-0.1.0-py3-none-any.whl.
File metadata
- Download URL: licitapilot-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac9a6914a78f92d586d80154e69597c677e08bd89774d75ca97aefb50a43d3e4
|
|
| MD5 |
423fcd33d3251fc063f8c5f2c891de0d
|
|
| BLAKE2b-256 |
a081d1d0bb063f7925eed9f256577fb8cd8f78232d01437ca42b82fa6ad23779
|
Provenance
The following attestation bundles were made for licitapilot-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on jmcodero/licitapilot-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
licitapilot-0.1.0-py3-none-any.whl -
Subject digest:
ac9a6914a78f92d586d80154e69597c677e08bd89774d75ca97aefb50a43d3e4 - Sigstore transparency entry: 2164168212
- Sigstore integration time:
-
Permalink:
jmcodero/licitapilot-python@1073b3d31a980b283b2e2aab4cfdfa14d8d9ab5b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jmcodero
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1073b3d31a980b283b2e2aab4cfdfa14d8d9ab5b -
Trigger Event:
release
-
Statement type: