AfDB APImapafrica.afdb.org ↗
Access African Development Bank Group project data via 3 endpoints: paginated listings, title search, and full project detail with financing, locations, and documents.
What is the AfDB API?
The MapAfrica AfDB API exposes 3 endpoints covering African Development Bank Group projects published on mapafrica.afdb.org. The list_projects endpoint returns paginated project summaries filterable by country, sector, status, and ADF cycle, while get_project delivers a full record including financing transactions, geolocation data, narrative descriptions, and attached documents for a single project identified by its IATI identifier.
curl -X GET 'https://api.parse.bot/scraper/31d65b2c-d21c-4314-955e-a6a70e27467a/list_projects?status=3&country=AO' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns one page of AfDB projects, optionally filtered by country, region, sector, High-5 theme, status, approval year, ADF cycle and sovereign/non-sovereign. One upstream request per call. Paging is caller-controlled through page (1-based, default 1) and per_page (default 20, clamped to 100); the site publishes no total count, so has_more is true when the page came back full and a further page may still be empty. Default ordering is planned start (approval) date descending; order_by and ascending change it. Multi-country projects are returned when any of their countries matches; country_codes may list several ISO codes (Z1 = multinational). Money fields are in Units of Account (XDR). Codes are the site's own: sector_code A-K (AfDB sector letter), theme_code 1-5 (High-5), status_code 1 Approved, 2 Ongoing/implementation, 3 Completed, 5 Cancelled, region_code RDGC/RDGE/RDGN/RDGS/RDGW. An empty projects array is a valid result for a page past the end or a filter with no matches.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| year | string | Comma-separated 4-digit approval (planned start) years, e.g. 2010,2011. |
| theme | string | Comma-separated High-5 theme codes. |
| region | string | Comma-separated AfDB regional hub codes. |
| sector | string | Comma-separated AfDB sector letters. |
| status | string | Comma-separated project status codes. |
| country | string | Comma-separated ISO 3166-1 alpha-2 country codes (e.g. AO,SN). Z1 selects multinational projects. |
| adfcycle | string | Comma-separated African Development Fund cycle codes of the form ADF-<n>, e.g. ADF-10 (ADF-1 through ADF-16 observed). |
| order_by | string | Field to sort by. |
| per_page | integer | Projects per page; values above 100 are clamped to 100. |
| ascending | boolean | Sort direction; false = descending. |
| sovereign | boolean | true = sovereign operations only, false = non-sovereign (private sector) only. Omitted = both. |
{
"type": "object",
"fields": {
"page": "integer, the page returned",
"currency": "currency of money fields (XDR = Units of Account)",
"has_more": "boolean, true when this page was full and another page may exist",
"per_page": "integer, effective page size after clamping",
"projects": "array of project summary records (iati_identifier is the key accepted by get_project; project_code is the AfDB P-code; money fields in XDR)"
},
"sample": {
"data": {
"page": 1,
"currency": "XDR",
"has_more": false,
"per_page": 5,
"projects": [
{
"title": "Angola - Institutional Capacity Building for Poverty Reduction Project",
"country": "Angola",
"adf_cycle": "ADF-12",
"sovereign": true,
"green_bond": false,
"theme_code": "5",
"afdb_window": "ADB",
"region_code": "RDGS",
"sector_code": "I",
"social_bond": false,
"status_code": "3",
"project_code": "P-AO-IE0-001",
"country_codes": "AO",
"gender_marker": null,
"actual_end_date": "2016-06-30",
"dac_sector_code": "16050",
"iati_identifier": "46002-P-AO-IE0-001",
"dac_sector_group": "160",
"planned_end_date": "2016-06-30",
"actual_start_date": "2011-04-01",
"recipient_country": "AO",
"total_commitments": 5170000,
"planned_start_date": "2011-02-23",
"total_disbursements": 4926660.78,
"environmental_category": "3",
"climate_change_category": null,
"total_commitments_nongov": 4920000
}
]
},
"status": "success"
}
}About the AfDB API
Project Listings and Filtering
The list_projects endpoint returns one page of AfDB project summaries. Callers control pagination through page (1-based) and per_page, and can narrow results using comma-separated values for country (ISO 3166-1 alpha-2, with Z1 for multinational projects), sector, region, status, theme (High-5 codes), year (approval year), and adfcycle (e.g. ADF-10). Each response includes a has_more boolean so callers know when to fetch the next page. All money fields are denominated in XDR (AfDB Units of Account) and the currency field confirms this.
Title Search
The search_projects endpoint accepts a query string and returns every project whose title matches the keyword — the full result set in one response, no paging required. The response includes a total count and an array of project summary records in the same shape as list_projects, making it straightforward to feed matching iati_identifier values into get_project.
Full Project Detail
The get_project endpoint accepts an iati_identifier (e.g. 46002-P-UG-E00) and returns the complete project record. Key fields include descriptions (narrative blocks typed as general, objectives, and target population), transactions (financing events with date, value, provider and receiver organisations), locations (with latitude, longitude, admin1, and GeoNames ID), documents (with category, language, URL, and format), organisations (with IATI role and type codes), total_commitments, project_code (AfDB P-code), and status_code (1 Approved, 2 Ongoing, 3 Completed, 5 Cancelled).
Coverage and Source
The API mirrors the data published on MapAfrica, the AfDB Group's public project transparency portal. Coverage spans AfDB, ADF, and NTF-financed operations across Africa. Projects without location data return an empty locations array; similarly, documents may be empty for older or less-documented entries.
The AfDB API is a managed, monitored endpoint for mapafrica.afdb.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mapafrica.afdb.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official mapafrica.afdb.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Map active AfDB infrastructure projects by country using
locationslatitude/longitude fields fromget_project. - Track financing commitments across ADF cycles by filtering
list_projectswithadfcycleand aggregatingtotal_commitments. - Build a sector-specific dashboard by filtering
list_projectsonsectorand displaying project status fromstatus_code. - Search AfDB projects by keyword with
search_projectsto find all projects related to a specific topic like 'water' or 'transport'. - Retrieve project documents and their download URLs via the
documentsarray inget_projectfor compliance or research workflows. - Identify multinational projects by passing
Z1as thecountrycode inlist_projectsto isolate cross-border operations. - Analyse participating organisations and their roles using the
organisationsarray fromget_projectto map AfDB partnerships.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the African Development Bank Group provide an official developer API for MapAfrica?+
What does `get_project` return that `list_projects` does not?+
get_project returns fields not present in the summary: descriptions (narrative text blocks for general description, objectives, and target population), transactions (individual financing events with dates and counterparty organisations), locations (with coordinates and GeoNames IDs), documents (file metadata and URLs), and organisations with IATI role codes. list_projects returns summary-level fields sufficient for browsing and filtering but omits all of these detail fields.How does pagination work in `list_projects`, and how do I know there are more results?+
page (1-based) and per_page parameters. The response includes a has_more boolean: when true, the current page was full and at least one more page may exist. When false, you have reached the last page. The search_projects endpoint has no pagination — it returns all matching projects in a single response.Does the API expose project budget disbursement schedules or performance ratings?+
Are there projects outside Africa or non-AfDB-financed projects included?+
Z1 country code). Projects from other multilateral development banks or bilateral donors are not included. You can fork this API on Parse and revise it to point at other IATI-compliant data sources to broaden coverage.