Discover/Gov API
live

Gov APInaac.gov.in

Access NAAC accredited institution data, accreditation history, IIQA/SSR/Peer Team Reports, and latest results via a structured API for naac.gov.in.

Endpoints
4
Updated
2mo ago

What is the Gov API?

The NAAC API exposes 4 endpoints covering India's National Assessment and Accreditation Council data, including institution search by state and name, detailed accreditation report links (IIQA, SSR, Peer Team Report, Grade Sheet), and the latest published results. The search_accredited_institutions endpoint accepts filters for state, institution type, and partial name, returning paginated records with accreditation metadata. An India-based proxy is required to reach the source.

Try it
Number of results to return (max 100)
Pagination start offset index
State ID (get list from get_states endpoint)
Institution name or partial name (e.g. 'Palamuru')
Institution type: 0=All, 1=College, 2=University
api.parse.bot/scraper/21d6d0a2-6667-4988-9b50-105abfe77b7c/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/21d6d0a2-6667-4988-9b50-105abfe77b7c/search_accredited_institutions' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 naac-gov-in-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.

"""
NAAC Accreditation API Client
Access India's National Assessment and Accreditation Council data.
Get your API key from: https://parse.bot/settings
"""

import os
import sys
import requests
from typing import Any, Dict, List, Optional


class ParseClient:
    """Client for NAAC Accreditation API."""

    def __init__(self, api_key: Optional[str] = None):
        """Initialize the Parse client.
        
        Args:
            api_key: API key for authentication. If not provided, uses PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "9c2b7795-187c-495f-ade4-81fde136d50d"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")
        
        if not self.api_key:
            raise ValueError("API key not provided and PARSE_API_KEY env var not set")

    def _call(self, endpoint: str, method: str = "POST", **params) -> Dict[str, Any]:
        """Make an API call to the Parse Bot scraper.
        
        Args:
            endpoint: The endpoint name (e.g., 'search_accredited_institutions')
            method: HTTP method - 'GET' or 'POST'
            **params: Query/body parameters
            
        Returns:
            Response JSON as dictionary
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }
        
        if method.upper() == "GET":
            response = requests.get(url, headers=headers, params=params)
        else:
            response = requests.post(url, headers=headers, json=params)
        
        response.raise_for_status()
        return response.json()

    def search_accredited_institutions(
        self,
        inst_name: Optional[str] = None,
        inst_type: int = 0,
        state: int = 0,
        start: int = 0,
        limit: int = 10
    ) -> Dict[str, Any]:
        """Search for NAAC accredited institutions.
        
        Args:
            inst_name: Institution name or partial name
            inst_type: 0=All, 1=College, 2=University
            state: State ID (use get_states() to get available IDs)
            start: Pagination start offset
            limit: Number of results (max 100)
            
        Returns:
            Dictionary with institutions list and total records count
        """
        params = {
            "inst_name": inst_name,
            "inst_type": inst_type,
            "state": state,
            "start": start,
            "limit": limit
        }
        # Remove None values
        params = {k: v for k, v in params.items() if v is not None or k in ["inst_type", "state", "start", "limit"]}
        
        return self._call("search_accredited_institutions", method="GET", **params)

    def get_institution_details(self, assessment_id: int) -> Dict[str, Any]:
        """Get detailed accreditation information for a specific institution.
        
        Args:
            assessment_id: The HEI assessment ID from search results
            
        Returns:
            Dictionary with institution details and report links
        """
        return self._call("get_institution_details", method="GET", assessment_id=assessment_id)

    def get_states(self) -> Dict[str, str]:
        """Get mapping of state names to their IDs.
        
        Returns:
            Dictionary mapping state names to state IDs
        """
        return self._call("get_states", method="GET")

    def get_latest_results(self) -> Dict[str, List[Dict[str, str]]]:
        """Get links to latest NAAC accreditation results PDF reports.
        
        Returns:
            Dictionary with latest_pdf_results array
        """
        return self._call("get_latest_results", method="GET")


