Developer API

Stamp Duty + Registration API

A free public API for Indian property registration cost calculation. No signup, no API key. CORS-enabled. Best-effort uptime on Cloudflare Workers.

Quickstart

Three curls

# Calculate via POST (JSON body)
curl -X POST 'https://stampduty.krakelabsindia.com/api/calculate' \
  -H 'content-type: application/json' \
  -d '{"state":"MH","deedType":"sale","consideration":8500000,"isWomanBuyer":true,"cityTier":"metro"}'

# Or via GET (query params)
curl 'https://stampduty.krakelabsindia.com/api/calculate?state=MH&deedType=sale&consideration=8500000&isWomanBuyer=true&cityTier=metro'

# List supported states + deed types
curl 'https://stampduty.krakelabsindia.com/api/states'

# Dataset metadata
curl 'https://stampduty.krakelabsindia.com/api/meta'
Reference

Endpoints

MethodPathParamsDescription
POST/api/calculateJSON body — see schema belowCalculate stamp duty + registration fee.
GET/api/calculate?…Same fields as query paramsGET version (cache-friendly).
GET/api/statesList all states + their supported deed types. Use to populate UI dropdowns.
GET/api/metaDataset counts and snapshot date.
GET/openapi.jsonOpenAPI 3.1 spec. Drop into Swagger Editor or Postman.

Sample request — POST

POST /api/calculate
content-type: application/json

{
  "state": "MH",         // 2-letter code OR slug ("maharashtra")
  "deedType": "sale",     // sale | gift | gift-blood-relative | lease | mortgage | exchange | partition
  "consideration": 8500000,
  "isWomanBuyer": true,   // optional, default false
  "cityTier": "metro"     // optional: metro | other (only matters for states with tier split)
}

Sample response

{
  "state": { "code": "MH", "name": "Maharashtra" },
  "deedType": "sale",
  "deedLabel": "Sale deed",
  "consideration": 8500000,
  "cityTier": "metro",
  "isWomanBuyer": true,
  "stampDuty": 425000,
  "registrationFee": 30000,
  "total": 455000,
  "breakdown": [
    { "label": "Stamp duty (base)", "amount": 510000, "formula": "6% × ₹85,00,000 (metro)" },
    { "label": "Woman buyer rebate (-1%)", "amount": -85000, "formula": "-1% × ₹85,00,000" },
    { "label": "Registration fee", "amount": 30000, "formula": "1% × ₹85,00,000 (capped at ₹30,000)" }
  ],
  "sourceUrl": "https://igrmaharashtra.gov.in",
  "asOf": "2025-04-01",
  "honestyNotes": ["...", "..."]
}
Fair use

How to be a good citizen

  • Cache aggressively. State rates change rarely — responses are safe to cache for ~1 week.
  • Fair use, no hard rate limit.Stay under ~10 req/s sustained per origin. We don't currently enforce per-IP limits in code (Cloudflare's edge handles abuse), but reserve the right to block egregious patterns.
  • Surface the honesty notes.They're part of the response — pass them to your users so they verify with the source SRO.
  • No SLA. Best-effort free service.
Machine-readable

OpenAPI 3.1 spec

Paste https://stampduty.krakelabsindia.com/openapi.json into Swagger Editor or Postman to autogenerate clients.

GET /openapi.json