Co APIluse.co.zm ↗
Access LuSE daily stock prices, LASI index, listed companies, debt instruments, and SENS announcements via the Lusaka Securities Exchange API.
What is the Co API?
This API exposes 9 endpoints covering the Lusaka Securities Exchange (LuSE): daily stock prices, the LuSE All Share Index (LASI), listed equities and corporate bonds, SENS announcements with PDF links, and news articles. The get_daily_market_data endpoint returns one typed record per listed security including closing price, price change, and a computed percentage change. Both raw site strings and clean numeric fields are provided throughout.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/633a3018-dd43-43a3-a730-22b193daeb22/get_daily_market_data' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns the Daily Stock Data table for the current trading day, one record per listed security. `securities` carries clean typed values: prices and values as numbers, counts as integers, the site's '-' placeholder as null, and a percentage price change computed from closing price and price change (null when the change is not reported). `stock_data` keeps the site's raw column labels and string values for backward compatibility; both arrays are aligned to the table headers even though the site's rows carry an extra unlabelled column. Single response, no pagination; one network round trip.
No input parameters required.
{
"type": "object",
"fields": {
"as_of_date": "string - market data date as shown on the site, DD/MM/YYYY",
"securities": "array of typed records: ticker, isin, closing_price (number, ZMW), price_change (number or null), price_change_pct (number or null, computed as change / previous close * 100), trades (integer or null), volume_traded (integer or null), value_traded_zmw (number or null), best_bid_price, best_bid_quantity, best_ask_price, best_ask_quantity (numbers or null), as_of_date (ISO date)",
"stock_data": "array of raw table rows keyed by the site's column labels (Security, ISIN code, Closing Price (ZMW), Price Change, Trades, Volume Traded, Value Traded (ZMW), Best Bid Price, Best Bid Quantity, Best Ask Price, Best Ask Quantity), all string values",
"as_of_date_iso": "string - the same date as ISO YYYY-MM-DD"
},
"sample": {
"data": {
"as_of_date": "14/09/2026",
"securities": [
{
"isin": "ZM0000000284",
"ticker": "AECI",
"trades": 3,
"as_of_date": "2026-09-14",
"price_change": null,
"closing_price": 115,
"volume_traded": 55,
"best_ask_price": 107.9,
"best_bid_price": null,
"price_change_pct": null,
"value_traded_zmw": 5934.5,
"best_ask_quantity": 1963,
"best_bid_quantity": null
}
],
"stock_data": [
{
"Trades": "3",
"Security": "AECI",
"ISIN code": "ZM0000000284",
"Price Change": "-",
"Volume Traded": "55",
"Best Ask Price": "107.90",
"Best Bid Price": "-",
"Best Ask Quantity": "1,963",
"Best Bid Quantity": "-",
"Value Traded (ZMW)": "5,934.50",
"Closing Price (ZMW)": "115.00"
}
],
"as_of_date_iso": "2026-09-14"
},
"status": "success"
}
}About the Co API
Market Data and Index
get_daily_market_data returns the full daily trading table for the current session. Each entry in the securities array includes ticker, isin, closing_price (ZMW, number), price_change, price_change_pct (both number or null when the site shows '-'), trades (integer), and volume. A parallel stock_data array preserves the site's raw column labels for reference. get_lasi_index returns the LuSE All Share Index snapshot with typed fields — value, change, change_pct, trades, volume_traded, value_traded_zmw — alongside market capitalisation figures in both formatted strings and numeric ZMW for the including- and excluding-Shoprite variants. get_stock_prices combines closing prices with company names joined from the listed-companies page, returning ticker, company_name, closing_price (string), and closing_price_value (number).
Listed Companies and Debt Instruments
get_listed_companies returns a complete list of equities with ticker, name, and description for each issuer. get_listed_debt_instruments covers all listed corporate bonds, returning Name, Value, Interest, ISIN, Tenor (Years), Issue Date, Maturity Date, and Status per instrument. Both endpoints return a single-page response covering the full current listings.
SENS Announcements
get_sens_documents paginates SENS notices by category. Supply a category slug (from the confirmed SensCategory enum) and an optional page integer; the response includes announcements with title, date, date_iso, url, and category, plus total_pages so you can walk the full archive. Pass any announcements[*].url directly to get_sens_document_detail to retrieve the notice's title, date_iso, pdf_url, category, security (issuer token parsed from the title), and categories (all tags including year tags).
News Articles
get_latest_news returns the four most recent News & Events items from the LuSE homepage — date (short string such as '12 Aug'), title, and url. Pass any url to get_news_article_detail for the full record: date, date_iso, modified_time (ISO 8601 from page metadata), pdf_url (null when no download link is present), image_url, and source_url.
The Co API is a managed, monitored endpoint for luse.co.zm — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when luse.co.zm 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 luse.co.zm 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?+
- Build a ZMW equity price tracker that alerts on daily closing price changes using
price_change_pctfromget_daily_market_data. - Display a live LASI dashboard with index value, total trades, and market capitalisation including and excluding Shoprite.
- Compile a bond screener using maturity dates, interest rates, and status fields from
get_listed_debt_instruments. - Archive SENS financial statement announcements by category and page, storing the direct PDF URLs from
get_sens_document_detail. - Aggregate all LuSE-listed company descriptions and tickers from
get_listed_companiesinto an investor reference directory. - Monitor LuSE news releases by polling
get_latest_newsand fetching full article PDFs whenpdf_urlis non-null. - Track per-security trade volumes and values over time by storing daily snapshots from
get_daily_market_data.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the Lusaka Securities Exchange provide an official developer API?+
What does `get_sens_documents` return and how do I filter by category?+
category slug from the SensCategory enum and a page integer (1-based) to paginate. Each announcement includes title, date_iso, url, and category. Use the returned total_pages field to know how many pages exist for that category. Pass any announcement url to get_sens_document_detail to get the associated PDF link.How are null values handled in the daily market data?+
get_daily_market_data maps that to null in the typed securities array for price_change, price_change_pct, and similar numeric fields. The raw stock_data array preserves the original site string so you can distinguish between a true zero and an absent value.Does the API return historical stock prices or LASI index history?+
get_daily_market_data, get_lasi_index, get_stock_prices) reflect the current trading day only. Historical time-series data is not covered. You can fork this API on Parse and revise it to add an endpoint that stores and queries snapshots over time.