Discover/Gov API
live

Gov APIblockchain.gov.in

Access NIC India blockchain statistics, per-chain breakdowns, and government case studies via 3 endpoints covering land records, judiciary, CBSE, and more.

This API takes change requests — .
Endpoints
3
Updated
2d ago

What is the Gov API?

The blockchain.gov.in API provides 3 endpoints to retrieve statistics and case study content from India's National Informatics Centre Blockchain platform. Use get_statistics to pull aggregate counts across all onboarded chains, get_chain_statistics to drill into per-department transaction and verification data for chains like property, judiciary, or cbse, and get_case_study to retrieve structured content for documented government use cases including LandRegistration and GSTChain.

This call costs1 credit / call— charged only on success
Try it

No input parameters required.

api.parse.bot/scraper/7738d2cf-8e2b-4fe6-a637-53fc4a450434/<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/7738d2cf-8e2b-4fe6-a637-53fc4a450434/get_statistics' \
  -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 blockchain-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.

"""
India Blockchain Land Records API Client

This module provides a Python client for accessing blockchain statistics and
case study information from India's National Informatics Centre Blockchain platform.

Get your API key from: https://parse.bot/settings
"""

import os
import json
from typing import Any, Optional
import requests


class ParseClient:
    """Client for interacting with the India Blockchain Land Records API via Parse."""

    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the Parse API client.

        Args:
            api_key: API key for Parse. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "7738d2cf-8e2b-4fe6-a637-53fc4a450434"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")

        if not self.api_key:
            raise ValueError("API key must be provided or set in PARSE_API_KEY environment variable")

    def _call(self, endpoint: str, method: str = "POST", **params) -> dict[str, Any]:
        """
        Make an API call to the Parse scraper.

        Args:
            endpoint: The endpoint name (e.g., 'get_statistics')
            method: HTTP method - "GET" or "POST"
            **params: Query/body parameters for the endpoint

        Returns:
            Parsed JSON response from the API

        Raises:
            requests.RequestException: If the API call fails
            ValueError: If the response cannot be parsed
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {"X-API-Key": self.api_key, "Content-Type": "application/json"}

        try:
            if method == "GET":
                response = requests.get(url, headers=headers, params=params, timeout=10)
            elif method == "POST":
                response = requests.post(url, headers=headers, json=params, timeout=10)
            else:
                raise ValueError(f"Unsupported HTTP method: {method}")

            response.raise_for_status()
            return response.json()
        except requests.RequestException as e:
            print(f"API call failed: {e}")
            raise

    def get_statistics(self) -> dict[str, Any]:
        """
        Fetch overall blockchain statistics from the India Blockchain platform.

        Returns statistics about blockchain products, states, departments,
        documents, verifications, and per-chain breakdowns.

        Returns:
            Dictionary containing blockchain statistics
        """
        return self._call("get_statistics", method="GET")

    def get_chain_statistics(self, chain: str) -> dict[str, Any]:
        """
        Fetch statistics for a specific blockchain chain.

        Args:
            chain: Chain identifier. Must be one of:
                   cbse, certificate, document, icjs, judiciary, property, sslcpuc

        Returns:
            Dictionary containing chain-specific statistics with transactions
            and verifications breakdown by state and department
        """
        return self._call("get_chain_statistics", method="GET", chain=chain)

    def get_case_study(self, case_study: str) -> dict[str, Any]:
        """
        Fetch and parse a case study from the India Blockchain platform.

        Args:
            case_study: Case study identifier. Must be one of:
                        BloodBank, GSTChain, LandRegistration, PDS, RemoteVoting

        Returns:
            Dictionary containing case study title and structured content sections
        """
        return self._call("get_case_study", method="GET", case_study=case_study)


def format_indian_number(num_str: str) -> int:
    """Convert Indian numeral format string to integer."""
    return int(num_str.replace(",", ""))


def main():
    """Practical workflow demonstrating the India Blockchain Land Records API."""

    # Initialize the client
    client = ParseClient()

    print("=" * 80)
    print("India Blockchain Land Records API - Practical Workflow")
    print("=" * 80)

    # Step 1: Get overall statistics
    print("\n📊 Step 1: Fetching overall blockchain statistics...")
    stats = client.get_statistics()

    print(f"\n✓ Statistics as of: {stats['date']}")
    print(f"  • Blockchain Products: {stats['blockchain_products']}")
    print(f"  • States/Organizations: {stats['states_organizations']}")
    print(f"  • Departments Onboarded: {stats['departments_onboarded']}")
    print(f"  • Total Documents: {stats['total_documents']}")
    print(f"  • Total Verifications: {stats['total_verifications']}")

    # Display sample states and departments
    print(f"\n  Sample States/Organizations:")
    for state in stats["states"][:3]:
        print(f"    - {state}")

    print(f"\n  Sample Departments:")
    for dept in stats["departments"][:3]:
        print(f"    - {dept}")

    # Step 2: Analyze transaction applications
    print("\n📈 Step 2: Transaction Applications Overview...")
    if stats.get("transaction_applications"):
        for app in stats["transaction_applications"]:
            transaction_count = format_indian_number(app["count"])
            print(f"\n  {app['name']}:")
            print(f"    • Total Transactions: {app['count']} ({transaction_count:,})")

    # Step 3: Get detailed statistics for each transaction application chain
    print("\n🔗 Step 3: Analyzing Property Chain in detail...")
    property_stats = client.get_chain_statistics("property")

    print(f"\n✓ Property Chain Statistics (Updated: {property_stats['date']})")

    # Aggregate statistics by department
    dept_transactions = {}
    for trans in property_stats.get("transactions", []):
        dept_key = f"{trans['state_or_organization']} - {trans['department']}"
        dept_transactions[dept_key] = int(trans["transaction_count"])

    # Sort by transaction count
    sorted_depts = sorted(dept_transactions.items(), key=lambda x: x[1], reverse=True)

    print("\n  Top 5 Departments by Transaction Count:")
    for i, (dept, count) in enumerate(sorted_depts[:5], 1):
        print(f"    {i}. {dept}: {count:,} transactions")

    # Step 4: Analyze verification data
    print("\n✓ Verification Data:")
    if property_stats.get("verifications"):
        top_verification = property_stats["verifications"][0]
        total_reads = format_indian_number(top_verification["total_reads"])
        reads_24h = format_indian_number(top_verification["reads_last_24h"])

        print(f"  Top Department: {top_verification['state_or_organization']} - {top_verification['department']}")
        print(f"    • Total Reads (All-Time): {total_reads:,}")
        print(f"    • Reads (Last 24h): {reads_24h:,}")
        print(f"    • Daily Average: {total_reads // 365:,}")

    # Step 5: Get case study information
    print("\n📚 Step 5: Fetching Land Registration Case Study...")
    case_study = client.get_case_study("LandRegistration")

    print(f"\n✓ Case Study: {case_study['title']}")
    print(f"  Sections available: {len(case_study['sections'])}")

    for section in case_study["sections"]:
        print(f"\n  📖 {section['heading']}:")
        for para in section["content"][:1]:  # Show first paragraph of each section
            # Truncate long paragraphs for display
            preview = para[:100] + "..." if len(para) > 100 else para
            print(f"     {preview}")

    # Step 6: Compare chains
    print("\n" + "=" * 80)
    print("📊 Step 6: Comparing Multiple Chains")
    print("=" * 80)

    chains_to_compare = ["property", "document"]
    chain_comparison = {}

    for chain_name in chains_to_compare:
        try:
            chain_data = client.get_chain_statistics(chain_name)
            transaction_count = sum(
                int(t["transaction_count"]) for t in chain_data.get("transactions", [])
            )
            verification_count = sum(
                format_indian_number(v["total_reads"]) for v in chain_data.get("verifications", [])
            )

            chain_comparison[chain_name] = {
                "transactions": transaction_count,
                "verifications": verification_count,
            }
        except Exception as e:
            print(f"  ⚠ Could not fetch {chain_name} chain: {e}")

    print("\nChain Comparison Summary:")
    for chain, metrics in chain_comparison.items():
        print(f"\n  {chain.upper()} Chain:")
        print(f"    • Total Transactions: {metrics['transactions']:,}")
        print(f"    • Total Verifications: {metrics['verifications']:,}")

    print("\n" + "=" * 80)
    print("✅ Workflow completed successfully!")
    print("=" * 80)


if __name__ == "__main__":
    main()
All endpoints · 3 totalmissing one? ·

Fetch overall blockchain statistics from the India Blockchain platform. Returns summary counts of products, states, departments, total documents/verifications, and per-chain breakdowns of transactions and reads.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "date": "string - date of last update in DD-MM-YYYY format",
    "states": "array of state/organization names",
    "departments": "array of department names",
    "total_documents": "string - total documents on blockchain (Indian numeral format)",
    "read_applications": "array of objects with name, total_reads, reads_last_24h per chain",
    "blockchain_products": "integer - number of blockchain products",
    "total_verifications": "string - total verifications on blockchain (Indian numeral format)",
    "states_organizations": "integer - number of states/organizations onboarded",
    "departments_onboarded": "integer - number of departments onboarded",
    "transaction_applications": "array of objects with name and count per chain"
  },
  "sample": {
    "date": "08-06-2026",
    "states": [
      "Central Board of Secondary Education",
      "ANDHRA PRADESH",
      "CHHATTISGARH"
    ],
    "departments": [
      "Central Board of Secondary Education",
      "KARNATAKA - Revenue Department"
    ],
    "total_documents": "10,46,74,542",
    "read_applications": [
      {
        "name": "Property Chain",
        "total_reads": "42,48,21,783",
        "reads_last_24h": "32,96,004"
      }
    ],
    "blockchain_products": 6,
    "total_verifications": "42,64,04,462",
    "states_organizations": 12,
    "departments_onboarded": 18,
    "transaction_applications": [
      {
        "name": "Property Chain",
        "count": "2,10,49,379"
      }
    ]
  }
}

About the Gov API

What the API Returns

The get_statistics endpoint returns a snapshot of the entire NIC Blockchain platform: total documents and verifications in Indian numeral format, counts of onboarded states/organizations and departments, a list of all active chains with their transaction counts, and per-chain read volumes including reads_last_24h. A date field in DD-MM-YYYY format indicates when the data was last updated.

Chain-Level Detail

get_chain_statistics accepts a chain parameter from a fixed set of identifiers — cbse, certificate, document, icjs, judiciary, property, and sslcpuc — and returns two arrays: transactions broken down by state_or_organization and department, and verifications with matching fields plus total_reads and reads_last_24h. This makes it possible to compare, for example, how many property chain transactions originate from different state registries versus how often those records are verified.

Case Study Content

get_case_study accepts one of five identifiers — BloodBank, GSTChain, LandRegistration, PDS, RemoteVoting — and returns a title, a case_study_id echo, and a sections array where each element carries a heading and a content array of paragraph strings. This gives programmatic access to the policy rationale, implementation details, and outcomes documented for each government blockchain program.

Coverage Notes

All three endpoints reflect publicly available data from blockchain.gov.in. Counts for total documents and verifications use Indian numeral formatting (e.g., lakhs and crores), so downstream code should account for that when parsing or displaying figures.

Reliability & maintenance

The Gov API is a managed, monitored endpoint for blockchain.gov.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when blockchain.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 blockchain.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
  • Track daily verification activity on the property chain to monitor land record usage across Indian states
  • Build a dashboard comparing transaction counts across all seven NIC blockchain chains using get_statistics
  • Identify which state departments are generating the most CBSE certificate transactions via get_chain_statistics
  • Extract structured text from the LandRegistration case study for policy research or government procurement analysis
  • Monitor the reads_last_24h field per chain to detect spikes in document verification demand
  • Enumerate all onboarded states and departments to map blockchain adoption across Indian government bodies
  • Populate a research report with case study content from GSTChain or RemoteVoting using the sections response structure
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 blockchain.gov.in have an official developer API?+
No public developer API or documented REST interface is offered by blockchain.gov.in. The Parse API is the structured way to access this data programmatically.
What does `get_chain_statistics` return that `get_statistics` does not?+
get_statistics gives aggregate counts across all chains. get_chain_statistics goes further: for a specific chain like property or judiciary, it returns per-row breakdowns listing each state_or_organization, department, transaction_count, total_reads, and reads_last_24h — granularity that the top-level endpoint does not include.
How current is the data returned by these endpoints?+
Each response includes a date field in DD-MM-YYYY format reflecting the last-updated timestamp shown on the source platform. There is no sub-daily timestamp granularity beyond the reads_last_24h field in the statistics endpoints, so the data cadence depends on how frequently the source platform publishes updates.
Can I retrieve historical statistics or time-series data for a chain?+
Not currently. The API returns the current snapshot from the platform; there is no start_date or end_date parameter on any endpoint. You can fork this API on Parse and revise it to add an endpoint that periodically stores and retrieves historical snapshots.
Are all NIC blockchain programs covered, or only the five listed case studies?+
The get_case_study endpoint covers exactly five identifiers: BloodBank, GSTChain, LandRegistration, PDS, and RemoteVoting. Other programs documented on the platform are not currently included. You can fork this API on Parse and revise it to add additional case study identifiers if the source pages follow the same structure.
Page content last updated . Spec covers 3 endpoints from blockchain.gov.in.
Related APIs in Government PublicSee all →
api.nasa.gov API
Access NASA's suite of open data APIs — including the Astronomy Picture of the Day, Near Earth Object tracking, DONKI space weather events, EPIC Earth imagery, Mars weather, the NASA Image and Video Library, the Exoplanet Archive, and EONET natural events.
usaspending.gov API
Access data from usaspending.gov.
sec.gov API
Search for publicly traded companies and instantly access their SEC filings with details like filing type, date, description, and accession numbers. Find the regulatory documents you need to research company financial information and compliance records.
developer.company-information.service.gov.uk API
Search for UK registered companies and retrieve detailed information including company profiles, officer names, and their dates of birth. Access comprehensive corporate records directly from the official Companies House register to verify business details and identify key personnel.
companieshouse.gov.uk API
Search for UK companies and officers, then access detailed information including company profiles, filing history, charges, and officers with significant control. Get comprehensive corporate records and appointment details all in one place.
find-and-update.company-information.service.gov.uk API
Search and access detailed information about UK companies registered at Companies House, including company profiles, filing histories, officers, and financial charges. Filter companies by name, status, type, SIC code, and more.
capitol.texas.gov API
Search and monitor Texas Legislature bills, track their progress through legislative stages, and retrieve detailed action histories. Look up legislator contact information, district details, committee assignments, and full committee membership rosters.
mars.nasa.gov API
Explore real-time images, weather data, and location tracking from NASA's Perseverance and Curiosity rovers on Mars, while discovering mission details, rock sample findings, and the latest news from the Mars Exploration Program. Access rover photos, scientific discoveries, and multimedia content to stay updated on current Mars exploration activities.