Chile Public Market SDK
Unofficial, typed, synchronous and asynchronous Python SDK for Chile's Mercado Público APIs.
Status: alpha (
0.4.0). The upstream services include legacy contracts and may add fields. Models validate known fields while preserving new ones.
Requirements
- Python 3.12 or newer.
- An access ticket requested through ChileCompra.
Installation
pip install chile-public-market-sdk
Secure configuration
The SDK never includes or manages tickets. Pass one explicitly:
from chile_public_market_sdk import SyncChilePublicMarketSDK
sdk = SyncChilePublicMarketSDK(ticket="YOUR_TICKET")
Or define CHILE_PUBLIC_MARKET_TICKET:
export CHILE_PUBLIC_MARKET_TICKET="YOUR_TICKET"
Git ignores .env and env.yaml. Loading them through Docker Compose,
Kubernetes, envyaml, python-dotenv, or another secret-management mechanism
is the consumer application's responsibility. The SDK itself does not read
configuration files.
Synchronous usage
from datetime import date
from chile_public_market_sdk import SyncChilePublicMarketSDK
from chile_public_market_sdk.enums import TenderStatus
with SyncChilePublicMarketSDK() as sdk:
response = sdk.get_tenders(
date=date(2026, 6, 12),
status=TenderStatus.PUBLISHED,
)
for tender in response.items:
print(tender.external_code, tender.name)
order = sdk.get_purchase_orders(code="2097-241-SE14")
supplier = sdk.find_supplier("70.017.820-k")
buyers = sdk.get_buyers()
Asynchronous usage
import asyncio
from chile_public_market_sdk import AsyncChilePublicMarketSDK
from chile_public_market_sdk.enums import AgilePurchaseStatus
async def main() -> None:
async with AsyncChilePublicMarketSDK() as sdk:
page = await sdk.get_agile_purchases(
last_change_ttl_ms=300_000,
statuses=[AgilePurchaseStatus.PUBLISHED],
page_size=50,
)
detail = await sdk.get_agile_purchase(page.items[0].code)
print(detail.name)
asyncio.run(main())
Endpoint coverage
| Resource | SDK method | API |
|---|---|---|
| Tenders | get_tenders |
v1 |
| Purchase orders | get_purchase_orders |
v1 |
| Suppliers | find_supplier |
v1 |
| Buyer organizations | get_buyers |
v1 |
| Agile Purchase listing and filters | get_agile_purchases |
v2 |
| Agile Purchase details | get_agile_purchase |
v2 |
V1 date filters accept a date or the original ddmmyyyy format. Agile
Purchase accepts ISO-8601 dates, multiple statuses and regions, pagination,
and sorting.
Client classes and API versions
The SDK exposes separate synchronous and asynchronous classes:
SyncChilePublicMarketClient/SyncChilePublicMarketSDKAsyncChilePublicMarketClient/AsyncChilePublicMarketSDK
ChileCompra endpoint contracts are versioned independently under
chile_public_market_sdk.api.v1 and chile_public_market_sdk.api.v2. Future
upstream contracts will follow api.v{version}. SDK releases remain 0.x
until the public Python API is stable enough for 1.0.0.
Errors
Every public exception inherits from ChilePublicMarketError:
ConfigurationError: no ticket was supplied.RequestValidationError: incompatible or invalid filters.AuthenticationError: HTTP 401 or 403.NotFoundError: HTTP 404.RateLimitError: HTTP 429; exposesretry_after.APIError: any other API error.RequestTimeoutError: a configured timeout was exceeded.NetworkError: a connection or network protocol failed.TransportError: another HTTP transport failure.ResponseValidationError: invalid JSON or an unexpected contract.
Reliability
The SDK uses HTTPX directly. Pass a native httpx.Timeout for granular limits:
import httpx
from chile_public_market_sdk import ClientConfig, SyncChilePublicMarketSDK
config = ClientConfig(
ticket="YOUR_TICKET",
timeout=httpx.Timeout(connect=5, read=30, write=10, pool=5),
)
with SyncChilePublicMarketSDK(config=config) as sdk:
tenders = sdk.get_tenders()
Applications that need retries can inject an HTTPX client configured for their own policy. The SDK does not hide HTTPX behind another transport abstraction.
Development
poetry install --extras "dev docs"
poetry run pytest
poetry run ruff check .
poetry run mypy
poetry build
Read CONTRIBUTING.md and SECURITY.md before submitting changes or reporting vulnerabilities.
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 chile_public_market_sdk-0.5.0.tar.gz.
File metadata
- Download URL: chile_public_market_sdk-0.5.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8d520f68aadcff839d9e3a5c1df9891e7cc8ab7da94f82e27a934bffbc6b049
|
|
| MD5 |
a4664a30439333c96b26451b410cd275
|
|
| BLAKE2b-256 |
99708ceb1f39253041f3adb92814a89c0fd866ebf68d4a864448a3d4f2be5608
|
Provenance
The following attestation bundles were made for chile_public_market_sdk-0.5.0.tar.gz:
Publisher:
publish.yml on ezer-mackenzie/chile-public-market-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chile_public_market_sdk-0.5.0.tar.gz -
Subject digest:
d8d520f68aadcff839d9e3a5c1df9891e7cc8ab7da94f82e27a934bffbc6b049 - Sigstore transparency entry: 2308035522
- Sigstore integration time:
-
Permalink:
ezer-mackenzie/chile-public-market-sdk@5c617c91df4ae7fd949b578c8a4138d5800adb89 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ezer-mackenzie
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5c617c91df4ae7fd949b578c8a4138d5800adb89 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file chile_public_market_sdk-0.5.0-py3-none-any.whl.
File metadata
- Download URL: chile_public_market_sdk-0.5.0-py3-none-any.whl
- Upload date:
- Size: 26.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f228c29d752646b7868f8e681fe763f21a349c04068f44487b96f758f8c025a
|
|
| MD5 |
029e3bdc507f89a34a843711f89fa3c0
|
|
| BLAKE2b-256 |
95e2fbd775b140d8e725fc17babc21e1364773261852cf4d98afd6c9cd13178a
|
Provenance
The following attestation bundles were made for chile_public_market_sdk-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on ezer-mackenzie/chile-public-market-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chile_public_market_sdk-0.5.0-py3-none-any.whl -
Subject digest:
8f228c29d752646b7868f8e681fe763f21a349c04068f44487b96f758f8c025a - Sigstore transparency entry: 2308036072
- Sigstore integration time:
-
Permalink:
ezer-mackenzie/chile-public-market-sdk@5c617c91df4ae7fd949b578c8a4138d5800adb89 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ezer-mackenzie
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5c617c91df4ae7fd949b578c8a4138d5800adb89 -
Trigger Event:
workflow_dispatch
-
Statement type: