Docs / Language and text

IPC to BNS section finder API

Which section of the Bharatiya Nyaya Sanhita replaced IPC 302, and the same for CrPC to BNSS and the Evidence Act to BSA.

India's new criminal laws came into force on 1 July 2024: the Bharatiya Nyaya Sanhita (BNS) replaced the Indian Penal Code (IPC), the Bharatiya Nagarik Suraksha Sanhita (BNSS) the Code of Criminal Procedure (CrPC), and the Bharatiya Sakshya Adhiniyam (BSA) the Indian Evidence Act (IEA). Look a section up either way, or search the titles. From the Bureau of Police Research and Development's correspondence tables; the section titles are the Acts' own.

Base URL https://api.dharun.devNo key needed for most600 units a minute, 3000 with a free keyThis page as Markdown

A section and its counterpart

GET/v1/law/{law}/{section}

With a new law (bns, bnss, bsa), the section (all its subsections for 103; one for 103(1)) and the old section it stands for. With an old law (ipc, crpc, iea), every new section the old one went to. new_provision marks a section with no counterpart.

ParameterDescription
lawpath, requiredWhich law the section number belongs to. One of: bns, bnss, bsa, ipc, crpc, iea.
sectionpath, requiredSuch as 302, 498A, 103(1).

curl

curl "https://api.dharun.dev/v1/law/ipc/302?utm_medium=docs"

JavaScript

const response = await fetch("https://api.dharun.dev/v1/law/ipc/302?utm_medium=docs");
const body = await response.json();
if (!response.ok) throw new Error(body.error.message);
console.log(body.data);

Python

import requests

response = requests.get("https://api.dharun.dev/v1/law/ipc/302?utm_medium=docs", timeout=10)
body = response.json()
if not response.ok:
    raise RuntimeError(body["error"]["message"])
print(body["data"])
Try it here

Change the values and send the request from your browser. Needs JavaScript.

Response, with lists and long text shortened

{
  "data": [
    {
      "law": "bns",
      "section": "103(1)",
      "title": "Punishment for murder",
      "old_law": "ipc",
      "old_section": "302",
      "new_provision": false,
      "reference": "BNS 103(1)",
      "old_reference": "IPC 302"
    }
  ],
  "meta": {
    "total": 1,
    "source": {
      "name": "Correspondence tables of the new criminal laws (BNS-IPC, BNSS-CrPC, BSA-IEA)",
      "url": "https://www.keralaprisons.gov.in/userfiles/act-and-rules/comparison_summary_BNS_to_IPC.pdf",
      "licence": "Section correspondence and the Acts' section titles (facts and statute text); the tables' summaries are not used",
      "version": "BNS 3ad875b6, BNSS aa3e4914, BSA 7693f293 (SHA-256 of the PDFs)",
      "retrieved": "2026-11-11",
      "attribution": "Section correspondence from the comparison summaries of the Bureau of Police Research and Development (CAPT Bhopal). Check the Acts as published in the Gazette …"
    },
    "note": "From the Bureau of Police Research and Development's correspondence tables. A section of the old law can be spread over several new ones, and the reverse. The n…"
  }
}

Search section titles

GET/v1/law/{law}

The new law's sections whose titles contain the words (an old law's name searches its replacement), at most 50.

ParameterDescription
lawpath, requiredWhich law. One of: bns, bnss, bsa, ipc, crpc, iea.
qquery, required3 to 100 characters, such as cheating or bail.

curl

curl "https://api.dharun.dev/v1/law/bns?q=murder&utm_medium=docs"

JavaScript

const response = await fetch("https://api.dharun.dev/v1/law/bns?q=murder&utm_medium=docs");
const body = await response.json();
if (!response.ok) throw new Error(body.error.message);
console.log(body.data);

Python

import requests

response = requests.get("https://api.dharun.dev/v1/law/bns?q=murder&utm_medium=docs", timeout=10)
body = response.json()
if not response.ok:
    raise RuntimeError(body["error"]["message"])
print(body["data"])
Try it here

Change the values and send the request from your browser. Needs JavaScript.

Response, with lists and long text shortened

{
  "data": [
    {
      "law": "bns",
      "section": "87",
      "title": "Kidnapping or abducting in order to murder or for ransom, etc",
      "old_law": "ipc",
      "old_section": "366",
      "new_provision": false,
      "reference": "BNS 87",
      "old_reference": "IPC 366"
    },
    {
      "law": "bns",
      "section": "101",
      "title": "Murder",
      "old_law": "ipc",
      "old_section": "300",
      "new_provision": false,
      "reference": "BNS 101",
      "old_reference": "IPC 300"
    },
    {
      "law": "bns",
      "section": "103(1)",
      "title": "Punishment for murder",
      "old_law": "ipc",
      "old_section": "302",
      "new_provision": false,
      "reference": "BNS 103(1)",
      "old_reference": "IPC 302"
    }
  ],
  "meta": {
    "total": 9,
    "source": {
      "name": "Correspondence tables of the new criminal laws (BNS-IPC, BNSS-CrPC, BSA-IEA)",
      "url": "https://www.keralaprisons.gov.in/userfiles/act-and-rules/comparison_summary_BNS_to_IPC.pdf",
      "licence": "Section correspondence and the Acts' section titles (facts and statute text); the tables' summaries are not used",
      "version": "BNS 3ad875b6, BNSS aa3e4914, BSA 7693f293 (SHA-256 of the PDFs)",
      "retrieved": "2026-11-11",
      "attribution": "Section correspondence from the comparison summaries of the Bureau of Police Research and Development (CAPT Bhopal). Check the Acts as published in the Gazette …"
    },
    "note": "Titles of the Bharatiya Nyaya Sanhita, 2023 that contain the words, at most 50. From the Bureau of Police Research and Development's correspondence tables. A se…"
  }
}

Data source

Correspondence tables of the new criminal laws (BNS-IPC, BNSS-CrPC, BSA-IEA), BNS 3ad875b6, BNSS aa3e4914, BSA 7693f293 (SHA-256 of the PDFs). Retrieved 2026-11-11. Licence: Section correspondence and the Acts' section titles (facts and statute text); the tables' summaries are not used. Section correspondence from the comparison summaries of the Bureau of Police Research and Development (CAPT Bhopal). Check the Acts as published in the Gazette before relying on a section.

Using an AI assistant? Connect the MCP server and it can call this API by itself. Want every endpoint on one bench? Open the playground.