Skip to main content
AftaRobot

Data products

AftaRobot Data API

Verified South African minibus taxi fares, rank-to-rank route intelligence, rural coverage and unmet demand signals.

Bearer API keysJSON responsesCursor paginationRural discovery flags

What buyers get

Canonical places

Aliases such as Joburg, JHB, Tshwane, PTA, Nelspruit and Mbombela resolve to canonical entities.

Bidirectional graph

Rank-to-rank routes are exposed as a two-way mobility graph while preserving the original verified fare source.

Freshness fields

Every fare includes verification timestamps, stale flags and source type where available.

Rural premium data

Tier 3-4 routes identify villages, small towns and informal areas conventional providers usually miss.

Who uses it

Vehicle OEMs

Corridor demand, rural mobility coverage and operator market signals.

Short-term insurers

Route-level exposure, commuter density and regional fare benchmarks.

Fleet operators

Rank-to-rank cost planning, active corridors and long-distance route economics.

Government

Transport access, unmet route demand and rural/informal mobility evidence.

Researchers

Structured informal transport data for places not covered by conventional GTFS feeds.

Pricing tiers

Free

Up to 100 calls/day

R0

Routes and single price lookup for evaluation.

Standard

Up to 1 000 calls/day

R2 500/month

Routes, price index and corridors for operational reports.

Premium

Unlimited calls

R8 500/month

All endpoints, trends, demand intelligence and full reports.

Authentication

Buyer endpoints use API-key authentication. Status and data endpoints require a valid key and tier access so usage can be audited and rate-limited by plan.

Authorization: Bearer ak_your_api_key_here
curl -H "Authorization: Bearer ak_live_xxx" \
  "https://aftarobot.co.za/api/v1/data/routes?limit=100"
View OpenAPI JSON

Endpoints

GET /api/v1/statusFree+

API health, canonical route counts, directional graph edges, freshness and data coverage status.

GET /api/v1/fare?from=Hazyview&to=NelspruitFree+

Single route price lookup with source, confidence and verification date.

GET /api/v1/data/routes?limit=100&cursor=0Standard+

Paginated route, price, GPS, rural tier, association and discovery-value dataset.

GET /api/v1/data/fare-index?limit=100Standard+

Monthly provincial taxi price index and fare movement summaries.

GET /api/v1/data/corridors?limit=100Standard+

Corridor density, average price and long-distance market summaries.

GET /api/v1/data/demand?limit=100Premium

Unmet route demand signals from failed searches and commuter submissions.

GET /api/v1/data/trends?limit=100Premium

Historical price change events, stale-fare signals and verified fare movement.

Sample responses

GET /api/v1/fare?from=Hazyview&to=Nelspruit
{
  "from": "Hazyview",
  "to": "Nelspruit",
  "fare": 80,
  "price": 80,
  "currency": "ZAR",
  "source": "ASSOCIATION",
  "association": "Example Taxi Association",
  "cashOnly": true,
  "confidenceScore": 95,
  "isLongDistance": false,
  "verifiedAt": "2026-05-01T00:00:00.000Z"
}
GET /api/v1/data/routes?limit=100&cursor=0
{
  "buyer": "Example OEM",
  "generatedAt": "2026-05-17T19:00:00.000Z",
  "networkSummary": {
    "includesDirectionalEdges": true,
    "directionalRoutes": 3327,
    "canonicalRoutes": 3082,
    "autoReverseRoutes": 245,
    "rankBackedEdges": 1131,
    "textDestinationRoutes": 2196,
    "graphCompletenessPercent": 54,
    "canonicalFilter": "isAutoReverse=false"
  },
  "pagination": {
    "limit": 100,
    "offset": 0,
    "total": 3060,
    "hasMore": true,
    "nextCursor": "100"
  },
  "routes": [{
    "slug": "hazyview-taxi-rank-to-mkhuhlu",
    "originCity": "Hazyview",
    "destinationCity": "Mkhuhlu",
    "price": 20,
    "province": "Mpumalanga",
    "distanceKm": 12.5,
    "isLongDistance": false,
    "coverageTier": 4,
    "isRuralInformal": true,
    "discoveryValue": 10,
    "digitalPresenceElsewhere": false,
    "confidenceScore": 80,
    "association": null,
    "verifiedAt": "2026-05-01T00:00:00.000Z"
  }]
}

Error codes

401Missing or invalid Bearer API key.

403Your tier does not include this endpoint.

429Daily API limit exceeded.

400Required query parameters are missing or invalid.

Request API Access

Tell us what data product you want to build.