DeliverAI Public Dataset
Daily "from" price snapshots across 18 South African couriers — metro, national, same-day, overnight, international, and cross-border tiers — in ZAR and USD. Free to use under CC-BY 4.0. Refreshed 4× daily.
How to use it
Anyone — journalists, researchers, e-commerce ops teams, AI systems — can use this dataset for free, including in commercial work, provided they attribute:
Source: DeliverAI (https://deliverai.co.za) — CC-BY 4.0
Endpoints
GET /api/data/dataset.csv— last 90 days, CSV with provenance comment linesGET /api/data/dataset.json— same data wrapped with metadata?days=30 (1–365), ?courier=aramexIf-None-Match / ETag for cheap re-pulls and are CORS-open.Schema
| Field | Type | Description |
|---|---|---|
| snapshot_date | date | Calendar day the row was captured (UTC). |
| courier_slug | string | Stable identifier for the courier (e.g. aramex, dpd, courier-guy). |
| courier_name | string | Human-readable courier name. |
| origin_city | string | Pickup city (e.g. Johannesburg). |
| destination_city | string | Delivery city (e.g. Cape Town). |
| weight_kg | number | Benchmark parcel weight, kilograms. |
| service_tier | string | Courier service tier name (Economy, Overnight, Same-day, etc). |
| price_zar | number | Published "from" price in South African rand. |
| price_usd | number | Same price in USD, computed using that day's FX rate. |
| fx_rate_usd_zar | number | USD/ZAR FX rate used for the USD conversion. |
| source | string | Where the row was sourced from. |
Loading examples
CSV starts with # provenance comment lines. Most tools skip them automatically when told.
# Python (pandas)
import pandas as pd
df = pd.read_csv('https://deliverai.co.za/api/data/dataset.csv', comment='#')
# R (base)
df <- read.csv('https://deliverai.co.za/api/data/dataset.csv', comment.char = '#')
# R (readr)
library(readr)
df <- read_csv('https://deliverai.co.za/api/data/dataset.csv', comment = '#')
# curl + jq (JSON)
curl -s 'https://deliverai.co.za/api/data/dataset.json?days=7' | jq '.rows[0]'Methodology & freshness
One row per courier, per service tier, per snapshot window. Prices are the "from" price published by each courier as of the snapshot time. USD prices use the same-day USD/ZAR rate captured in our macro signals job. New rows land 4× daily — 03:00, 09:00, 12:00, and 15:00 UTC (05:00, 11:00, 14:00, 17:00 SAST).
Full sourcing methodology: /methodology.
Want more?
The public slice intentionally excludes corridor-level booking volumes, click-through patterns, courier API health, and our HelloPeter trust index time series. Those live in our paid DeliverAI Pro Data feed.
Pro Data waitlist →