Discover/Eskom API
live

Eskom APIeskom.co.za

Access real-time loadshedding status, procurement tenders, electricity tariffs, media statements, and investor documents from Eskom via a single API.

Endpoint health
verified 3d ago
get_loadshedding_status
get_tariff_year_page
get_procurement_tenders
get_tender_documents
get_current_tariffs
9/9 passing latest checkself-healing
Endpoints
9
Updated
26d ago

What is the Eskom API?

This API exposes 9 endpoints covering Eskom South Africa's public data: current loadshedding stage via get_loadshedding_status, active procurement tenders and their downloadable documents, electricity tariff pages, media room articles, site search, Cost Estimate Letter (CEL) and IPP grid-connection documents, and investor relations PDFs. Each endpoint targets a distinct section of the Eskom website and returns structured, machine-readable fields directly usable in applications monitoring South Africa's power grid.

Try it

No input parameters required.

api.parse.bot/scraper/162f0187-e02a-4cb8-988a-ca71cb601ed6/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/162f0187-e02a-4cb8-988a-ca71cb601ed6/get_loadshedding_status' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 eskom-co-za-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.

"""Walkthrough: Eskom SDK — loadshedding status, tenders, articles, tariffs."""
from parse_apis.eskom_website_api import Eskom, Query, TenderNotFound

client = Eskom()

# Check current loadshedding status — single resource fetch.
status = client.loadsheddingstatuses.get()
print(f"Loadshedding stage: {status.stage}, status: {status.status}")

# Browse active procurement tenders, capped to 5 items.
for tender in client.tenders.list(limit=5):
    print(f"Tender {tender.tender_id}: {tender.reference} — {tender.province}")

# Drill into first tender's documents via sub-resource.
tender = client.tenders.list(limit=1).first()
if tender:
    for doc in tender.documents.list(limit=3):
        print(f"  Doc: {doc.name} ({doc.size} bytes) — {doc.content_type}")

# Search articles using the Query enum.
article = client.articles.search(query=Query.LOADSHEDDING, limit=1).first()
if article:
    print(f"Top result: {article.title}")
    print(f"  URL: {article.url}")

# Typed error handling — catch TenderNotFound on a missing tender.
try:
    missing_tender = Eskom().tenders.list(limit=1).first()
    if missing_tender:
        _ = missing_tender.documents.list(limit=1).first()
except TenderNotFound as exc:
    print(f"Tender not found: {exc.tender_id}")

# Retrieve investor relations documents.
for doc in client.investordocuments.list(limit=3):
    print(f"Investor doc: {doc.title} — {doc.url}")

print("Exercised: loadsheddingstatuses.get / tenders.list / documents.list / articles.search / investordocuments.list")
All endpoints · 9 totalmissing one? ·

Retrieve the current loadshedding status from Eskom. Returns the numeric stage level as a string. A stage of '1' means Stage 1 loadshedding is active; '-1' typically indicates no active loadshedding. The status field provides a human-readable description.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "stage": "string representing the raw stage number from the API",
    "status": "string indicating the current loadshedding status description"
  },
  "sample": {
    "data": {
      "stage": "1",
      "status": "Stage 1"
    },
    "status": "success"
  }
}

About the Eskom API

Loadshedding and Tariff Data

get_loadshedding_status returns two fields: stage (a raw string such as '1' through '8', or '-1' when no loadshedding is active) and status (a human-readable description). No input parameters are required. For tariff information, get_current_tariffs returns the page title, an array of sections describing tariff categories, and year_links — an array of objects with text and url keys pointing to specific tariff schedule pages. Those URLs can be fed directly into get_tariff_year_page (using its required url parameter) to retrieve the title and a content array of paragraph and list-item text for each schedule page.

Procurement Tenders and CEL Documents

get_procurement_tenders returns active tender listings including REFERENCE, TENDER_ID, HEADER_DESC, SCOPE_DETAILS, CLOSING_DATE, Province, and a DOCS count. An optional tender_id filter narrows results, but only matches tenders currently in the active dataset — expired or removed tenders will not appear. get_tender_documents accepts a required tender_id and returns a list of downloadable files with ID, NAME, SIZE, ContentType, and a download_url for each. Folder-type entries (with ContentType of 'Folder' and SIZE of 0) may also appear in results.

get_cel_documents is a focused endpoint that returns two collections: tenders (tender objects pre-filtered to CEL, IPP, and renewable energy topics, each with tender_id, reference, subject, scope, and closing_date) and library_documents (objects with title and url for PDFs from the Grid Access Unit Library). This endpoint requires no inputs and is suited for independent power producers or grid-connection researchers.

Media, Search, and Investor Relations

