kys.udiseplus.gov.in APIkys.udiseplus.gov.in ↗
Access Indian school data from UDISE Plus: states, districts, blocks, school categories, management types, and detailed school profiles via 8 endpoints.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/cf9b943b-9961-4e2b-a62d-a207d488a140/get_academic_years' \ -H 'X-API-Key: $PARSE_API_KEY'
Fetch the list of academic years available in the system. Returns year IDs and descriptions used as parameters in other endpoints.
No input parameters required.
{
"type": "array",
"fields": {
"yearId": "integer identifier for the academic year (0 means Real Time/latest)",
"yearDesc": "string description of the academic year (e.g. '2024-25', 'Real Time')"
},
"sample": {
"data": [
{
"yearId": 0,
"yearDesc": "Real Time"
},
{
"yearId": 11,
"yearDesc": "2024-25"
},
{
"yearId": 10,
"yearDesc": "2023-24"
}
],
"status": "success"
}
}About the kys.udiseplus.gov.in API
This API exposes 8 endpoints covering India's UDISE Plus Know Your School portal, giving programmatic access to the full geographic hierarchy of states, districts, and blocks, plus school search and detailed school profiles. The get_school_details endpoint returns a school's address, headmaster info, board affiliation, facility data (classrooms, toilets, internet), and enrollment and teacher counts in a single call, identified by UDISE school ID.
Geographic Hierarchy and Reference Data
Before querying schools, use the reference endpoints to resolve internal IDs. get_states returns each state's internal stateId and udiseStateCode — the stateId (e.g., 107 for Delhi, 136 for Telangana) is what get_districts and search_schools_by_region require, not the UDISE code. get_districts takes that state_id and returns districtId, districtName, and udiseDistrictCode. get_blocks then takes an internal district_id and returns block-level identifiers. All three hierarchy endpoints accept an optional year_id from get_academic_years; passing 0 (the default) retrieves the latest real-time data.
School Search
search_schools_by_region accepts a required state_id and district_id, with optional filters for block_id, cluster_id, village_id, category_id (from get_categories), and management_id (from get_managements). The response includes aggregate counts in allSchools, operationalSchools, and nonOperationalSchools objects, plus a content array listing matching schools. School categories cover levels like Primary, Upper Primary, and Secondary; management types distinguish Government, Private, Aided, and similar classifications.
School Details
get_school_details takes a single school_id (UDISE numeric ID, retrievable from search_schools_by_region) and returns four grouped objects. profile covers address, headmaster name, affiliated board, and medium of instruction. facility covers classroom count, toilet availability, electricity, library, playground, and internet access. statistics holds student and teacher counts. report_card consolidates location, category, management classification, and detailed teacher and student breakdowns in one place.
Academic Year Handling
get_academic_years lists all available year IDs and their descriptions (e.g., 2024-25, Real Time). A yearId of 0 consistently maps to the real-time or latest dataset across every endpoint that accepts year_id. To pull historical snapshots — for example, comparing enrollment counts from 2021-22 against 2023-24 — pass the specific year IDs returned by this endpoint.
- Build a school finder tool filtered by district, block, and management type using
search_schools_by_region. - Compile facility audits (classrooms, toilets, internet) across a district by iterating
get_school_detailsfor each school in acontentarray. - Track year-over-year enrollment changes by calling
get_school_detailswith differentyear_idvalues fromget_academic_years. - Generate state-level reports on government vs. private school distribution using
get_managementsandsearch_schools_by_region. - Map school density by block by aggregating
operationalSchoolscounts across all blocks in a district. - Filter schools by category (Primary, Secondary) and management type to support education policy research datasets.
- Cross-reference UDISE school codes with internal IDs to link external datasets to school profiles from
get_school_details.
| 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 | 250 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 UDISE Plus have an official developer API?+
What does `get_school_details` actually return, and how do I get a school ID?+
get_school_details returns four objects: profile (address, headmaster, board, medium of instruction), facility (classrooms, toilets, electricity, library, playground, internet), statistics (student and teacher counts), and report_card (location, category, management, detailed breakdowns). The required school_id is the numeric UDISE school code, which you can obtain from the content array returned by search_schools_by_region.Why do I need to use internal IDs rather than UDISE codes for filtering?+
get_districts and search_schools_by_region endpoints require the internal stateId and districtId values, not the udiseStateCode or udiseDistrictCode strings. The UDISE codes are returned as reference fields but are not accepted as filter inputs. Always resolve IDs through get_states and get_districts first.Does the API return academic performance scores or exam results for schools?+
Does the API support pagination when searching schools in a large district?+
search_schools_by_region endpoint returns results in a content array, but the current endpoint definition does not expose pagination parameters such as page number or page size. For large districts, applying optional filters like block_id, category_id, or management_id can narrow result sets. You can fork this API on Parse and revise it to add pagination parameters if you need to handle very large result sets programmatically.