def main():
    """Practical workflow example showing chained API calls."""
    # Initialize client
    client = ParseClient()
    
    print("=" * 70)
    print("NAAC ACCREDITATION API - PRACTICAL WORKFLOW EXAMPLE")
    print("=" * 70)
    
    # Step 1: Get available states
    print("\n1. Fetching available states...")
    states_data = client.get_states()
    print(f"   Found {len(states_data)} states")
    
    # Find Telangana's state ID
    telangana_id = None
    for state_name, state_id in states_data.items():
        if "Telangana" in state_name:
            telangana_id = int(state_id)
            print(f"   Telangana ID: {telangana_id}")
            break
    
    # Step 2: Search for universities in Telangana
    print("\n2. Searching for universities in Telangana...")
    search_results = client.search_accredited_institutions(
        inst_type=2,  # Universities only
        state=telangana_id,
        limit=5
    )
    
    institutions = search_results.get("institutions", [])
    total = search_results.get("filtered_records", 0)
    print(f"   Found {total} universities in Telangana")
    
    # Step 3: Display search results and get details for each
    print("\n3. Retrieving detailed information for each university...")
    print("-" * 70)
    
    for idx, inst in enumerate(institutions, 1):
        inst_name = inst.get("hei_name", "Unknown")
        assessment_id = inst.get("hei_assessment_id")
        grade = inst.get("grade", "N/A")
        status = inst.get("status", "N/A")
        valid_till = inst.get("accreditation_valid_till", "N/A")
        
        print(f"\n   Institution {idx}: {inst_name}")
        print(f"   Grade: {grade} | Status: {status}")
        print(f"   Valid Till: {valid_till}")
        
        # Get detailed information including reports
        if assessment_id:
            try:
                details = client.get_institution_details(assessment_id)
                
                # Display status information
                iiqa_status = details.get("iiqa_status", "N/A")
                ssr_status = details.get("ssr_status", "N/A")
                print(f"   IIQA Status: {iiqa_status}")
                print(f"   SSR Status: {ssr_status}")
                
                # List available reports
                reports = details.get("reports", [])
                if reports:
                    print(f"   Available Reports: {len(reports)}")
                    for report in reports[:2]:  # Show first 2 reports
                        label = report.get("label", "Unknown")
                        print(f"     - {label}")
                    if len(reports) > 2:
                        print(f"     ... and {len(reports) - 2} more")
            except Exception as e:
                print(f"   Error fetching details: {str(e)}")
    
    # Step 4: Get latest PDF results
    print("\n" + "-" * 70)
    print("\n4. Fetching latest accreditation results PDFs...")
    latest_results = client.get_latest_results()
    pdfs = latest_results.get("latest_pdf_results", [])
    
    if pdfs:
        print(f"   Found {len(pdfs)} PDF reports:")
        for pdf in pdfs[:3]:  # Show first 3
            title = pdf.get("title", "Unknown")
            url = pdf.get("url", "N/A")
            print(f"     - {title}: {url[:50]}..." if len(url) > 50 else f"     - {title}: {url}")
    
    print("\n" + "=" * 70)
    print("Workflow completed successfully!")
    print("=" * 70)


if __name__ == "__main__":
    try:
        main()
    except KeyError as e:
        print(f"Error: API key not found. Please set PARSE_API_KEY environment variable.", file=sys.stderr)
        sys.exit(1)
    except requests.exceptions.RequestException as e:
        print(f"API request error: {e}", file=sys.stderr)
        sys.exit(1)
All endpoints · 4 totalmissing one? ·

Search for NAAC accredited institutions using various filters. Returns a paginated list of institutions with basic accreditation data.

Input
ParamTypeDescription
limitintegerNumber of results to return (max 100)
startintegerPagination start offset index
stateintegerState ID (get list from get_states endpoint)
inst_namestringInstitution name or partial name (e.g. 'Palamuru')
inst_typeintegerInstitution type: 0=All, 1=College, 2=University
Response
{
  "type": "object",
  "fields": {
    "institutions": "array of objects",
    "total_records": "integer",
    "filtered_records": "integer"
  },
  "sample": {
    "institutions": [
      {
        "grade": "B",
        "state": "Telangana",
        "status": "5",
        "address": "PALAMURU UNIVERSITY BANDAMEEDIPALLI MAHABUBNAGAR PIN 509001 MAHABUBNAGAR 509001",
        "aishe_id": "U-0028",
        "hei_name": "PALAMURU UNIVERSITY",
        "submission_date": "2018-11-30",
        "hei_assessment_id": 1016,
        "accreditation_valid_till": "2023-11-29 00:00:00"
      }
    ],
    "total_records": 2,
    "filtered_records": 2
  }
}

About the Gov API

Institution Search and Filtering

The search_accredited_institutions endpoint accepts up to five parameters: limit (max 100), start for pagination offset, state (integer ID), inst_name for partial name matching, and inst_type to filter between colleges (1), universities (2), or all institutions (0). Responses include total_records, filtered_records, and an array of institution objects with basic accreditation data. State IDs come from the get_states endpoint, which returns a flat mapping of state names to their integer IDs.

Institution Detail and Report Links

Once you have a hei_assessment_id from search results, pass it to get_institution_details to retrieve the full accreditation record for that institution. The response includes iiqa_status, ssr_status, iiqa_submitted_date, ssr_submitted_date, name_with_id, and a reports array of objects containing a label (e.g. "Peer Team Report", "Grade Sheet") and a direct url for each document. This endpoint is the primary way to access downloadable PDF reports for any given institution.

Latest Results and Reference Data

The get_latest_results endpoint returns a latest_pdf_results array of objects with title and url fields pointing to the most recently published accreditation result PDFs on the NAAC main site. This is useful for monitoring new accreditation cycles without polling individual institution records. The get_states endpoint serves as a reference lookup and should be called once to build a local state-ID mapping before running filtered searches.

Regional Access Note

The naac.gov.in source is geo-restricted. All requests to this API must route through an India-based proxy. Requests from other regions will fail at the source level, not at the API layer.

Reliability & maintenance

The Gov API is a managed, monitored endpoint for naac.gov.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when naac.gov.in 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 naac.gov.in 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?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a directory of NAAC-accredited colleges filtered by state using search_accredited_institutions with the state and inst_type parameters.
  • Retrieve and archive Peer Team Reports and Grade Sheet PDFs for accredited institutions via get_institution_details.
  • Track IIQA and SSR submission dates for universities to monitor accreditation cycle timelines.
  • Aggregate iiqa_status and ssr_status fields across institutions to analyze accreditation completion rates by state.
  • Monitor newly published accreditation result PDFs using get_latest_results for academic research or news alerting.
  • Cross-reference institution names against other education datasets using partial name search via the inst_name parameter.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does NAAC provide an official public developer API?+
No. naac.gov.in does not publish a documented public API. This Parse API provides structured programmatic access to the same data available on the site.
What does `get_institution_details` return beyond basic accreditation status?+
It returns iiqa_status, ssr_status, iiqa_submitted_date, ssr_submitted_date, name_with_id, and a reports array. Each entry in reports has a label (such as "Peer Team Report" or "Grade Sheet") and a url to the corresponding PDF document.
Does the API return individual grade scores or performance metrics for each institution?+
Not as structured fields. The API provides accreditation status, submission dates, and links to Grade Sheet PDFs via get_institution_details. Numeric scores and criteria-level performance data are embedded in those PDFs rather than returned as discrete fields. You can fork this API on Parse and revise it to extract and surface specific score fields if your use case requires them.
Can I retrieve historical accreditation cycles for an institution, such as multiple past assessment rounds?+
The get_institution_details endpoint returns report links and status for the assessment associated with the provided hei_assessment_id. Browsing across multiple historical cycles is not currently exposed as a list. You can fork this API on Parse and revise it to add an endpoint that iterates across assessment IDs for a given institution.
What happens if requests are made without an India-based proxy?+
The naac.gov.in source applies geo-blocking outside India. Requests that do not route through an India-based proxy will fail to retrieve data. Configure your proxy at the request level before calling any endpoint.
Page content last updated . Spec covers 4 endpoints from naac.gov.in.
Related APIs in EducationSee all →
nirfindia.org API
Access India's NIRF rankings across multiple years and categories to compare higher education institution scores, find participating colleges, and search for specific institutions by name. Get detailed ranking parameters and stay updated with the latest notifications about institutional performance and rankings.
content.naic.org API
Search and access comprehensive insurance regulatory information from state departments, including news articles, glossary definitions, committee details, and company data. Find contact information for state insurance regulators, look up insurance industry terms, and research specific insurance companies all in one place.
shiksha.com API
Search and browse Shiksha colleges by stream/course, then fetch detailed institute profiles and course offerings, plus upcoming exam schedules by stream.
egyankosh.ac.in API
Search and browse educational materials from IGNOU's digital repository, retrieve course unit details, and access PDFs directly. Navigate through communities and collections to find study resources organized by subject and course structure.
kys.udiseplus.gov.in API
Search for schools across India by geographic region and management type, then access detailed information about any school including academic performance, facilities, and enrollment data. Navigate through states, districts, and blocks to find schools that match your criteria and compare their profiles.
myschool.ng API
Search for Nigerian schools by type, explore courses and admission requirements, and stay updated with the latest education news all in one place. Find detailed information about schools and their programs to make informed decisions about your education.
saaustralia.com.au API
Search for solar installer accreditation status and details in Australia by name or installer number, and stay updated with the latest industry news, CPD training courses, and available accreditation categories. Verify installer credentials and professional development opportunities to make informed decisions about solar installation services.
niche.com API
Search and retrieve data on K-12 schools and colleges from Niche.com, including rankings, report card grades, stats, and user reviews.