Spaza Shop Registry API

Search registered spaza shops, verify registrations, check health inspections, and trading permits. Covers all nine South African provinces with data sourced from DALRRD, municipal registries, and DTI.

Live

Base URL

https://api.crimate.net/v1/spaza

Authentication

Include your Spaza API key in the Authorization header.

curl -H "Authorization: Bearer db_spaza_live_YOUR_KEY" \
     https://api.crimate.net/v1/spaza/shops

Endpoints

GET/v1/spaza/shops

List registered spaza shops with optional filters by province, municipality, and status

Parameters: province, municipality, status (registered/pending/suspended), category, page, per_page

Example

GET /v1/spaza/shops?province=gauteng&status=registered
GET/v1/spaza/shops/{registrationNumber}

Get detailed information for a specific shop by its registration number

Parameters: registrationNumber (required, path)

Example

GET /v1/spaza/shops/SPZ-GP-2025-00142
GET/v1/spaza/shops/search

Search shops by owner name, trading name, or address

Parameters: q (required), province, municipality, page, per_page

Example

GET /v1/spaza/shops/search?q=sunshine+traders&province=western_cape
GET/v1/spaza/shops/nearby

Find registered shops near a geographic coordinate within a given radius

Parameters: lat (required), lon (required), radius_km (default 2), status

Example

GET /v1/spaza/shops/nearby?lat=-26.2041&lon=28.0473&radius_km=3
GET/v1/spaza/inspections

List health and safety inspections for shops

Parameters: registration_number, province, result (pass/fail/pending), from (YYYY-MM-DD), to (YYYY-MM-DD), page, per_page

Example

GET /v1/spaza/inspections?registration_number=SPZ-GP-2025-00142
GET/v1/spaza/permits

List trading permits and licences for registered shops

Parameters: registration_number, province, permit_type, status (valid/expired/revoked), page, per_page

Example

GET /v1/spaza/permits?province=kwazulu_natal&status=valid
GET/v1/spaza/stats

Dataset statistics (total shops, provinces, inspections, latest update)

Parameters: None

Example

GET /v1/spaza/stats

Response Examples

Shop detail response:

{
  "shop": {
    "registration_number": "SPZ-GP-2025-00142",
    "trading_name": "Sunshine Traders",
    "owner_name": "Thabo Mokoena",
    "province": "gauteng",
    "municipality": "City of Johannesburg",
    "address": "42 Main Road, Soweto, 1804",
    "lat": -26.2679,
    "lon": 27.8546,
    "status": "registered",
    "registration_date": "2025-04-12",
    "category": "general_dealer",
    "last_inspection": {
      "date": "2026-01-20",
      "result": "pass",
      "inspector": "Environmental Health Unit"
    },
    "permits": [
      {
        "permit_type": "trading_licence",
        "status": "valid",
        "expiry_date": "2027-04-11"
      }
    ]
  }
}

Try It

Enter your Spaza API key to make a live request. Generate a key in the dashboard.

Try It

Make a live API call from your browser

GET
curl -H "Authorization: Bearer db_spaza_live_YOUR_KEY" \
     "https://crimate.net/v1/spaza/stats"

Data Sources

DALRRD

Department of Agriculture, Land Reform and Rural Development. Maintains the national spaza shop registration database including food handling compliance records and health certificates.

Municipal Registries

Local municipality business registration systems across all nine provinces. Provides trading licences, zoning approvals, and environmental health inspection records for informal and formal retail outlets.

DTI

Department of Trade, Industry and Competition. Provides business registration records, CIPC entity data, and compliance status for registered traders.

Rate Limits

TierPriceRate LimitDaily QuotaMonthly Quota
FreeR0/mo10 req/min1001,000
StarterR1,999/mo60 req/min5,00050,000
ProR4,999/mo300 req/minUnlimited500,000

Error Codes

All error responses follow a consistent JSON format:

{
  "error": "error_code",
  "message": "Human-readable description."
}
StatusError CodeDescription
400invalid_requestThe request body or query parameters are malformed.
401unauthorizedMissing or invalid API key.
403no_subscriptionNo active subscription for this API product.
403quota_exceededDaily or monthly quota exceeded.
404not_foundThe requested resource does not exist.
429rate_limit_exceededToo many requests. Check X-RateLimit-Remaining header.
500internal_errorAn unexpected server error occurred.