Reference
REST API
Base URL: https://api.imibare.org
All endpoints are versioned under /v1/.
Responses are JSON unless a download endpoint is used.
GET /v1/datasets
Returns all datasets in the catalog.
Request
GET /v1/datasetsQuery parameters
| Parameter | Type | Description |
|---|---|---|
country | string | Filter by ISO 3166-1 alpha-2 code (e.g., RW, KE). Case-insensitive. |
institution | string | Filter by institution slug (e.g., nisr). |
topic | string | Filter by topic slug (e.g., prices). |
frequency | string | Filter by frequency slug (e.g., monthly). |
pipeline | string | Filter by pipeline status: automated, curated, or stale. |
Response 200 OK
{ "datasets": [ { "id": "rw.nisr.cpi.monthly", "country": "RW", "country_name": "Rwanda", "name": "Consumer Price Index (monthly)", "institution": "National Institute of Statistics of Rwanda", "institution_slug": "nisr", "topic": "prices", "frequency": "monthly", "coverage_start": "2009-01", "coverage_end": "present", "pipeline": "automated", "last_updated": "2026-05-15", "version": "2026-05-15", "formats": ["csv", "json", "parquet"], "license": "CC-BY-4.0", "license_basis": "publisher-terms", "license_url": "https://statistics.gov.rw/terms-use" } ], "total": 5}Examples
# All datasetscurl https://api.imibare.org/v1/datasets
# Rwanda onlycurl "https://api.imibare.org/v1/datasets?country=RW"
# Monthly price datasetscurl "https://api.imibare.org/v1/datasets?topic=prices&frequency=monthly"GET /v1/datasets/{id}
Returns full metadata for a single dataset, including column specifications.
Request
GET /v1/datasets/{id}Path parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Dataset ID (e.g., rw.nisr.cpi.monthly) |
Response 200 OK
{ "id": "rw.nisr.cpi.monthly", "country": "RW", "country_name": "Rwanda", "name": "Consumer Price Index (monthly)", "institution": "National Institute of Statistics of Rwanda", "institution_slug": "nisr", "topic": "prices", "frequency": "monthly", "coverage_start": "2009-01", "coverage_end": "present", "pipeline": "automated", "source_url": "https://statistics.gov.rw/statistical-publications/price-indices-cpi-ppi/", "source_format": "excel", "last_updated": "2026-05-15", "version": "2026-05-15", "formats": ["csv", "json", "parquet"], "license": "CC-BY-4.0", "license_basis": "publisher-terms", "license_url": "https://statistics.gov.rw/terms-use", "columns": [ { "name": "date", "type": "date", "description": "First day of reference month", "unit": null }, { "name": "category", "type": "string", "description": "CPI category (overall, food, housing, transport, …)", "unit": null }, { "name": "value", "type": "float64", "description": "Index value (base year 2014=100)", "unit": "index" } ], "notes": "Base year changed from 2009 to 2014 in the January 2015 release."}Response 404 Not Found
{ "error": "Dataset not found", "id": "rw.nisr.cpi.monthly"}Example
curl https://api.imibare.org/v1/datasets/rw.nisr.cpi.monthlyGET /v1/data/{id}/download
Returns the dataset file as a download.
Request
GET /v1/data/{id}/downloadPath parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Dataset ID |
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
format | string | parquet | File format: parquet, csv, or json |
version | string | latest | Version date YYYY-MM-DD. Returns the Parquet snapshot for that date. |
Response 200 OK
Binary file stream with Content-Type set to the format’s MIME type:
application/octet-streamfor Parquettext/csvfor CSVapplication/jsonfor JSON
Examples
# Download CPI as Parquetcurl -O "https://api.imibare.org/v1/data/rw.nisr.cpi.monthly/download"
# Download as CSVcurl -o cpi.csv "https://api.imibare.org/v1/data/rw.nisr.cpi.monthly/download?format=csv"
# Download a specific versioncurl -O "https://api.imibare.org/v1/data/rw.nisr.cpi.monthly/download?version=2025-06-01"GET /v1/search
Full-text search across dataset names and descriptions.
Request
GET /v1/search?q={query}Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search query |
Response 200 OK
{ "query": "exchange rate", "results": [ { "id": "rw.bnr.fx.daily", "name": "Official exchange rates (daily)", "country": "RW", "country_name": "Rwanda", "institution": "National Bank of Rwanda", "institution_slug": "bnr", "topic": "exchange-rates", "frequency": "daily", "pipeline": "automated" } ], "total": 1}Search matches on id, name, country code and name, institution, topic, notes
and tags, so q=kenya finds Kenyan datasets whose names never say Kenya.
Example
curl "https://api.imibare.org/v1/search?q=exchange+rate"Error responses
All errors return JSON with an error field.
| Status | Meaning |
|---|---|
400 Bad Request | Invalid query parameter or format value |
404 Not Found | Dataset ID not found |
500 Internal Server Error | R2 read failure or upstream error |
Rate limits
No authentication is required, and no formal rate limits are enforced. Treat the API as a public service and avoid automated bulk downloads. Use the Parquet files directly from R2 instead.