Indian Data Project
App · Research & Academia · 9 actions
Read Indian government statistics from the Indian Data Project, an open portal that gathers official figures into eighty datasets across eleven domains: the Union Budget, the Economic Survey, RBI and monetary policy, state finances, the Census, education, employment, healthcare, environment, elections, and crime and safety. Rank the states on any indicator to find where literacy is lowest or crime highest, read a national trend year by year, pull the headline figures for a domain, look up what a term means in plain language, or fetch any dataset whole. Rupee totals come back in a readable form as well as raw, because they are quoted in crore. Nothing here needs an account, a key or a sign-up.
Actions
| Action | What it does |
|---|---|
| Check the portal status | Check the portal is reachable and report which year it is publishing under. |
| Compare states | Rank the states on one indicator: which has the highest crime rate, the lowest literacy, the most forest cover. |
| Get a dataset | Fetch any one of the portal's eighty datasets whole, exactly as it is published. |
| Get a domain summary | Read the headline figures for one of the eleven domains: the numbers its dashboard leads with. |
| Get a trend | Read an indicator's history as a year-by-year series, with the first and latest values, the change between them, and the peak and trough. |
| List datasets | List what the portal publishes: eighty datasets across eleven domains, from the Union Budget to crime statistics, each with the government source behind it. |
| List indicators | List the indicators a domain tracks, with what each measures and in what unit. |
| Look up a term | Read a domain's glossary, or one term in particular. |
| Search questions and answers | Search the portal's set of plain-language questions about this data, each with a short answer and a link to the section it came from. |
Check the portal status
Check the portal is reachable and report which year it is publishing under. The year is part of every file path, so a workflow that stores results is worth stamping with it, and a change here is the signal that the paths have moved. Also returns when the data was last refreshed and the licence the data carries.
Inputs
None.
Outputs
base_urltext- The portal that answered
data_yeartext- The year the data itself reports
datasetsnumber- How many datasets in all
domainsnumber- How many domains it publishes
last_updatedtext- When the data was last refreshed
licencetext- What licence the code and the data carry
path_yeartext- The year folder the file paths use
reachabletrue/false- True when the portal answered
Example output
{
"base_url": "https://indiandataproject.org",
"data_year": "2025-26",
"datasets": 79,
"domains": 11,
"last_updated": "2026-06-02",
"licence": "Portal code is AGPL-3.0. The underlying data keeps its original government licence, usually GODL or public domain.",
"path_year": "2025-26",
"reachable": true
}Compare states
Rank the states on one indicator: which has the highest crime rate, the lowest literacy, the most forest cover. This is the question most of this data exists to answer, and it works across eight of the eleven domains. Every state comes back with its rank and value, plus the national average and the two ends of the range. Name a state to get its own standing alongside. Asking a domain that publishes national figures instead gets an error saying so and pointing at 'Get a trend'.
Inputs
- Domain
domaintextRequired - Which body of data to rank on. Only these eight break down by state; the Union Budget, Economic Survey and RBI domains publish national figures, so use 'Get a trend' for those.One of:
states(State Finances),census(Census & Demographics),education,employment,healthcare,environment,elections,crime(Crime & Safety). - Indicator
indicatortextRequired - Which indicator to read, by its id or its name. 'List indicators' returns every one a domain has, and a name that is close enough matches, so 'literacy' finds 'Literacy Rate (Total)'.
- Order
ordertext - Whether to put the highest value first or the lowest. Defaults to highest. Which end is 'best' depends on the indicator: the highest literacy is good, the highest crime rate is not.One of:
highest(Highest first),lowest(Lowest first). Default:highest. - How many states
sizenumber - How many to return, from 1 to 50. Leave blank for all of them. Set it to 5 for a top five.From 1 to 50.
- Also pick out this state
statetext - Return one named state's rank and value alongside the list, by name or by two-letter code. Useful for 'where does Kerala stand' without pulling every state.
Outputs
attributionobject- Who to credit. The portal asks that the original government source be credited rather than the portal itself, with a link back to it
averagenumber- The mean across every state covered
countnumber- How many states came back
domaintext- The domain that was read
highestobject- The state with the highest value, whichever way the list was sorted
indicatorobject- Which indicator the figures belong to
lowestobject- The state with the lowest value, whichever way the list was sorted
ordertext- Which way the list was sorted
stateobject- The named state's own standing, when one was asked for
statesliststates_rankednumber- How many the indicator covers in all
Example output
{
"attribution": {
"note": "Open data assembled from Indian government sources. Credit the source above and link back to indiandataproject.org.",
"portal": "Indian Data Project",
"portal_url": "https://indiandataproject.org/open-data",
"source": "NCRB Crime in India 2023"
},
"average": 425.2833,
"count": 5,
"domain": "crime",
"highest": {
"id": "KL",
"name": "Kerala",
"rank": 1,
"value": 1631.2
},
"indicator": {
"category": "overall",
"id": "crime_rate",
"name": "Crime Rate (per lakh population)",
"unit": "per lakh"
},
"lowest": {
"id": "NL",
"name": "Nagaland",
"rank": 30,
"value": 84.9
},
"order": "highest",
"states": [
{
"id": "KL",
"name": "Kerala",
"rank": 1,
"value": 1631.2
},
{
"id": "DL",
"name": "Delhi",
"rank": 2,
"value": 1602.0
},
{
"id": "GJ",
"name": "Gujarat",
"rank": 3,
"value": 806.3
}
],
"states_ranked": 30
}Get a dataset
Fetch any one of the portal's eighty datasets whole, exactly as it is published. The escape hatch for everything the shaped actions do not cover: the budget's Sankey flows and treemaps, ministry-level allocations, the justice pipeline, candidate profiles. Run 'List datasets' to see what there is.
Inputs
- Domain
domaintextRequired - Which body of data to read. The portal groups everything into eleven domains, from the Union Budget to Crime and Safety.One of:
budget(Union Budget),economy(Economic Survey),rbi(RBI & Monetary Policy),states(State Finances),census(Census & Demographics),education,employment,healthcare,environment,elections,crime(Crime & Safety). - Dataset
datasettextRequired - Which dataset in that domain, for example 'expenditure' or 'women-safety'. 'List datasets' returns every one, and a path or filename pasted off the portal works too.
Outputs
attributionobject- Who to credit. The portal asks that the original government source be credited rather than the portal itself, with a link back to it
dataobject- The file's contents, untouched
datasettext- Which dataset was read
descriptiontext- What it holds
domaintext- The domain it came from
domain_labeltext- That domain's readable name
urltext- Direct link to the JSON file
yeartext- Which year it is for
Example output
{
"attribution": {
"note": "Open data assembled from Indian government sources. Credit the source above and link back to indiandataproject.org.",
"portal": "Indian Data Project",
"portal_url": "https://indiandataproject.org/open-data",
"source": "CWC Reservoir Bulletin + CGWB Assessment 2023"
},
"data": {
"groundwaterStage": [
{
"id": "DL",
"name": "Delhi",
"stage": "Over-Exploited",
"stagePct": 137
},
{
"id": "RJ",
"name": "Rajasthan",
"stage": "Over-Exploited",
"stagePct": 140
},
{
"id": "HR",
"name": "Haryana",
"stage": "Over-Exploited",
"stagePct": 137
}
],
"reservoirStorage": [
{
"capacityBCM": 19.66,
"region": "North",
"reservoirCount": 15,
"storagePct": 47
},
{
"capacityBCM": 21.38,
"region": "East",
"reservoirCount": 23,
"storagePct": 39
},
{
"capacityBCM": 37.13,
"region": "West",
"reservoirCount": 36,
"storagePct": 51
}
],
"source": "CWC Reservoir Bulletin + CGWB Assessment 2023",
"year": "2025-26"
},
"dataset": "water",
"description": "Water security: reservoir storage and groundwater stress.",
"domain": "environment",
"domain_label": "Environment",
"url": "https://indiandataproject.org/data/environment/2025-26/water.json",
"year": "2025-26"
}Get a domain summary
Read the headline figures for one of the eleven domains: the numbers its dashboard leads with. The budget's total spending and fiscal deficit, the economy's growth and inflation, crime's totals and conviction rate. Rupee figures are quoted in crore, which reads as a meaningless run of digits, so a readable form is returned alongside: 5065345 comes back also as 50.65 lakh crore.
Inputs
- Domain
domaintextRequired - Which body of data to read. The portal groups everything into eleven domains, from the Union Budget to Crime and Safety.One of:
budget(Union Budget),economy(Economic Survey),rbi(RBI & Monetary Policy),states(State Finances),census(Census & Demographics),education,employment,healthcare,environment,elections,crime(Crime & Safety).
Outputs
attributionobject- Who to credit. The portal asks that the original government source be credited rather than the portal itself, with a link back to it
domaintext- The domain that was read
domain_labeltext- Its readable name
figuresobject- The headline numbers, exactly as the portal names them
readableobject- Rupee totals rendered the way they are normally said, in lakh crore, keyed by the same field name
urltext- Direct link to the JSON file
yeartext- Which year the figures are for
Example output
{
"attribution": {
"note": "Open data assembled from Indian government sources. Credit the source above and link back to indiandataproject.org.",
"portal": "Indian Data Project",
"portal_url": "https://indiandataproject.org/open-data",
"source": "https://openbudgetsindia.org/"
},
"domain": "budget",
"domain_label": "Union Budget",
"figures": {
"capitalReceipts": 76000,
"fiscalDeficit": 1568936,
"fiscalDeficitPercentGDP": 4.4,
"gdp": 35698000,
"lastUpdated": "2026-06-02",
"perCapitaDailyExpenditure": 95.71,
"perCapitaExpenditure": 34933.0,
"population": 1450000000,
"revenueReceipts": 3420409,
"source": "https://openbudgetsindia.org/",
"totalExpenditure": 5065345,
"totalReceipts": 3496409
},
"readable": {
"capitalReceipts": "\u20b976,000.00 crore",
"fiscalDeficit": "\u20b915.69 lakh crore",
"fiscalDeficitPercentGDP": "\u20b94.40 crore",
"gdp": "\u20b9356.98 lakh crore",
"perCapitaDailyExpenditure": "\u20b995.71 crore",
"perCapitaExpenditure": "\u20b934,933.00 crore",
"revenueReceipts": "\u20b934.20 lakh crore",
"totalExpenditure": "\u20b950.65 lakh crore",
"totalReceipts": "\u20b934.96 lakh crore"
},
"url": "https://indiandataproject.org/data/budget/2025-26/summary.json",
"year": "2025-26"
}Get a trend
Read an indicator's history as a year-by-year series, with the first and latest values, the change between them, and the peak and trough. Use it for 'how has GDP growth moved' or 'what has inflation done since 2020'. The Economic Survey and RBI domains publish their indicators this way; the other eight break down by state instead, and asking one of those gets an error pointing at 'Compare states'.
Inputs
- Domain
domaintextRequired - Which body of data to read. Only these two publish year-by-year series; the other eight break down by state, so use 'Compare states' for those.One of:
economy(Economic Survey),rbi(RBI & Monetary Policy). - Indicator
indicatortextRequired - Which indicator to read, by its id or its name. 'List indicators' returns every one a domain has, and a name that is close enough matches, so 'literacy' finds 'Literacy Rate (Total)'.
- From this year
sincetext - Only return points from this financial year onwards, written the way the data writes them. Leave blank for the whole history.
Outputs
attributionobject- Who to credit. The portal asks that the original government source be credited rather than the portal itself, with a link back to it
changenumber- Latest value minus the first, in the indicator's own unit
countnumber- How many points came back
domaintext- The domain that was read
firstobject- The earliest point returned
highestobject- The peak across the points returned
indicatorobject- Which indicator the figures belong to
latestobject- The most recent point returned
lowestobject- The trough across the points returned
pointslist
Example output
{
"attribution": {
"note": "Open data assembled from Indian government sources. Credit the source above and link back to indiandataproject.org.",
"portal": "Indian Data Project",
"portal_url": "https://indiandataproject.org/open-data",
"source": "MOSPI NAS API (api.mospi.gov.in/api/nas/getNASData) + Economic Survey 2025-26"
},
"change": 1.9,
"count": 14,
"domain": "economy",
"first": {
"value": 5.5,
"year": "2012-13"
},
"highest": {
"value": 9.7,
"year": "2021-22"
},
"indicator": {
"category": "growth",
"id": "gdp-growth",
"name": "Real GDP Growth Rate",
"source": "MOSPI NAS API (api.mospi.gov.in/api/nas/getNASData) + Economic Survey 2025-26",
"unit": "percent"
},
"latest": {
"value": 7.4,
"year": "2025-26"
},
"lowest": {
"value": -5.8,
"year": "2020-21"
},
"points": [
{
"value": 5.5,
"year": "2012-13"
},
{
"value": 6.5,
"year": "2013-14"
},
{
"value": 7.2,
"year": "2014-15"
}
]
}List datasets
List what the portal publishes: eighty datasets across eleven domains, from the Union Budget to crime statistics, each with the government source behind it. Narrow by domain or search the descriptions. The catalogue is held in the integration rather than fetched, so this costs no request and is the cheapest way to find out what is available before asking for it.
Inputs
- Domain
domaintext - Only list datasets in this domain. Leave blank for all of them.One of:
budget(Union Budget),economy(Economic Survey),rbi(RBI & Monetary Policy),states(State Finances),census(Census & Demographics),education,employment,healthcare,environment,elections,crime(Crime & Safety). - Search
searchtext - Only list datasets whose name or description mentions this. Leave blank for all of them.
Outputs
countnumber- How many datasets matched
datasetslistdomainslist- Domains represented in the result
total_availablenumber- How many the portal publishes in all
Example output
{
"count": 9,
"datasets": [
{
"dataset": "summary",
"description": "Crime snapshot: total crimes, crime rate, road deaths, conviction rate and police ratio.",
"domain": "crime",
"domain_label": "Crime & Safety",
"has_state_breakdown": true,
"has_time_series": false,
"source": "NCRB + MoRTH + BPRD",
"url": "https://indiandataproject.org/data/crime/2025-26/summary.json"
},
{
"dataset": "overview",
"description": "National crime trend, composition by type, state rates and homicide rate.",
"domain": "crime",
"domain_label": "Crime & Safety",
"has_state_breakdown": true,
"has_time_series": false,
"source": "NCRB + MoRTH + BPRD",
"url": "https://indiandataproject.org/data/crime/2025-26/overview.json"
},
{
"dataset": "women-safety",
"description": "Crimes against women: national trend, types, and state rates per lakh women.",
"domain": "crime",
"domain_label": "Crime & Safety",
"has_state_breakdown": true,
"has_time_series": false,
"source": "NCRB + MoRTH + BPRD",
"url": "https://indiandataproject.org/data/crime/2025-26/women-safety.json"
}
],
"domains": [
"crime"
],
"total_available": 79
}List indicators
List the indicators a domain tracks, with what each measures and in what unit. An indicator carries either a national year-by-year series or a state-by-state breakdown, never both, and which one depends on the domain. The response says which each has, so the next step asks the right question: 'Compare states' or 'Get a trend'.
Inputs
- Domain
domaintextRequired - Which body of data to read. The portal groups everything into eleven domains, from the Union Budget to Crime and Safety.One of:
budget(Union Budget),economy(Economic Survey),rbi(RBI & Monetary Policy),states(State Finances),census(Census & Demographics),education,employment,healthcare,environment,elections,crime(Crime & Safety). - Category
categorytext - Only list indicators in this category, for example 'growth' or 'women-safety'. Leave blank for all. The categories a domain has come back with the result.
Outputs
attributionobject- Who to credit. The portal asks that the original government source be credited rather than the portal itself, with a link back to it
categorieslist- Every category this domain uses
countnumber- How many indicators matched
domaintext- The domain that was read
indicatorslist
Example output
{
"attribution": {
"note": "Open data assembled from Indian government sources. Credit the source above and link back to indiandataproject.org.",
"portal": "Indian Data Project",
"portal_url": "https://indiandataproject.org/open-data",
"source": "NCRB + MoRTH + BPRD"
},
"categories": [
"infrastructure",
"overall",
"road-safety"
],
"count": 5,
"domain": "crime",
"domain_label": "Crime & Safety",
"indicators": [
{
"category": "overall",
"has_state_breakdown": true,
"has_time_series": false,
"id": "crime_rate",
"latest_value": null,
"latest_year": null,
"name": "Crime Rate (per lakh population)",
"points": 30,
"source": "NCRB Crime in India 2023",
"unit": "per lakh"
},
{
"category": "women-safety",
"has_state_breakdown": true,
"has_time_series": false,
"id": "women_crime_rate",
"latest_value": null,
"latest_year": null,
"name": "Crimes Against Women (per lakh women)",
"points": 29,
"source": "NCRB Crime in India 2023",
"unit": "per lakh"
},
{
"category": "road-safety",
"has_state_breakdown": true,
"has_time_series": false,
"id": "road_fatality_rate",
"latest_value": null,
"latest_year": null,
"name": "Road Accident Fatality Rate (per lakh)",
"points": 29,
"source": "MoRTH Road Accidents in India 2023",
"unit": "per lakh"
}
]
}Look up a term
Read a domain's glossary, or one term in particular. Every domain ships definitions written in plain language, each with a fuller explanation, an example of the term in use and the related terms worth reading next. Good for putting a definition beside a figure rather than leaving somebody to work out what a fiscal deficit is.
Inputs
- Domain
domaintextRequired - Which body of data to read. The portal groups everything into eleven domains, from the Union Budget to Crime and Safety.One of:
budget(Union Budget),economy(Economic Survey),rbi(RBI & Monetary Policy),states(State Finances),census(Census & Demographics),education,employment,healthcare,environment,elections,crime(Crime & Safety). - Term
termtext - Look up one term rather than the whole glossary. A partial name matches, so 'deficit' finds 'Fiscal Deficit'. Leave blank for every term the domain defines.
Outputs
attributionobject- Who to credit. The portal asks that the original government source be credited rather than the portal itself, with a link back to it
countnumber- How many terms came back
domaintext- The domain that was read
termslist
Example output
{
"attribution": {
"note": "Open data assembled from Indian government sources. Credit the source above and link back to indiandataproject.org.",
"portal": "Indian Data Project",
"portal_url": "https://indiandataproject.org/open-data",
"source": "Open Budgets India"
},
"count": 1,
"domain": "budget",
"terms": [
{
"detail": "The difference between total expenditure and total receipts (excluding borrowings). When the government spends more than it collects in taxes and other income, it borrows the rest....",
"id": "fiscal-deficit",
"in_context": "\u20b915,68,936 Cr (4.4% of GDP) in 2025-26",
"related_terms": [
"revenue-deficit",
"gdp",
"frbm"
],
"simple": "How much the government borrows because it spends more than it earns.",
"term": "Fiscal Deficit"
}
]
}Search questions and answers
Search the portal's set of plain-language questions about this data, each with a short answer and a link to the section it came from. There are a hundred and sixty of them across all eleven domains: how much the government spends, why young people cannot find jobs, which state is safest. Useful for an explainer, for grounding a chatbot, or for finding which dataset answers a question before going to fetch it.
Inputs
- Search
searchtext - Only return questions or answers mentioning this. Leave blank for all of them.
- Domain
domaintext - Only return questions about this domain. Leave blank for all.One of:
budget(Union Budget),economy(Economic Survey),rbi(RBI & Monetary Policy),states(State Finances),census(Census & Demographics),education,employment,healthcare,environment,elections,crime(Crime & Safety). - How many to return
sizenumber - How many questions to return, from 1 to 200. Defaults to 25.From 1 to 200. Default:
25.
Outputs
attributionobject- Who to credit. The portal asks that the original government source be credited rather than the portal itself, with a link back to it
countnumber- How many came back
questionslisttotal_availablenumber- How many the portal publishes in all
total_matchednumber- How many matched before the limit
Example output
{
"attribution": {
"note": "Open data assembled from Indian government sources. Credit the source above and link back to indiandataproject.org.",
"portal": "Indian Data Project",
"portal_url": "https://indiandataproject.org/open-data",
"source": "Indian Data Project"
},
"count": 3,
"questions": [
{
"answer": "Overall unemployment has declined, but youth unemployment remains stubbornly high.",
"domain": "employment",
"id": "employment-unemployment",
"question": "What is India's unemployment rate?",
"section_id": "participation",
"url": "https://indiandataproject.org/employment#participation"
},
{
"answer": "Youth unemployment is far higher than the national average \u2014 education-job mismatch is key.",
"domain": "employment",
"id": "employment-youth-jobs",
"question": "Why can't young people find jobs?",
"section_id": "youth",
"url": "https://indiandataproject.org/employment#youth"
},
{
"answer": "Rural areas have higher LFPR but more informal work; urban areas face open unemployment.",
"domain": "employment",
"id": "employment-urban-rural",
"question": "Is there a difference in urban vs rural employment?",
"section_id": "rural-urban",
"url": "https://indiandataproject.org/employment#rural-urban"
}
],
"total_available": 161,
"total_matched": 4
}