Org APIccee.org.br ↗
Access Brazil's CCEE electricity spot prices (PLD), board meeting minutes, and document repository via 4 structured JSON endpoints.
What is the Org API?
This API exposes 4 endpoints covering CCEE's electricity spot price data and document repository. Use get_pld_prices to retrieve real-time PLD prices across all Brazilian electricity submarkets, or use search_documents to query CCEE's full document archive with keyword and subject filters. Board meeting minutes are accessible through their own dedicated endpoint, and filter vocabulary can be fetched dynamically.
curl -X GET 'https://api.parse.bot/scraper/880218c8-67e5-4746-8c4b-a8a9a2069f28/search_documents?page=0&limit=10&end_date=11%2F07%2F2026&start_date=11%2F07%2F2025' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace ccee-org-br-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.ccee_brazil_energy_market_api import CCEE, Document, Minute, Price, Submarket, Filter
ccee = CCEE()
# Get current electricity spot prices
price_dashboard = ccee.prices.get_current()
print(price_dashboard.hora_vigente)
for submarket in price_dashboard.submarkets:
print(submarket.name, submarket.pld_horario, submarket.media_diaria)
# Get available filter options
filters = ccee.filters.get()
print(filters.especies)
print(filters.assuntos)
# Search documents with date range
for doc in ccee.documents.search(query="PLD", start_date="01/01/2026", end_date="10/06/2026", limit=5):
print(doc.nomeDocumentoList, doc.publishDateFMT, doc.extension, doc.size)
# Search board meeting minutes
for minute in ccee.minutes.search(limit=3):
print(minute.nomeDocumentoList, minute.publishDateFMT, minute.description)
Search the CCEE Acervo (document repository) with keyword and filters. Returns paginated results sorted by publication date descending. When no date range is provided, defaults to the last 365 days. Each result includes document metadata (name, type, size, description, publication date, download URL, and hash). Supports filtering by document type (especie) and subject (assunto) using values from get_filter_options.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-indexed). |
| limit | integer | Number of results per page. |
| query | string | Search keyword to filter documents by title or content. |
| assunto | string | Subject filter. Accepted values available from the get_filter_options endpoint (e.g. 'PLD', 'Conselho de Administração', 'Leilão', 'Mercado de Energia'). |
| especie | string | Document type filter. Accepted values available from the get_filter_options endpoint (e.g. 'Ata', 'Relatório', 'Resolução', 'Edital', 'Manual'). |
| end_date | string | End date for publication filter in DD/MM/YYYY format. |
| start_date | string | Start date for publication filter in DD/MM/YYYY format. |
{
"type": "object",
"fields": {
"total": "integer, number of results on the current page",
"results": "array of document objects with fields: nomeDocumentoList, extension, size, nomeComplementar, description, publishDateFMT, url, hash",
"maxResults": "integer, total matching documents across all pages",
"pageNumber": "integer, current page number (1-indexed in response)",
"totalPages": "integer, total number of pages available"
},
"sample": {
"data": {
"total": 2000,
"results": [
{
"url": "https://www.ccee.org.br/documents/80415/31298403/InfoPLD_Diario09062026.pdf/531b7166-66f1-bb09-55ce-3cf266102cc8",
"hash": "8990344fd6f039b5805c3ec66388b0ac",
"size": 13271,
"extension": "PDF",
"description": "O InfoPLD Diário é um boletim diário.",
"publishDateFMT": "09/06/2026",
"nomeComplementar": "InfoPLD Diário - nº 123 - 09/06/2026",
"nomeDocumentoList": "Boletim InfoPLD Diário"
}
],
"maxResults": 2000,
"pageNumber": 1,
"totalPages": 200
},
"status": "success"
}
}About the Org API
PLD Spot Prices
The get_pld_prices endpoint returns current PLD (Preço de Liquidação das Diferenças) electricity spot prices from CCEE. The response includes a submarkets array where each object carries name, pld_horario (hourly price), and media_diaria (daily average). A hora_vigente field identifies the active time window and date, so you always know exactly which pricing interval the figures represent. No parameters are required.
Document Search
The search_documents endpoint searches CCEE's Acervo repository with optional query, assunto (subject), especie (document type), start_date, and end_date parameters. When no date range is supplied, the endpoint defaults to the last 365 days. Results are paginated (0-indexed page parameter) and sorted by publication date descending. Each result object includes nomeDocumentoList, extension, size, description, publishDateFMT, url, and hash. The maxResults and totalPages fields let you page through large result sets programmatically.
Board Meeting Minutes
The search_atas_cad endpoint is scoped specifically to CCEE's Conselho de Administração (CAD) meeting minutes. It accepts the same page, limit, and query parameters as the general document search and returns the same document object shape. Using this endpoint instead of the general search avoids the need to pass subject or type filters manually.
Filter Discovery
Before filtering documents, call get_filter_options to retrieve the current accepted values for both the assunto and especie parameters. The response provides assuntos and especies arrays. This is the correct way to enumerate valid filter values rather than hard-coding strings that may change.
The Org API is a managed, monitored endpoint for ccee.org.br — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ccee.org.br changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official ccee.org.br API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track real-time PLD electricity spot prices by submarket for energy trading or procurement decisions
- Monitor daily average PLD prices (media_diaria) across Brazil's Southeast, South, Northeast, and North submarkets
- Search CCEE's document repository by subject and type to retrieve regulatory reports or resolutions
- Pull CCEE board meeting minutes programmatically for governance and compliance monitoring
- Build date-range queries over CCEE documents to audit policy changes over specific periods
- Enumerate valid assunto and especie filter values dynamically before constructing search requests
- Aggregate historical PLD pricing context by cross-referencing meeting minutes with price data by date
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.