MoSPI
App · Research & Academia · 8 actions
Read India's official statistics straight from the Ministry of Statistics and Programme Implementation, the department that compiles them. Two series are published through the platform: the Consumer Price Index, monthly since 2013 and broken down by state, spending group and rural or urban sector, which is where the headline inflation figure comes from; and the Index of Industrial Production, covering mining, manufacturing and electricity and the use-based split into capital, intermediate and consumer goods. Rank the states on inflation, follow a series month by month, or pull the raw rows. Filters take plain names and are translated into the codes the platform needs. No account or key required.
Actions
| Action | What it does |
|---|---|
| Call an endpoint directly | Call any MoSPI endpoint with parameters of your own. |
| Check the platform status | Check the platform is answering and report how current each series is. |
| Compare states on inflation | Rank the states by inflation for one month: where prices are rising fastest and where they are not. |
| Follow an industry trend | Follow industrial output month by month for one category, with the average growth and how far the index moved. |
| Follow an inflation trend | Follow one price series month by month, with the peak, the trough, the average and the change in the index across the period. |
| Get consumer price index | Read India's Consumer Price Index: the index level and the year-on-year inflation rate, by state, spending group and rural or urban sector, monthly back to 2013. |
| Get industrial production index | Read the Index of Industrial Production: output and its year-on-year growth for mining, manufacturing and electricity, and for the use-based split into capital, intermediate, infrastructure and consumer goods. |
| List the codes | List the states, spending groups, sectors, industry categories and months the platform knows, with the code it files each under. |
Call an endpoint directly
Call any MoSPI endpoint with parameters of your own. The platform also exposes the Annual Survey of Industries, the Periodic Labour Force Survey and National Accounts Statistics, but those answer 'Please check the input parameters passed' to every combination tried here and their parameters are published nowhere, so they have no actions of their own. This is how to reach them if you learn what they want, and how to reach anything the ministry adds later.
Inputs
- Path
pathtextRequired - The endpoint to call. They all begin with /api/, for example /api/cpi/getCPIIndex or /api/asi/getasiData.
- Query parameters
parametersobject - The query parameters as a JSON object, passed through exactly as given. Names are matched case sensitively and an unrecognised one is ignored rather than refused, so check 'total_records' against an unfiltered call to see whether a filter actually took effect.
Outputs
countnumber- How many rows came back
has_moretrue/false- Whether another page follows
pagenumber- Which page this is
page_sizenumber- How many rows per page
parameters_sentobject- Exactly what was sent
pathtext- The endpoint that was called
recordslist- The rows, untouched
sourcetext- The ministry that publishes the figures
total_pagesnumber- How many pages there are
total_recordsnumber- How many match the filters in all, across every page
Example output
{
"count": 2,
"has_more": true,
"page": 1,
"page_size": 2,
"parameters_sent": {
"limit": 2,
"year": 2023
},
"path": "/api/cpi/getCPIIndex",
"records": [
{
"baseyear": "2012",
"group": "Consumer Food Price",
"index": "188.4",
"inflation": "9.03",
"month": "December",
"sector": "Rural",
"state": "All India",
"status": "F",
"subgroup": "Consumer Food Price-Overall",
"year": 2023
},
{
"baseyear": "2012",
"group": "Miscellaneous",
"index": "182.5",
"inflation": "3.46",
"month": "December",
"sector": "Rural",
"state": "All India",
"status": "F",
"subgroup": "Household Goods and Services",
"year": 2023
}
],
"source": "Ministry of Statistics and Programme Implementation (MoSPI)",
"total_pages": 12942,
"total_records": 25884
}Check the platform status
Check the platform is answering and report how current each series is. Official statistics are published with a lag and revised afterwards, so the most recent month is worth knowing before a workflow reports a figure as the latest, and a provisional figure is worth marking as one. Also states plainly that no account is needed, which the published manual still says otherwise.
Inputs
None.
Outputs
authenticationtext- What credentials are needed, which is none
base_urltext- The platform that answered
reachabletrue/false- True when the platform answered
seriesobject- Each series with how many records it holds, its most recent period, and whether that figure is still provisional
sourcetext- The ministry that publishes the figures
Example output
{
"authentication": "None. The published CPI manual describes a sign-up and a fifteen minute token, but that platform has been replaced and the current endpoints are open.",
"base_url": "https://api.mospi.gov.in",
"reachable": true,
"series": {
"cpi": {
"latest_is_provisional": false,
"latest_period": "December 2025",
"name": "Consumer Price Index",
"total_records": 413436
},
"iip": {
"latest_period": "July 2026",
"name": "Index of Industrial Production",
"total_records": 17110
}
},
"source": "Ministry of Statistics and Programme Implementation (MoSPI)"
}Compare states on inflation
Rank the states by inflation for one month: where prices are rising fastest and where they are not. Every page is read, because one month of one spending group runs past the platform's page limit and a single page would quietly rank about half the states. Only the group's own figure is ranked, not its sub-groups, and any state that published no figure that month is named rather than dropped.
Inputs
- Year
yearnumberRequired - Which year, as four digits.From 2013 to 2100.
- Month
monthtextRequired - Which month, by name or number.One of:
January,February,March,April,May,June,July,August,September,October,November,December. - Spending group
grouptext - Which part of household spending to rank on. Defaults to General, the all items index the headline inflation rate comes from. Consumer Food Price cannot be used: it is compiled nationally and has no states.One of:
General,Food and Beverages,Pan, Tobacco and Intoxicants,Clothing and Footwear,Housing,Fuel and Light,Miscellaneous. Default:General. - Sector
sectortext - Rural, urban or combined. Defaults to combined.One of:
Rural,Urban,Combined. Default:Combined. - Order
ordertext - Whether to put the highest inflation first or the lowest. Defaults to highest.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.From 1 to 50.
Outputs
all_indiaobject- The national figure, reported beside the ranking rather than in it
average_inflationnumber- Mean across every state that had a figure
countnumber- How many states came back
grouptext- The spending group ranked on
highestobject- The state with the highest inflation, whichever way the list was sorted
lowestobject- The state with the lowest, whichever way the list was sorted
monthtext- The month ranked
ordertext- Which way the list was sorted
sectortext- Rural, Urban or Combined
seriestext- Which series this is
sourcetext- The ministry that publishes the figures
statesliststates_rankednumber- How many had a figure to rank
states_without_a_figurelist- States that published nothing that month, named rather than dropped
yearnumber- The year ranked
Example output
{
"all_india": {
"base_year": "2012",
"group": "Food and Beverages",
"index": 190.3,
"inflation": 7.76,
"is_provisional": false,
"month": "February",
"sector": "Combined",
"state": "All India",
"status": "F",
"subgroup": "Food and Beverages-Overall",
"year": 2024
},
"average_inflation": 7.3569,
"count": 3,
"group": "Food and Beverages",
"highest": {
"base_year": "2012",
"group": "Food and Beverages",
"index": 218.9,
"inflation": 16.56,
"is_provisional": false,
"month": "February",
"rank": 1,
"sector": "Combined",
"state": "Manipur",
"status": "F",
"subgroup": "Food and Beverages-Overall",
"year": 2024
},
"lowest": {
"base_year": "2012",
"group": "Food and Beverages",
"index": 190.9,
"inflation": 0.16,
"is_provisional": false,
"month": "February",
"rank": 35,
"sector": "Combined",
"state": "Lakshadweep",
"status": "F",
"subgroup": "Food and Beverages-Overall",
"year": 2024
},
"month": "February",
"order": "highest",
"sector": "Combined",
"series": "Consumer Price Index",
"source": "Ministry of Statistics and Programme Implementation (MoSPI)",
"states": [
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 218.9,
"inflation": 16.56,
"is_provisional": false,
"month": "February",
"rank": 1,
"sector": "Combined",
"state": "Manipur",
"status": "F",
"subgroup": "Food and Beverages-Overall",
"year": 2024
},
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 207.5,
"inflation": 11.62,
"is_provisional": false,
"month": "February",
"rank": 2,
"sector": "Combined",
"state": "Telangana",
"status": "F",
"subgroup": "Food and Beverages-Overall",
"year": 2024
},
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 188.9,
"inflation": 11.18,
"is_provisional": false,
"month": "February",
"rank": 3,
"sector": "Combined",
"state": "Odisha",
"status": "F",
"subgroup": "Food and Beverages-Overall",
"year": 2024
}
],
"states_ranked": 35,
"states_without_a_figure": [
"Arunachal Pradesh"
],
"year": 2024
}Follow an industry trend
Follow industrial output month by month for one category, with the average growth and how far the index moved. Use it to see whether manufacturing is picking up, or to chart capital goods as a read on investment. Defaults to the General index, which is the headline.
Inputs
- Industry category
categorytext - Which slice of industry. Defaults to General, the headline index.One of:
Mining,Manufacturing,Electricity,General,Primary Goods,Capital Goods,Intermediate Goods,Infrastructure/ Construction Goods,Consumer Durables,Consumer Non-durables, and 4 more. Default:General. - From year
since_yearnumber - Start the series at this year. Leave blank for as far back as the page allows.From 2012 to 2100.
- How many months
sizenumber - How many points to return, up to 200, which is the platform's page limit.From 1 to 200. Default:
200.
Outputs
average_growthnumber- Mean growth across the months returned
categorytext- The category the series is for
category_typetext- Sectoral, Use-based or General
countnumber- How many rows came back
firstobject- The earliest month returned
has_moretrue/false- Whether another page follows
index_changenumber- How far the index moved from first to latest
latestobject- The most recent month returned
pagenumber- Which page this is
page_sizenumber- How many rows per page
pointslistseriestext- Which series this is
sourcetext- The ministry that publishes the figures
total_pagesnumber- How many pages there are
total_recordsnumber- How many match the filters in all, across every page
Example output
{
"average_growth": 5.4167,
"category": "General",
"category_type": "General",
"count": 6,
"first": {
"base_year": "2011-12",
"category": "General",
"growth_rate": 4.1,
"index": 173.2,
"month": "March",
"sub_category": null,
"type": "General",
"year": 2026
},
"has_more": true,
"index_change": -48.4,
"latest": {
"base_year": "2022-23",
"category": "General",
"growth_rate": 6.7,
"index": 124.8,
"month": "July",
"sub_category": null,
"type": "General",
"year": 2026
},
"page": 1,
"page_size": 6,
"points": [
{
"base_year": "2011-12",
"category": "General",
"growth_rate": 4.1,
"index": 173.2,
"month": "March",
"sub_category": null,
"type": "General",
"year": 2026
},
{
"base_year": "2022-23",
"category": "General",
"growth_rate": 3.0,
"index": 129.7,
"month": "March",
"sub_category": null,
"type": "General",
"year": 2026
},
{
"base_year": "2022-23",
"category": "General",
"growth_rate": 4.9,
"index": 118.2,
"month": "April",
"sub_category": null,
"type": "General",
"year": 2026
}
],
"series": "Index of Industrial Production",
"source": "Ministry of Statistics and Programme Implementation (MoSPI)",
"total_pages": 6,
"total_records": 34
}Follow an inflation trend
Follow one price series month by month, with the peak, the trough, the average and the change in the index across the period. Pinning the state, group and sector is what makes it a series: without that the platform interleaves every combination and the result is not a trend. Defaults to the national all items series, which is the one the headline inflation rate is quoted from.
Inputs
- State
statetext - Which state, or 'All India' for the national series. Defaults to All India.One of:
Jammu & Kashmir,Himachal Pradesh,Punjab,Chandigarh,Uttarakhand,Haryana,Delhi,Rajasthan,Uttar Pradesh,Bihar, and 27 more. Default:All India. - Spending group
grouptext - Which part of household spending. Defaults to General, the all items index. Consumer Food Price is national only, so it cannot be followed for a single state.One of:
General,Food and Beverages,Pan, Tobacco and Intoxicants,Clothing and Footwear,Housing,Fuel and Light,Miscellaneous,Consumer Food Price. Default:General. - Sector
sectortext - Rural, urban or combined. Defaults to combined.One of:
Rural,Urban,Combined. Default:Combined. - From year
since_yearnumber - Start the series at this year. Leave blank for as far back as the page allows. The series itself begins in 2013.From 2013 to 2100.
- How many months
sizenumber - How many points to return, up to 200, which is the platform's page limit. The newest are returned first and then put in order.From 1 to 200. Default:
200.
Outputs
average_inflationnumber- Mean across the months returned
countnumber- How many rows came back
firstobject- The earliest month returned
grouptext- The spending group
has_moretrue/false- Whether another page follows
highest_inflationobject- The month inflation peaked
index_changenumber- How far the index moved from first to latest
latestobject- The most recent month returned
lowest_inflationobject- The month it was lowest
pagenumber- Which page this is
page_sizenumber- How many rows per page
pointslistsectortext- Rural, Urban or Combined
seriestext- Which series this is
sourcetext- The ministry that publishes the figures
statetext- The state the series is for
total_pagesnumber- How many pages there are
total_recordsnumber- How many match the filters in all, across every page
Example output
{
"average_inflation": 4.2583,
"count": 6,
"first": {
"base_year": "2012",
"group": "Food and Beverages",
"index": 233.9,
"inflation": 5.12,
"is_provisional": false,
"month": "December",
"sector": "Combined",
"state": "All India",
"status": "F",
"subgroup": "Meat and Fish",
"year": 2025
},
"group": "Food and Beverages",
"has_more": true,
"highest_inflation": {
"base_year": "2012",
"group": "Food and Beverages",
"index": 196.1,
"inflation": 6.75,
"is_provisional": false,
"month": "December",
"sector": "Combined",
"state": "All India",
"status": "F",
"subgroup": "Oils and Fats",
"year": 2025
},
"index_change": -36.5,
"latest": {
"base_year": "2012",
"group": "Food and Beverages",
"index": 197.4,
"inflation": -0.35,
"is_provisional": false,
"month": "December",
"sector": "Combined",
"state": "All India",
"status": "F",
"subgroup": "Cereals and Products",
"year": 2025
},
"lowest_inflation": {
"base_year": "2012",
"group": "Food and Beverages",
"index": 197.4,
"inflation": -0.35,
"is_provisional": false,
"month": "December",
"sector": "Combined",
"state": "All India",
"status": "F",
"subgroup": "Cereals and Products",
"year": 2025
},
"page": 1,
"page_size": 6,
"points": [
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 233.9,
"inflation": 5.12,
"is_provisional": false,
"month": "December",
"sector": "Combined",
"state": "All India",
"status": "F",
"subgroup": "Meat and Fish",
"year": 2025
},
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 222.3,
"inflation": 4.81,
"is_provisional": false,
"month": "December",
"sector": "Combined",
"state": "All India",
"status": "F",
"subgroup": "Egg",
"year": 2025
},
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 192.3,
"inflation": 2.56,
"is_provisional": false,
"month": "December",
"sector": "Combined",
"state": "All India",
"status": "F",
"subgroup": "Milk and Products",
"year": 2025
}
],
"sector": "Combined",
"series": "Consumer Price Index",
"source": "Ministry of Statistics and Programme Implementation (MoSPI)",
"state": "All India",
"total_pages": 52,
"total_records": 312
}Get consumer price index
Read India's Consumer Price Index: the index level and the year-on-year inflation rate, by state, spending group and rural or urban sector, monthly back to 2013. This is the series the headline inflation number comes from. Filter by name and the names are translated into the codes the platform needs, which matters because it accepts a name, ignores it, and returns everything looking filtered.
Inputs
- Year
yeartext - Which year or years, as four digits. Several can be given separated by commas. Leave blank for the whole series.
- Month
monthtext - Which month, by name or number. Leave blank for every month.One of:
January,February,March,April,May,June,July,August,September,October,November,December. - State
statetext - Which state or union territory, by name. 'All India' is the national figure. Leave blank for every state at once.One of:
Jammu & Kashmir,Himachal Pradesh,Punjab,Chandigarh,Uttarakhand,Haryana,Delhi,Rajasthan,Uttar Pradesh,Bihar, and 27 more. - Sector
sectortext - Rural, urban, or the two combined. Prices move differently in each, so this is worth setting rather than leaving to chance.One of:
Rural,Urban,Combined. - Spending group
grouptext - Which part of household spending. 'General' is the all items index the headline inflation rate comes from. Leave blank for all of them. Note that Consumer Food Price is compiled nationally only and has no state breakdown.One of:
General,Food and Beverages,Pan, Tobacco and Intoxicants,Clothing and Footwear,Housing,Fuel and Light,Miscellaneous,Consumer Food Price. - Sub-group code
subgroup_codetext - A finer breakdown within a group, by its code such as '1.1'. Leave blank for every sub-group. The names come back on the rows, so run it once without this to see what there is.
- Base year
base_yeartext - Which index base to read, for example '2012'. Leave blank for all. An index is only comparable against its own base.
- How many to return
sizenumber - How many rows to return, from 1 to 200. Defaults to 100. The platform refuses a larger page.From 1 to 200. Default:
100. - Page
pagenumber - Which page of results, counting from 1. The response says how many pages there are.From 1 to 100000. Default:
1.
Outputs
countnumber- How many rows came back
filters_appliedobject- The filters that actually reached the platform, as codes. Worth checking: a filter it did not recognise would not be here
has_moretrue/false- Whether another page follows
pagenumber- Which page this is
page_sizenumber- How many rows per page
recordslistseriestext- Which series this is
sourcetext- The ministry that publishes the figures
total_pagesnumber- How many pages there are
total_recordsnumber- How many match the filters in all, across every page
Example output
{
"count": 3,
"filters_applied": {
"group_code": "1",
"state_code": "32",
"year": "2024"
},
"has_more": true,
"page": 1,
"page_size": 3,
"records": [
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 182.2,
"inflation": 2.02,
"is_provisional": false,
"month": "December",
"sector": "Rural",
"state": "Kerala",
"status": "F",
"subgroup": "Cereals and Products",
"year": 2024
},
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 204.3,
"inflation": 6.46,
"is_provisional": false,
"month": "December",
"sector": "Rural",
"state": "Kerala",
"status": "F",
"subgroup": "Meat and Fish",
"year": 2024
},
{
"base_year": "2012",
"group": "Food and Beverages",
"index": 214.2,
"inflation": 6.57,
"is_provisional": false,
"month": "December",
"sector": "Rural",
"state": "Kerala",
"status": "F",
"subgroup": "Egg",
"year": 2024
}
],
"series": "Consumer Price Index",
"source": "Ministry of Statistics and Programme Implementation (MoSPI)",
"total_pages": 156,
"total_records": 468
}Get industrial production index
Read the Index of Industrial Production: output and its year-on-year growth for mining, manufacturing and electricity, and for the use-based split into capital, intermediate, infrastructure and consumer goods. Published monthly, and the earliest signal of whether industry is expanding or contracting.
Inputs
- Year
yeartext - Which year or years, as four digits. Several can be given separated by commas. Leave blank for the whole series.
- Month
monthtext - Which month, by name or number. Leave blank for every month.One of:
January,February,March,April,May,June,July,August,September,October,November,December. - Industry category
categorytext - Which slice of industry. Mining, Manufacturing and Electricity are the sectoral split and the goods categories the use-based one. 'General' is the headline index. The last four belong to earlier base years the platform still serves.One of:
Mining,Manufacturing,Electricity,General,Primary Goods,Capital Goods,Intermediate Goods,Infrastructure/ Construction Goods,Consumer Durables,Consumer Non-durables, and 4 more. - Base year
base_yeartext - Which index base to read, '2011-12' or '2022-23'. Leave blank for both. An index is only comparable against its own base, so a series that crosses the change needs care.
- How many to return
sizenumber - How many rows to return, from 1 to 200. Defaults to 100. The platform refuses a larger page.From 1 to 200. Default:
100. - Page
pagenumber - Which page of results, counting from 1. The response says how many pages there are.From 1 to 100000. Default:
1.
Outputs
countnumber- How many rows came back
filters_appliedobject- The filters that reached the platform, as codes
has_moretrue/false- Whether another page follows
pagenumber- Which page this is
page_sizenumber- How many rows per page
recordslistseriestext- Which series this is
sourcetext- The ministry that publishes the figures
total_pagesnumber- How many pages there are
total_recordsnumber- How many match the filters in all, across every page
Example output
{
"count": 3,
"filters_applied": {
"category_code": "2",
"year": "2024"
},
"has_more": true,
"page": 1,
"page_size": 3,
"records": [
{
"base_year": "2022-23",
"category": "Manufacturing",
"growth_rate": -4.3,
"index": 114.3,
"month": "December",
"sub_category": "Manufacture of Food Products",
"type": "Sectoral",
"year": 2024
},
{
"base_year": "2011-12",
"category": "Manufacturing",
"growth_rate": -4.1,
"index": 154.2,
"month": "December",
"sub_category": "Manufacture of Food Products",
"type": "Sectoral",
"year": 2024
},
{
"base_year": "2011-12",
"category": "Manufacturing",
"growth_rate": 2.9,
"index": 104.2,
"month": "December",
"sub_category": "Manufacture of Beverages",
"type": "Sectoral",
"year": 2024
}
],
"series": "Index of Industrial Production",
"source": "Ministry of Statistics and Programme Implementation (MoSPI)",
"total_pages": 192,
"total_records": 576
}List the codes
List the states, spending groups, sectors, industry categories and months the platform knows, with the code it files each under. Worth reading first. The platform filters on codes and ignores names: ask it for Kerala and it accepts the request, ignores it, and returns all thirty-six states looking filtered. The other actions accept either and translate for you; this is where the names come from.
Inputs
- Which table
tabletext - Return just one table. Leave blank for all of them.One of:
states(States and union territories),cpi_groups(Consumer price spending groups),sectors(Rural, urban and combined),iip_categories(Industrial production categories),months.
Outputs
cpi_groupslist- Consumer price spending groups
iip_categorieslist- Industrial production categories, each with its grouping
monthslist- Months and their numbers
notetext- How the platform treats names against codes
sectorslist- Rural, urban and combined
stateslist- States and union territories, with their codes
tableslist- Which tables came back
Example output
{
"note": "The platform filters on these codes and ignores names. The other actions accept either and translate for you.",
"sectors": [
{
"code": 1,
"name": "Rural"
},
{
"code": 2,
"name": "Urban"
},
{
"code": 3,
"name": "Combined"
}
],
"tables": [
"sectors"
]
}