get_media_room_articles returns paginated news listings — url, date, title, and summary (which may be null) — with an optional page integer for pagination. search_site accepts a required query string and returns matching url, title, and summary fields across the broader Eskom site. get_investor_relations_documents returns a deduplicated list of PDF links (url and title) from Eskom's integrated results page; entries with generic anchor text such as 'Read more' are excluded automatically.

Reliability & maintenanceVerified

The Eskom API is a managed, monitored endpoint for eskom.co.za — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when eskom.co.za 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 eskom.co.za 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.

Last verified
3d ago
Latest check
9/9 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a loadshedding alert system that polls get_loadshedding_status and notifies users when the stage value changes.
  • Aggregate active Eskom procurement tenders by Province and surface relevant opportunities to B2B vendors.
  • Download and index tender documents using get_tender_documents to track specification changes across bid cycles.
  • Track published electricity tariff schedules by chaining get_current_tariffs with get_tariff_year_page for each year_links URL.
  • Monitor Eskom's media room for new press releases and statements by paginating through get_media_room_articles.
  • Screen for IPP and renewable energy grid-connection tenders using the pre-filtered tenders array from get_cel_documents.
  • Build an investor dashboard by pulling financial PDF listings from get_investor_relations_documents.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does Eskom provide an official public developer API?+
Eskom does not publish a documented public developer API for general third-party use. The data exposed by this Parse API is sourced from Eskom's public-facing website at eskom.co.za.
What does `get_loadshedding_status` actually return, and how do I interpret the stage value?+
get_loadshedding_status returns two fields: stage (a raw string integer such as '1', '4', or '8') and status (a description string). A stage value of '-1' indicates no active loadshedding. The endpoint takes no input parameters and always reflects the current live status.
Can I retrieve expired or historical procurement tenders using `get_procurement_tenders`?+
The tender_id filter only matches tenders currently in the active dataset. Expired, closed, or removed tenders will not appear in results. The API covers active tender listings and their associated documents. You can fork it on Parse and revise it to add an endpoint targeting historical tender archives if Eskom surfaces them on the site.
Does the API return real-time generation or grid-capacity statistics (e.g. MW output, ESKOM System Status)?+
Not currently. The API covers loadshedding stage, tariffs, tenders, CEL/IPP documents, media articles, and investor PDFs — it does not expose generation capacity, system-status dashboards, or energy-output figures. You can fork it on Parse and revise it to add an endpoint targeting Eskom's system status pages.
Is pagination supported for media room results, and can I retrieve all articles at once?+
get_media_room_articles supports an optional page integer parameter for pagination. Each call returns one page of results as displayed on the Eskom Media Room. There is no bulk endpoint that returns all articles in a single response; iterate over page numbers to collect larger sets.
Page content last updated . Spec covers 9 endpoints from eskom.co.za.
Related APIs in Government PublicSee all →
citypower.co.za API
Check real-time loadshedding schedules, outage status, and electricity tariffs for Johannesburg, plus access customer service information, billing details, and company news. Plan your power usage with loadshedding schedules and stay updated on City Power's latest announcements, FAQs, and contact information.
caiso.com API
Access real-time and intraday data from California's electricity grid (CAISO), including current demand and forecasts, generation supply mix, renewable energy levels, CO2 emissions and carbon intensity, locational marginal prices (LMPs), and overall grid operating status.
municipalities.co.za API
Find comprehensive information about South African municipalities including their financial performance, service delivery metrics, contact details, and employment data all in one place. Search across provinces, access municipal tenders and job vacancies, and explore demographic and resource information for any municipality.
ccee.org.br API
Access real-time electricity spot prices (PLD) and search CCEE documents and board meeting minutes to stay informed on Brazil's energy market. Filter and retrieve current pricing data and historical meeting records to track energy market developments.
mimer.svk.se API
Monitor Swedish electricity grid data by retrieving real-time consumption and production statistics, settlement prices, and frequency containment reserve information from Svenska kraftnät. Access comprehensive grid settlement data and exchange rates to analyze energy market trends and grid performance across Sweden.
jse.co.za API
Access live JSE stock prices, company profiles, and market indices from the Johannesburg Stock Exchange. Search SENS announcements and view comprehensive market statistics to stay informed on JSE activity.
eprocurement.gov API
Monitor India's public procurement opportunities by accessing active tenders, bids closing today, global tenders, high-value contracts, and cancelled tenders from the Central Public Procurement Portal. Search tender details, browse participating organizations, and track real-time procurement statistics to stay informed on government contracting opportunities.
ameren.com API
Retrieve hourly electricity prices, current outage summaries, rate information, and energy efficiency programs from Ameren. Covers Illinois and Missouri service areas with real-time and forecast pricing data.