Africa Compliance Data

Documentation

Base URL: https://api.africacompliancedata.com. All endpoints are GET and return JSON. Country codes are ISO 3166-1 alpha-2 (e.g. KE, NG, ZA, CI, EG).

Authentication

Get a key from the pricing section (the free plan takes a minute). Send it on every request:

curl -H "x-api-key: ACD-XXXX-XXXX-XXXX" \
  https://api.africacompliancedata.com/v1/countries/NG/vat

Authorization: Bearer ACD-… also works. Requests without a valid key get 401; over the plan's rate limit, 429 with Retry-After.

Plans

PlanDataRate limit
FreeHolidays, business days, country list (non-commercial use)30 / min
StarterHolidays, business days, country list; commercial use60 / min
ProEverything: + VAT, withholding tax, tax ID checks, filing deadlines300 / min
ComplianceEverything, + email change alerts and priority support1,000 / min

On Free and Starter, the VAT, withholding-tax, tax-ID and deadline endpoints (and matching MCP tools) return 403 with an upgrade message; the country profile omits those blocks and lists them in not_in_plan.

Fair use: full country profiles are limited to 5 per minute per key. A key that reads an unusually large part of the dataset in one day is paused for review (403, “Access paused”); email support to restore it. Need the whole dataset? Ask about a data licence. See the Terms, section 3a.

Response format

Every response includes:

FieldMeaning
coverageready (sourced), partial (main value sourced, a detail missing) or gap (not yet sourced)
sourcesFor each source: url, legal_basis, source_type, effective_date, confidence (high / medium / low), last_verified
dataset_versionDate the dataset was built
disclaimerReference information, not legal or tax advice

Endpoints

EndpointReturns
/v1/countriesAll countries with currency and per-feature coverage
/v1/countries/{cc}Full compliance profile of a country
/v1/countries/{cc}/holidays?year=2026Public holidays. Add &include_religious_scopes=true for holidays limited to one faith (e.g. Kenya's Idd-ul-Azha for Muslims)
/v1/countries/{cc}/is-business-day?date=2026-12-24business_day true/false and the reason
/v1/countries/{cc}/business-days?from=2026-12-01&to=2026-12-31Working days in the range (inclusive) and the holidays skipped
/v1/countries/{cc}/add-business-days?date=2026-12-24&days=5The date N working days later (negative N: earlier)
/v1/countries/{cc}/vatStandard and other rates, registration threshold, notes
/v1/countries/{cc}/withholding-tax?payment_type=dividendsResident and non-resident rates; payment_type optional (dividends, interest, royalties, rent, services, professional_fees, management_fees, technical_fees, contracts, goods, commissions, directors_fees, other)
/v1/countries/{cc}/tax-id/validate?value=…Format check against the official format. Does not confirm registration; the value is not stored or logged
/v1/countries/{cc}/deadlines?year=2026&month=11Tax due dates falling in that month, adjusted for weekends and holidays per the country's rule

Holiday status values

StatusMeaning
ruleFixed by law (fixed date, Easter-based, nth weekday)
estimatedMoon-sighted holiday computed in advance; may move by a day or two when officially announced
confirmedDate taken from an official announcement (source_url included); moved_from shows the original date when a holiday was moved
observedSubstitute day under the country's weekend rule (observed_for shows the holiday)

MCP server

Endpoint https://api.africacompliancedata.com/mcp (Streamable HTTP, protocol 2025-06-18). Send your key in the x-api-key header. Tools (all read-only): list_countries, get_public_holidays, is_business_day, count_business_days, add_business_days, get_vat, get_withholding_tax, validate_tax_id_format, get_filing_deadlines, get_country_profile.

Claude Code

claude mcp add --transport http africa-compliance \
  https://api.africacompliancedata.com/mcp \
  --header "x-api-key: ACD-XXXX-XXXX-XXXX"

Cursor and other clients (mcp.json)

{
  "mcpServers": {
    "africa-compliance": {
      "url": "https://api.africacompliancedata.com/mcp",
      "headers": { "x-api-key": "ACD-XXXX-XXXX-XXXX" }
    }
  }
}

Limits and data notes