Co APIprudentialpensions.co.zm ↗
Get current and historical unit prices (ZMW) for Prudential Pensions Management Zambia funds via two structured endpoints covering fund codes, names, and daily price series.
What is the Co API?
This API provides structured access to unit price data across all Prudential Pensions Management Zambia investment funds through 2 endpoints. The list_fund_prices endpoint returns each fund's current ZMW price, percentage change, and site product code in a single call. The get_fund_price_history endpoint returns a dated daily price series for any individual fund, filterable by start and end date.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/a694796c-d84b-488c-ae68-372821ace78e/list_fund_prices' \ -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 prudentialpensions-co-zm-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: Prudential Pensions Zambia — fund prices and history."""
from parse_apis.prudentialpensions_co_zm_api import PrudentialPensions, Fund, InvalidFund
client = PrudentialPensions()
# List every fund with its latest unit price and percentage change.
for fund in client.funds.list(limit=10):
print(fund.fund_name, fund.latest_price, fund.currency, f"{fund.percentage_change}%")
# Pick the first fund that has a published price-history series.
fund = client.funds.list(limit=10).first()
if fund is not None and fund.fund is not None:
# Drill into the full dated price history using the fund slug.
try:
history = client.price_histories.get(fund=fund.fund, start_date="2025-01-01")
except InvalidFund:
print("fund slug was not accepted")
else:
print(history.fund_name, history.currency, "points:", history.total)
# Show the most recent price if available.
if history.latest is not None:
print("latest:", history.latest.date, history.latest.price)
# Print the first few historical prices.
for price in history.prices[:3]:
print(price.date, price.price)
print("exercised: funds.list / price_histories.get")
Returns the latest published unit price (ZMW) and the site's reported percentage change for every Prudential Zambia fund shown in the site's price ticker, one row per fund. Each row also carries `price_date` (YYYY-MM-DD) and `price_month` (YYYY-MM): the date of the most recent priced point in the fund page's published price series, i.e. when the currently shown unit price was last updated (the site prices funds at month end, so this is normally the last day of the latest priced month). The price feed itself is undated, so the date is looked up from each fund's page series: one round trip for the ticker plus one per fund with a series (six in total today). Rows carry the site's product code and, where the fund's page exposes a dated series, the `fund` key accepted by get_fund_price_history; `fund`, `price_date` and `price_month` are null for funds without a published series (currently the Post Retirement Care Investment Fund). If a fund's series lookup fails, its `price_date`/`price_month` are null and the failure is listed in `price_date_errors` (normally an empty array). No inputs; never empty while the site publishes prices.
No input parameters required.
{
"type": "object",
"fields": {
"funds": "array of fund rows: fund_code (site product code), fund_name, latest_price (number, ZMW), percentage_change (number, percent as reported by the site), currency, price_date (YYYY-MM-DD date the shown price was last updated, or null), price_month (YYYY-MM of price_date, or null), fund (slug for get_fund_price_history or null)",
"total": "number of funds returned",
"price_date_errors": "array of {fund, status_code} for funds whose date lookup failed upstream; empty when every date was resolved"
},
"sample": {
"data": {
"funds": [
{
"fund": "wisewealth",
"currency": "ZMW",
"fund_code": "PWWBF",
"fund_name": "Pru WISE Wealth Builder Fund",
"price_date": "2026-07-31",
"price_month": "2026-07",
"latest_price": 1.8821,
"percentage_change": 1.2585
},
{
"fund": "wisekid",
"currency": "ZMW",
"fund_code": "PWKIF",
"fund_name": "Pru WISE Kid Investment Fund",
"price_date": "2026-07-31",
"price_month": "2026-07",
"latest_price": 1.05,
"percentage_change": 0.5335
},
{
"fund": "wiseretirement",
"currency": "ZMW",
"fund_code": "PWRF",
"fund_name": "Pru WISE Retirement Fund(Kwacha)",
"price_date": "2022-08-31",
"price_month": "2022-08",
"latest_price": 1,
"percentage_change": 0
},
{
"fund": null,
"currency": "ZMW",
"fund_code": "PReCIF",
"fund_name": "Post Retirement Care Investment Fund",
"price_date": null,
"price_month": null,
"latest_price": 1.8573,
"percentage_change": 2.3562
},
{
"fund": "balancedfund",
"currency": "ZMW",
"fund_code": "PBF",
"fund_name": "Pru Balanced Fund",
"price_date": "2026-07-31",
"price_month": "2026-07",
"latest_price": 1.8786,
"percentage_change": 0.8544
},
{
"fund": "fixedincome",
"currency": "ZMW",
"fund_code": "PFIF",
"fund_name": "Pru Fixed Income Fund",
"price_date": "2026-07-31",
"price_month": "2026-07",
"latest_price": 1.8275,
"percentage_change": 1.8512
}
],
"total": 6,
"price_date_errors": []
},
"status": "success"
}
}About the Co API
Fund Price Snapshot
The list_fund_prices endpoint requires no input parameters and returns one row per fund from the site's published price ticker. Each row includes fund_code (the site's product code), fund_name, latest_price as a number in ZMW, and percentage_change as a numeric percent value. The response also includes a total count of funds returned. This endpoint is suited for building dashboards that need a current snapshot of all funds at once.
Historical Unit Price Series
The get_fund_price_history endpoint accepts a required fund parameter — the slug value emitted by list_fund_prices — and two optional date filters: start_date and end_date, both in ISO YYYY-MM-DD format. The response includes a prices array of {date, price} objects ordered oldest-first within the requested window, a latest object with the most recent published date and price (or null if the series is empty), the fund_name as published on the site, the currency field confirming ZMW, and a total count of data points returned.
Coverage and Data Shape
All prices are denominated in Zambian Kwacha (ZMW). The history series runs from the start of the fund's published chart data through the most recent published date unless bounded by start_date or end_date. Each calendar day with a published price appears as one point; gaps in the source data are reflected as gaps in the series rather than filled values. The fund_code from list_fund_prices and the fund slug used in get_fund_price_history are consistent, making it straightforward to chain the two endpoints.
The Co API is a managed, monitored endpoint for prudentialpensions.co.zm — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when prudentialpensions.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 prudentialpensions.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?+
- Track daily ZMW unit price movements for each Prudential Zambia fund using the
pricesarray fromget_fund_price_history. - Build a fund comparison table using
latest_priceandpercentage_changefields fromlist_fund_prices. - Calculate rolling returns for a specific fund over a custom date window using
start_dateandend_datefilters. - Alert users when any fund's
percentage_changeexceeds a defined threshold by pollinglist_fund_prices. - Populate a pension portfolio tracker with current valuations using fund codes and prices from
list_fund_prices. - Generate historical performance charts for a specific fund by consuming the ordered
pricesseries fromget_fund_price_history.
| 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 Prudential Pensions Management Zambia have an official developer API?+
What does `get_fund_price_history` return and how do I limit the date range?+
prices array of {date, price} objects in ZMW ordered oldest-first, a latest object with the most recent date and price, fund_name, currency, and a total count. Use the optional start_date and end_date parameters (ISO YYYY-MM-DD) to bound the window. Omitting both returns the full available series for that fund.How often is the price data updated?+
latest_price values depends on when the source site updates its ticker.Does the API cover fund metadata such as inception dates, fund manager details, or expense ratios?+
Does `list_fund_prices` return data for all funds or only a subset?+
total field in the response tells you exactly how many fund rows were returned.