NDAP — National Data and Analytics Platform¶
NITI Aayog's curated platform — 600+ indicators for every district, cleaned and ready to analyse.
What Makes NDAP Special?¶
NDAP is not a raw data source — it is a curated, cleaned, and harmonised collection of district-level indicators from across the government. Think of it as a pre-cleaned analytical database.
Key advantages: - All data is at district level — consistent across datasets - Data is cleaned — no formatting inconsistencies - Covers 600+ indicators from Census, HMIS, UDISE, NFHS, MGNREGA, and more - Supports trend analysis (multiple years per indicator) - Has an API for programmatic access
What Categories Are Available?¶
| Category | Example Indicators |
|---|---|
| Health | IMR, MMR, institutional delivery, stunting |
| Education | Literacy, dropout, PTR, enrollment |
| Agriculture | Irrigation coverage, crop yield |
| Economy | Per capita income, bank branches |
| Infrastructure | Road density, electricity, water |
| Gender | Female literacy, sex ratio, FLFPR |
| SDG Indicators | 100+ SDG-mapped district indicators |
| Aspirational Districts | Special tracking for 112 backward districts |
How to Access¶
Browse Without Login 🟢¶
- Go to ndap.niti.gov.in
- Browse the "Data Catalogue" — no login needed
- View charts and trends for any district + indicator combination
- Compare districts side by side
Download with Login 🟡¶
- Register (email + mobile)
- After login: click "Download" on any dataset
- Download as CSV — rows = districts, columns = indicator + year
API Access 🔵¶
import requests
import pandas as pd
# NDAP API (requires login token)
# Get token from your NDAP profile page after login
API_TOKEN = "your-token-here"
BASE_URL = "https://ndap.niti.gov.in/api/v1"
# Example: Get IMR data for all districts
headers = {"Authorization": f"Bearer {API_TOKEN}"}
params = {
"indicator_id": "NFHS5_IMR", # Infant Mortality Rate from NFHS-5
"year": 2021,
"level": "district"
}
response = requests.get(f"{BASE_URL}/data", headers=headers, params=params)
data = response.json()
df = pd.DataFrame(data['results'])
print(df.head())
# df has: district_name, state_name, value, year
# Save to CSV
df.to_csv("ndap_imr_districts.csv", index=False)
✏️ Practice Exercise¶
Exercise 4.5 — Find the Bottom 10 Districts on Health
Goal: Use NDAP to identify India's worst-performing districts on SDG-3 (Health & Wellbeing).
- Go to ndap.niti.gov.in
- Click "SDG Dashboard" → "SDG 3: Good Health and Well-being"
- View district composite score for SDG-3
- Sort ascending to find the bottom 10 districts
Questions: - [ ] Which states do the bottom 10 districts belong to? - [ ] Are they geographically clustered (e.g., all in one region)? - [ ] Compare your own district to the national average on SDG-3 score - [ ] What specific indicator drags down the score in the worst districts?
NDAP is also great for the Aspirational Districts Programme — check if your district is one of the 112 aspirational districts and see how it has improved.
Next Dataset: DBT — Direct Benefit Transfer →