ADB APIadb.org ↗
Search and retrieve ADB project listings and full project details including status, financing, country, and sector data via two simple endpoints.
What is the ADB API?
The ADB API exposes 2 endpoints for accessing Asian Development Bank project data across dozens of countries and sectors. get_projects returns paginated listings filterable by keyword, country, and status, while get_project_details delivers full project records including financing details, responsible officers, approval dates, and structured key-value fields from each project page.
curl -X GET 'https://api.parse.bot/scraper/ead51173-e3c5-4609-ba1a-bdd3222f619c/get_projects?page=0&query=infrastructure&status=Active&country=India&fetch_descriptions=True' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace adb-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""ADB Projects API — search development projects and drill into details."""
from parse_apis.adb_projects_api import ADB, Status, ProjectNotFound
client = ADB()
# Search for active projects in India with descriptions included.
for summary in client.projectsummaries.search(
query="infrastructure", status=Status.ACTIVE, country="India",
fetch_descriptions=True, limit=5
):
print(summary.title, summary.status, summary.approval_year)
# Drill into the first result's full details via the navigation op.
first = client.projectsummaries.search(status=Status.PROPOSED, limit=1).first()
if first:
project = first.details()
print(project.title, project.country, project.category)
print(project.raw_details.get("Responsible ADB Officer", ""))
# Fetch a project directly by ID and handle not-found gracefully.
try:
detail = client.projects.get(project_id="59364-001")
print(detail.title, detail.status, detail.description)
except ProjectNotFound as exc:
print(f"Project {exc.project_id} not found")
print("exercised: projectsummaries.search / summary.details / projects.get / ProjectNotFound")
Search and list projects from the Asian Development Bank with optional filtering by keyword, country, and status. Returns paginated results with 15 projects per page. Results are sorted by board approval date descending. Pagination is zero-indexed. When no filters are applied, returns all projects.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (0-indexed, 15 results per page) |
| query | string | Search terms to filter projects by keyword |
| status | string | Project status filter. |
| country | string | Country or economy name for filtering projects (e.g., India, Thailand, Indonesia, Bangladesh, Nepal, Philippines, Viet Nam, Pakistan) |
| fetch_descriptions | boolean | Whether to include project body descriptions in results (available from the search index without extra requests) |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"has_more": "boolean, whether more pages are available",
"projects": "array of project summary objects with title, url, status, date, project_id, country, category, description, approval_year",
"total_results": "integer, total number of matching projects"
}
}About the ADB API
Searching and Filtering ADB Projects
The get_projects endpoint returns up to 15 projects per page (0-indexed pagination) and accepts four optional filters: query for keyword search, country to narrow by economy (e.g., India, Bangladesh, Nepal), status to filter by lifecycle stage (Active, Approved, Archived, Closed, Dropped / Terminated, or Proposed), and fetch_descriptions to include body text from the search index. Each result in the projects array includes title, url, status, date, project_id, country, category, description, and approval_year. The total_results field and has_more boolean make it straightforward to paginate through large result sets.
Retrieving Full Project Records
The get_project_details endpoint accepts either a project_id (e.g., 59364-001) or a full url pointing to a project's main page. The response surfaces structured fields — title, status, country, category, description, date, and project_id — plus a raw_details object that contains all additional key-value pairs from the project page, which can include financing amounts, executing agencies, project officers, and sector classifications depending on what ADB has published for that project.
Coverage and Data Shape
ADB publishes projects spanning sovereign and non-sovereign operations across Asia and the Pacific. The status vocabulary (Active, Approved, Archived, Closed, Dropped / Terminated, Proposed) maps directly to ADB's own project lifecycle classifications. The category field reflects ADB's sector and subsector taxonomy. Because raw_details is a flexible key-value object, the specific keys present will vary by project — older or simpler records may have fewer fields than current flagship operations.
The ADB API is a managed, monitored endpoint for adb.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when adb.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 adb.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?+
- Build a dashboard tracking all Active ADB infrastructure projects in Southeast Asia by filtering on
statusandcountry. - Aggregate approval year data across filtered project sets to analyze ADB lending trends by sector or region.
- Pull
raw_detailsfromget_project_detailsto extract financing amounts and executing agencies for due diligence research. - Monitor newly Proposed projects in a specific country by polling
get_projectswithstatus=Proposedand a country filter. - Compile a dataset of closed projects in Bangladesh to evaluate historical ADB engagement in a specific economy.
- Cross-reference
project_idvalues from search results with full detail records to enrich a database of development finance initiatives. - Extract responsible officer information from
raw_detailsto map ADB staff assignments across sectors.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ADB have an official developer API?+
What does the `raw_details` field in `get_project_details` actually contain?+
raw_details is an object of all key-value pairs found on the project page. Its contents vary by project but commonly include fields like financing amounts, executing and implementing agencies, sector classifications, and project officers. There is no fixed schema — keys present depend on what ADB has published for that specific record.How does pagination work in `get_projects`, and what if I need more than 15 results?+
has_more boolean and a total_results integer. To retrieve additional pages, increment the page parameter and continue until has_more is false.Does the API return procurement notices, tenders, or consultant opportunities linked to ADB projects?+
raw_details. Procurement and consulting opportunity data published elsewhere on ADB's site is not included. You can fork this API on Parse and revise it to add an endpoint targeting those sections.Can I filter projects by sector or subsector directly?+
sector filter parameter in get_projects. The category field is returned in results and reflects ADB's sector taxonomy, but filtering by it requires using the query parameter with a keyword. You can fork this API on Parse and revise it to expose a dedicated sector filter if your use case requires it.