API referencev1.0.0Get a key
Home›API reference

Getting started

Base URL https://findmyvillage.devshiv.in/v1. Send your key as X-API-Key. Read-only, JSON, one envelope everywhere.

On this page
Endpoints
curl "https://findmyvillage.devshiv.in/v1/states" -H "X-API-Key: $LGD_API_KEY"
Envelope
{ "data": [ … ],
  "meta": { "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
            "lgd_export_date": "2026-09-12", "api_version": "1.0.0", "count": 2 } }

The contract

Three rules hold on every list and every row. Build the form around them and there is nothing left to special-case.

01
Empty list = “None of the listed”

A list is empty exactly when LGD has nothing at that level — a village with no Gram Panchayat, a body with no wards. Offer the one fallback and move on.

02
A repeated label comes back as every row, with a hint

Namesakes in one list are all returned; hint carries the block, Gram Panchayat, status and census code that tell them apart. Show “label — hint”.

03
notes says what LGD reports

In words, on every row; issues carries the codes. Nothing hidden or corrected. Names are Title Case; label_local is the local-script name or null.

Note: the data is served exactly as the Ministry publishes it. When two rows disagree, both are returned and the disagreement is a note — the API never picks a side for you.

Live and test keys

A key is lgd_live_… or lgd_test_…; the mode is in the key, and every response repeats it as meta.mode and the X-Key-Mode header.

Live keyTest key
Calls a monththe plan’s quota5,000, free on every plan
Requests a minutethe plan’s rate60
Page size50 rows50 rows
How far a collection pagesFree: the first 100 rows, a sample · paid plans: all of ithalf of every collection, and all of /issues — the exception cases
Billedyes, on paid plansnever

Test keys and the Free plan answer with the same data as everyone else — the whole directory, by code, and every nested list an address form needs — but the big collections are sample-sized: the Free plan sees the first 100 rows, a test key half of them plus every flagged row in /issues, so the exception handling can be tested too. meta.reach says how far the key goes; paging past it answers 403 sample_limit.

Errors, limits, paging

StatusCodeMeaning
401unauthorizedMissing, invalid or revoked key
402plan_lapsedNo active plan, and the grace period is over
402quota_exceededThe plan's monthly calls are used up; resets on the 1st
403sample_limitThe key is paging further into a collection than its plan or mode allows
404not_foundNo entity with that code, or no such endpoint
429rate_limitedPer-minute limit of the plan; Retry-After says when

Large collections take limit (up to 50, the default) and offset; meta.total is the size of the whole result whatever the key may page through. Every response carries X-RateLimit-Remaining, X-Quota-Used and X-Key-Mode. Answers may be cached for a minute.

States

GET/states
All states

Every state in the directory with its counts and the date LGD exported it. The first dropdown of an address form.

Example
GET /states
{
  "data": [
    {
      "code": 27,
      "name": "Maharashtra",
      "counts": {
        "wards": 106752,
        "blocks": 352,
        "villages": 44911,
        "districts": 36,
        "village_gp": 43367,
        "local_bodies": 28888,
        "ulb_coverage": 435,
        "sub_districts": 358
      },
      "loaded_at": "2026-09-12T10:56:10.782473+05:30",
      "lgd_export_date": "2026-09-12"
    },
    {
      "code": 5,
      "name": "Uttarakhand",
      "counts": {
        "wards": 61697,
        "blocks": 95,
        "villages": 17343,
        "districts": 13,
        "village_gp": 15938,
        "local_bodies": 8041,
        "ulb_coverage": 180,
        "sub_districts": 129
      },
      "loaded_at": "2026-09-15T00:06:01.122453+05:30",
      "lgd_export_date": "2026-09-12"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 2
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/states" -H "X-API-Key: $LGD_API_KEY"
GET/states/{state_code}
State by code

One state with its counts and data freshness.

ParameterInType
state_codepathinteger
Example
GET /states/{state_code}
{
  "data": {
    "code": 5,
    "name": "Uttarakhand",
    "counts": {
      "wards": 61697,
      "blocks": 95,
      "villages": 17343,
      "districts": 13,
      "village_gp": 15938,
      "local_bodies": 8041,
      "ulb_coverage": 180,
      "sub_districts": 129
    },
    "loaded_at": "2026-09-15T00:06:01.122453+05:30",
    "lgd_export_date": "2026-09-12"
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/states/5" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/states/{state_code}/districts
Districts of a state

The district dropdown once a state is chosen. Same rows as GET /districts?state=.

ParameterInType
state_codepathinteger
Example
GET /states/{state_code}/districts
{
  "data": [
    {
      "code": 45,
      "name": "Almora",
      "name_local": null,
      "census_2001_code": "09",
      "census_2011_code": "064"
    },
    {
      "code": 46,
      "name": "Bageshwar",
      "name_local": null,
      "census_2001_code": "08",
      "census_2011_code": "063"
    },
    {
      "code": 47,
      "name": "Chamoli",
      "name_local": null,
      "census_2001_code": "02",
      "census_2011_code": "057"
    },
    {
      "code": 48,
      "name": "Champawat",
      "name_local": null,
      "census_2001_code": "10",
      "census_2011_code": "065"
    },
    {
      "code": 49,
      "name": "Dehradun",
      "name_local": null,
      "census_2001_code": "05",
      "census_2011_code": "060"
    },
    {
      "code": 50,
      "name": "Haridwar",
      "name_local": null,
      "census_2001_code": "13",
      "census_2011_code": "068"
    },
    {
      "code": 51,
      "name": "Nainital",
      "name_local": null,
      "census_2001_code": "11",
      "census_2011_code": "066"
    },
    {
      "code": 52,
      "name": "Pauri Garhwal",
      "name_local": null,
      "census_2001_code": "06",
      "census_2011_code": "061"
    },
    {
      "code": 53,
      "name": "Pithoragarh",
      "name_local": null,
      "census_2001_code": "07",
      "census_2011_code": "062"
    },
    {
      "code": 54,
      "name": "Rudraprayag",
      "name_local": "रूद्रप्रयाग",
      "census_2001_code": "03",
      "census_2011_code": "058"
    },
    {
      "code": 55,
      "name": "Tehri Garhwal",
      "name_local": null,
      "census_2001_code": "04",
      "census_2011_code": "059"
    },
    {
      "code": 56,
      "name": "Udham Singh Nagar",
      "name_local": null,
      "census_2001_code": "12",
      "census_2011_code": "067"
    },
    {
      "code": 57,
      "name": "Uttarkashi",
      "name_local": null,
      "census_2001_code": "01",
      "census_2011_code": "056"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 13
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/states/5/districts" -H "X-API-Key: $LGD_API_KEY"

Districts

GET/districts
All districts

Every district, optionally of one state.

ParameterInType
statequeryinteger · optional
Example · state
GET /districts
{
  "data": [
    {
      "code": 45,
      "name": "Almora",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "09",
      "census_2011_code": "064"
    },
    {
      "code": 46,
      "name": "Bageshwar",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "08",
      "census_2011_code": "063"
    },
    {
      "code": 47,
      "name": "Chamoli",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "02",
      "census_2011_code": "057"
    },
    {
      "code": 48,
      "name": "Champawat",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "10",
      "census_2011_code": "065"
    },
    {
      "code": 49,
      "name": "Dehradun",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "05",
      "census_2011_code": "060"
    },
    {
      "code": 50,
      "name": "Haridwar",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "13",
      "census_2011_code": "068"
    },
    {
      "code": 51,
      "name": "Nainital",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "11",
      "census_2011_code": "066"
    },
    {
      "code": 52,
      "name": "Pauri Garhwal",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "06",
      "census_2011_code": "061"
    },
    {
      "code": 53,
      "name": "Pithoragarh",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "07",
      "census_2011_code": "062"
    },
    {
      "code": 54,
      "name": "Rudraprayag",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": "रूद्रप्रयाग",
      "census_2001_code": "03",
      "census_2011_code": "058"
    },
    {
      "code": 55,
      "name": "Tehri Garhwal",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "04",
      "census_2011_code": "059"
    },
    {
      "code": 56,
      "name": "Udham Singh Nagar",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "12",
      "census_2011_code": "067"
    },
    {
      "code": 57,
      "name": "Uttarkashi",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "name_local": null,
      "census_2001_code": "01",
      "census_2011_code": "056"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 13
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/districts?state=5" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/districts/{district_code}
District by code

A district with its state, its Zilla Parishad, and counts of what it holds.

ParameterInType
district_codepathinteger
Example
GET /districts/{district_code}
{
  "data": {
    "code": 45,
    "name": "Almora",
    "state": {
      "code": 5,
      "name": "Uttarakhand"
    },
    "counts": {
      "blocks": 11,
      "villages": 2302,
      "urban_bodies": 6,
      "sub_districts": 16
    },
    "name_local": null,
    "zilla_parishad": {
      "code": 45,
      "name": "Almora"
    },
    "census_2001_code": "09",
    "census_2011_code": "064"
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/districts/45" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/districts/{district_code}/sub-districts
Sub-districts of a district

The tehsil / taluka dropdown. Empty where LGD has none (Mumbai): offer "None of the listed".

ParameterInType
district_codepathinteger
Example
GET /districts/{district_code}/sub-districts
{
  "data": [
    {
      "code": 330,
      "name": "Almora",
      "name_local": null,
      "census_2001_code": "0003",
      "census_2011_code": "00330"
    },
    {
      "code": 6341,
      "name": "Bagwalipokhar",
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 333,
      "name": "Bhanoli",
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00333"
    },
    {
      "code": 325,
      "name": "Bhikiasain",
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00325"
    },
    {
      "code": 326,
      "name": "Chaukhutiya",
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00326"
    },
    {
      "code": 6338,
      "name": "Dhaulchhina",
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 6342,
      "name": "Dhyari",
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 329,
      "name": "Dwarahat",
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00329"
    },
    {
      "code": 332,
      "name": "Jainti",
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00332"
    },
    {
      "code": 6340,
      "name": "Jalali",
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 6368,
      "name": "Lamgada",
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 6339,
      "name": "Machhor",
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 328,
      "name": "Ranikhet",
      "name_local": null,
      "census_2001_code": "2",
      "census_2011_code": "00328"
    },
    {
      "code": 331,
      "name": "Someshwar",
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00331"
    },
    {
      "code": 327,
      "name": "Sult",
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00327"
    },
    {
      "code": 6330,
      "name": "Syalde",
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 16
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/districts/45/sub-districts" -H "X-API-Key: $LGD_API_KEY"
GET/districts/{district_code}/blocks
Blocks of a district

Development blocks with their Block Panchayat and what LGD reports about them.

ParameterInType
district_codepathinteger
Example
GET /districts/{district_code}/blocks
{
  "data": [
    {
      "code": 4511,
      "name": "Ambegaon",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4866,
        "name": "Ambegaon"
      }
    },
    {
      "code": 4512,
      "name": "Baramati",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4867,
        "name": "Baramati"
      }
    },
    {
      "code": 4513,
      "name": "Bhor",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4868,
        "name": "Bhor"
      }
    },
    {
      "code": 4514,
      "name": "Daund",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4869,
        "name": "Daund"
      }
    },
    {
      "code": 4515,
      "name": "Haveli",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4870,
        "name": "Haveli"
      }
    },
    {
      "code": 4516,
      "name": "Indapur",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4871,
        "name": "Indapur"
      }
    },
    {
      "code": 4517,
      "name": "Junnar",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4872,
        "name": "Junnar"
      }
    },
    {
      "code": 4518,
      "name": "Khed",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4873,
        "name": "Khed"
      }
    },
    {
      "code": 4519,
      "name": "Maval",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4874,
        "name": "Maval"
      }
    },
    {
      "code": 4520,
      "name": "Mulshi",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4875,
        "name": "Mulshi"
      }
    },
    {
      "code": 4521,
      "name": "Pune City",
      "notes": [
        "No Block Panchayat In LGD",
        "No Villages In LGD"
      ],
      "name_local": null,
      "block_panchayat": null
    },
    {
      "code": 4522,
      "name": "Purandar",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4877,
        "name": "Purandar"
      }
    },
    {
      "code": 4523,
      "name": "Shirur",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4878,
        "name": "Shirur"
      }
    },
    {
      "code": 4524,
      "name": "Velhe",
      "notes": [],
      "name_local": null,
      "block_panchayat": {
        "code": 4879,
        "name": "Velhe"
      }
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 14
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/districts/490/blocks" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

Sub-districts

GET/sub-districts
All sub-districts

Every tehsil / taluka, optionally of one state or district.

ParameterInType
statequeryinteger · optional
districtqueryinteger · optional
Example · state, district
GET /sub-districts
{
  "data": [
    {
      "code": 330,
      "name": "Almora",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "0003",
      "census_2011_code": "00330"
    },
    {
      "code": 6341,
      "name": "Bagwalipokhar",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 333,
      "name": "Bhanoli",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00333"
    },
    {
      "code": 325,
      "name": "Bhikiasain",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00325"
    },
    {
      "code": 326,
      "name": "Chaukhutiya",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00326"
    },
    {
      "code": 6338,
      "name": "Dhaulchhina",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 6342,
      "name": "Dhyari",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 329,
      "name": "Dwarahat",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00329"
    },
    {
      "code": 332,
      "name": "Jainti",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00332"
    },
    {
      "code": 6340,
      "name": "Jalali",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 6368,
      "name": "Lamgada",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 6339,
      "name": "Machhor",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    },
    {
      "code": 328,
      "name": "Ranikhet",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "2",
      "census_2011_code": "00328"
    },
    {
      "code": 331,
      "name": "Someshwar",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00331"
    },
    {
      "code": 327,
      "name": "Sult",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": "0",
      "census_2011_code": "00327"
    },
    {
      "code": 6330,
      "name": "Syalde",
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "census_2001_code": null,
      "census_2011_code": "00000"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 16
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/sub-districts?district=45" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/sub-districts/{sub_district_code}
Sub-district by code

A tehsil with its district and state and counts of villages and urban bodies.

ParameterInType
sub_district_codepathinteger
Example
GET /sub-districts/{sub_district_code}
{
  "data": {
    "code": 330,
    "name": "Almora",
    "state": {
      "code": 5,
      "name": "Uttarakhand"
    },
    "counts": {
      "villages": 289,
      "urban_bodies": 2
    },
    "district": {
      "code": 45,
      "name": "Almora"
    },
    "name_local": null,
    "census_2001_code": "0003",
    "census_2011_code": "00330"
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/sub-districts/330" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/sub-districts/{sub_district_code}/villages
Villages of a sub-district, as dropdown options

Every village of the tehsil. When two share a name both are returned and hint says what tells them apart; show label — hint. notes is what LGD reports about the village, in words; still offer it. Empty means LGD has no villages here: offer "None of the listed".

ParameterInType
sub_district_codepathinteger
qquerystring · optional
Example · q
GET /sub-districts/{sub_district_code}/villages
{
  "data": [
    {
      "code": 53003,
      "hint": "Dhauladevi Block · GP Aarchali · Census 053003 · LGD 53003",
      "block": {
        "code": 355,
        "name": "Dhauladevi"
      },
      "label": "Chhana",
      "notes": [
        "Another Village Of This Name In This Sub-District"
      ],
      "status": "Inhabitant",
      "label_local": null,
      "gram_panchayat": "Aarchali",
      "census_2011_code": "053003"
    },
    {
      "code": 53075,
      "hint": "Hawalbag Block · GP Chhana · Census 053075 · LGD 53075",
      "block": {
        "code": 357,
        "name": "Hawalbag"
      },
      "label": "Chhana",
      "notes": [
        "Another Village Of This Name In This Sub-District"
      ],
      "status": "Inhabitant",
      "label_local": null,
      "gram_panchayat": "Chhana",
      "census_2011_code": "053075"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 2
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/sub-districts/330/villages?q=chh" -H "X-API-Key: $LGD_API_KEY"
GET/sub-districts/{sub_district_code}/urban-bodies
Urban bodies covering a sub-district

Municipal Corporations, Municipalities, Nagar Panchayats and Cantonment Boards whose area falls in the tehsil, plus those LGD places at district level only (coverage). Empty for a purely rural tehsil.

ParameterInType
sub_district_codepathinteger
Example
GET /sub-districts/{sub_district_code}/urban-bodies
{
  "data": [
    {
      "code": 248485,
      "type": "Municipal Corporation",
      "label": "Haridwar",
      "notes": [
        "Area Spans Two Districts In LGD"
      ],
      "coverage": "This Tehsil",
      "label_local": null
    },
    {
      "code": 262858,
      "type": "Municipality",
      "label": "Shivalik Nagar",
      "notes": [],
      "coverage": "This Tehsil",
      "label_local": null
    },
    {
      "code": 299749,
      "type": "Nagar Panchayat",
      "label": "Padali Gurjar",
      "notes": [
        "Coverage Given At District Level Only"
      ],
      "coverage": "District Only",
      "label_local": null
    },
    {
      "code": 299529,
      "type": "Nagar Panchayat",
      "label": "Rampur",
      "notes": [
        "Coverage Given At District Level Only"
      ],
      "coverage": "District Only",
      "label_local": null
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 4
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/sub-districts/354/urban-bodies" -H "X-API-Key: $LGD_API_KEY"

Blocks

GET/blocks
All blocks

Every development block, optionally of one state or district, with its Block Panchayat.

ParameterInType
statequeryinteger · optional
districtqueryinteger · optional
Example · state, district
GET /blocks
{
  "data": [
    {
      "code": 352,
      "name": "Bhaisiya Chhana",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 935,
        "name": "Bhaisiya Chhana"
      }
    },
    {
      "code": 353,
      "name": "Bhikiyasain",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 936,
        "name": "Bhikiyasain"
      }
    },
    {
      "code": 354,
      "name": "Chaukhutiya",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 937,
        "name": "Chaukhutiya"
      }
    },
    {
      "code": 355,
      "name": "Dhauladevi",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 938,
        "name": "Dhauladevi"
      }
    },
    {
      "code": 356,
      "name": "Dwarahat",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 939,
        "name": "Dwarahat"
      }
    },
    {
      "code": 357,
      "name": "Hawalbag",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 940,
        "name": "Hawalbag"
      }
    },
    {
      "code": 358,
      "name": "Lamgara",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 941,
        "name": "Lamgara"
      }
    },
    {
      "code": 359,
      "name": "Sult",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 942,
        "name": "Sult"
      }
    },
    {
      "code": 360,
      "name": "Syaldey",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 943,
        "name": "Syaldey"
      }
    },
    {
      "code": 361,
      "name": "Takula",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 944,
        "name": "Takula"
      }
    },
    {
      "code": 362,
      "name": "Tarikhet",
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "block_panchayat": {
        "code": 945,
        "name": "Tarikhet"
      }
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 11
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/blocks?district=45" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/blocks/{block_code}
Block by code

A block with its district, its Block Panchayat and how many villages it covers.

ParameterInType
block_codepathinteger
Example
GET /blocks/{block_code}
{
  "data": {
    "code": 357,
    "name": "Hawalbag",
    "notes": [],
    "state": {
      "code": 5,
      "name": "Uttarakhand"
    },
    "district": {
      "code": 45,
      "name": "Almora"
    },
    "villages": 234,
    "name_local": null,
    "block_panchayat": {
      "code": 940,
      "name": "Hawalbag"
    }
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/blocks/357" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/blocks/{block_code}/villages
Villages a block covers

Paginated.

ParameterInType
block_codepathinteger
limitqueryinteger · optional
offsetqueryinteger · optional
Example · limit, offset
GET /blocks/{block_code}/villages
{
  "data": [
    {
      "code": 53017,
      "name": ".Batgal Routela",
      "block": {
        "code": 357,
        "name": "Hawalbag"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "issues": [],
      "status": "Inhabitant",
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "sub_district": {
        "code": 330,
        "name": "Almora"
      },
      "gram_panchayat": "Badgal Rautela",
      "name_ambiguity": {
        "unique_within": "state",
        "same_name_in_state": 1,
        "same_name_in_district": 1,
        "same_name_in_sub_district": 1
      },
      "census_2001_code": "01306600",
      "census_2011_code": "053017"
    },
    {
      "code": 53034,
      "name": "Adhar Muafi",
      "block": {
        "code": 357,
        "name": "Hawalbag"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "issues": [],
      "status": "Inhabitant",
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "sub_district": {
        "code": 330,
        "name": "Almora"
      },
      "gram_panchayat": "Matela (Aghar)",
      "name_ambiguity": {
        "unique_within": "state",
        "same_name_in_state": 1,
        "same_name_in_district": 1,
        "same_name_in_sub_district": 1
      },
      "census_2001_code": "01308400",
      "census_2011_code": "053034"
    },
    {
      "code": 53069,
      "name": "Adheli Sunar",
      "block": {
        "code": 357,
        "name": "Hawalbag"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "issues": [],
      "status": "Inhabitant",
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "sub_district": {
        "code": 330,
        "name": "Almora"
      },
      "gram_panchayat": "Syali",
      "name_ambiguity": {
        "unique_within": "state",
        "same_name_in_state": 1,
        "same_name_in_district": 1,
        "same_name_in_sub_district": 1
      },
      "census_2001_code": "01312000",
      "census_2011_code": "053069"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "total": 234,
    "limit": 3,
    "offset": 0,
    "count": 3
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/blocks/357/villages?limit=3&offset=0" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

Villages

GET/villages
All villages

Every village, filtered by state, district, sub-district, block, status or a name prefix. Paginated; meta.total is the size of the whole result. Each row carries its chain and how ambiguous its name is, so a namesake elsewhere is never mistaken for it.

ParameterInType
statequeryinteger · optional
districtqueryinteger · optional
sub_districtqueryinteger · optional
blockqueryinteger · optional
statusquerystring · optional
qquerystring · optional
limitqueryinteger · optional
offsetqueryinteger · optional
Example · state, district, sub_district, block, status, q, limit, offset
GET /villages
{
  "data": [
    {
      "code": 53003,
      "name": "Chhana",
      "block": {
        "code": 355,
        "name": "Dhauladevi"
      },
      "notes": [
        "Another Village Of This Name In This Sub-District"
      ],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "issues": [
        "village_name_clash"
      ],
      "status": "Inhabitant",
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "sub_district": {
        "code": 330,
        "name": "Almora"
      },
      "gram_panchayat": "Aarchali",
      "name_ambiguity": {
        "unique_within": "none",
        "same_name_in_state": 7,
        "same_name_in_district": 5,
        "same_name_in_sub_district": 2
      },
      "census_2001_code": "01305200",
      "census_2011_code": "053003"
    },
    {
      "code": 53075,
      "name": "Chhana",
      "block": {
        "code": 357,
        "name": "Hawalbag"
      },
      "notes": [
        "Another Village Of This Name In This Sub-District"
      ],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "issues": [
        "village_name_clash"
      ],
      "status": "Inhabitant",
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "sub_district": {
        "code": 330,
        "name": "Almora"
      },
      "gram_panchayat": "Chhana",
      "name_ambiguity": {
        "unique_within": "none",
        "same_name_in_state": 7,
        "same_name_in_district": 5,
        "same_name_in_sub_district": 2
      },
      "census_2001_code": "01312600",
      "census_2011_code": "053075"
    },
    {
      "code": 52787,
      "name": "Chhana",
      "block": {
        "code": 356,
        "name": "Dwarahat"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "issues": [],
      "status": "Inhabitant",
      "district": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "sub_district": {
        "code": 6341,
        "name": "Bagwalipokhar"
      },
      "gram_panchayat": "Chana",
      "name_ambiguity": {
        "unique_within": "sub_district",
        "same_name_in_state": 7,
        "same_name_in_district": 5,
        "same_name_in_sub_district": 1
      },
      "census_2001_code": "01238700",
      "census_2011_code": "052787"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "total": 12,
    "limit": 3,
    "offset": 0,
    "count": 3
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/villages?state=5&q=Chhana&limit=3&offset=0" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/villages/{village_code}
Village by code

The village fully resolved: state, district, sub-district, block, its Gram Panchayat(s) with their Block Panchayat and Zilla Parishad, how ambiguous its name is at each scope and what distinguishes it from a namesake, plus what LGD reports about it (issues as codes, notes in words).

ParameterInType
village_codepathinteger
Example
GET /villages/{village_code}
{
  "data": {
    "code": 53075,
    "name": "Chhana",
    "block": {
      "code": 357,
      "name": "Hawalbag"
    },
    "notes": [
      "Another Village Of This Name In This Sub-District"
    ],
    "state": {
      "code": 5,
      "name": "Uttarakhand"
    },
    "issues": [
      "village_name_clash"
    ],
    "status": "Inhabitant",
    "district": {
      "code": 45,
      "name": "Almora",
      "name_local": null
    },
    "name_local": null,
    "lgd_version": 1,
    "sub_district": {
      "code": 330,
      "name": "Almora",
      "name_local": null
    },
    "name_ambiguity": {
      "unique_within": "none",
      "distinguished_by": [
        "gram_panchayat",
        "block",
        "census_2011_code",
        "census_2001_code"
      ],
      "same_name_in_state": 7,
      "same_name_in_district": 5,
      "same_name_in_sub_district": 2
    },
    "gram_panchayats": [
      {
        "code": 21083,
        "name": "Chhana",
        "name_local": null,
        "zilla_parishad": {
          "code": 45,
          "name": "Almora",
          "district_code": 45
        },
        "block_panchayat": {
          "code": 940,
          "name": "Hawalbag",
          "block_code": 357
        }
      }
    ],
    "census_2001_code": "01312600",
    "census_2011_code": "053075"
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/villages/53075" -H "X-API-Key: $LGD_API_KEY"
GET/villages/{village_code}/gram-panchayats
Gram Panchayat(s) of a village

Usually one, sometimes several, sometimes none — then the list is empty and a form offers "None of the listed". flag is set when LGD's mapping is suspect; the option is still returned.

ParameterInType
village_codepathinteger
Example
GET /villages/{village_code}/gram-panchayats
{
  "data": [
    {
      "code": 191050,
      "flag": "Zilla Parishad Of Another District",
      "label": "Kari",
      "notes": [],
      "label_local": "कारी",
      "zilla_parishad": "Dharashiv",
      "block_panchayat": "Dharashiv"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 1
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/villages/562051/gram-panchayats" -H "X-API-Key: $LGD_API_KEY"

Local bodies

GET/local-bodies
All local bodies

Every elected body — Zilla Parishads, Block Panchayats, Gram Panchayats, Municipal Corporations, Municipalities, Nagar Panchayats, Cantonment Boards — filtered by state, district, tier, type, parent or name prefix. Paginated.

ParameterInType
statequeryinteger · optional
districtqueryinteger · optional
tierquerystring · optional
typequeryinteger · optional
parentqueryinteger · optional
qquerystring · optional
limitqueryinteger · optional
offsetqueryinteger · optional
Example · state, district, tier, type, parent, q, limit, offset
GET /local-bodies
{
  "data": [
    {
      "code": 248449,
      "name": "Almora",
      "type": {
        "code": 4,
        "name": "Municipal Corporation",
        "tier": "ULB"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "wards": 40,
      "parent": null,
      "name_local": null,
      "governs_block": null,
      "governs_district": null
    },
    {
      "code": 277190,
      "name": "Ranikhet Chiliyanaula",
      "type": {
        "code": 5,
        "name": "Municipality",
        "tier": "ULB"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "wards": 7,
      "parent": null,
      "name_local": "रानीखेत चिलियानौला",
      "governs_block": null,
      "governs_district": null
    },
    {
      "code": 274457,
      "name": "Bhikiyasain",
      "type": {
        "code": 7,
        "name": "Nagar Panchayat",
        "tier": "ULB"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "wards": 4,
      "parent": null,
      "name_local": null,
      "governs_block": null,
      "governs_district": null
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "total": 6,
    "limit": 3,
    "offset": 0,
    "count": 3
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/local-bodies?state=5&district=45&tier=ULB&limit=3&offset=0" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/local-bodies/{local_body_code}
Local body by code

Any elected body with its type, parent chain, what it governs (district for a Zilla Parishad, block for a Block Panchayat) or covers (sub-districts for an urban body), and counts of villages and wards.

ParameterInType
local_body_codepathinteger
Example
GET /local-bodies/{local_body_code}
{
  "data": {
    "code": 248485,
    "name": "Haridwar",
    "type": {
      "code": 4,
      "name": "Municipal Corporation",
      "tier": "ULB"
    },
    "notes": [
      "Area Spans Two Districts In LGD"
    ],
    "state": {
      "code": 5,
      "name": "Uttarakhand"
    },
    "counts": {
      "wards": 60,
      "children": 0,
      "villages": 0
    },
    "issues": [
      "ulb_coverage_multi_district"
    ],
    "parent": null,
    "coverage": [
      {
        "district": {
          "code": 46,
          "name": "Bageshwar"
        },
        "sub_district": {
          "code": 323,
          "name": "Bageshwar"
        }
      },
      {
        "district": {
          "code": 50,
          "name": "Haridwar"
        },
        "sub_district": {
          "code": 354,
          "name": "Hardwar"
        }
      },
      {
        "district": {
          "code": 50,
          "name": "Haridwar"
        },
        "sub_district": {
          "code": 6352,
          "name": "Narsan"
        }
      }
    ],
    "name_local": null,
    "lgd_version": 7,
    "governs_block": null,
    "census_2001_code": "800359",
    "governs_district": null
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/local-bodies/248485" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/local-bodies/{local_body_code}/children
Bodies under a body

The Block Panchayats of a Zilla Parishad, or the Gram Panchayats of a Block Panchayat. Paginated.

ParameterInType
local_body_codepathinteger
limitqueryinteger · optional
offsetqueryinteger · optional
Example · limit, offset
GET /local-bodies/{local_body_code}/children
{
  "data": [
    {
      "code": 935,
      "name": "Bhaisiya Chhana",
      "type": {
        "code": 2,
        "name": "Block Panchayat",
        "tier": "PRI"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "wards": 21,
      "parent": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "governs_block": {
        "code": 352,
        "name": "Bhaisiya Chhana"
      },
      "governs_district": null
    },
    {
      "code": 936,
      "name": "Bhikiyasain",
      "type": {
        "code": 2,
        "name": "Block Panchayat",
        "tier": "PRI"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "wards": 24,
      "parent": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "governs_block": {
        "code": 353,
        "name": "Bhikiyasain"
      },
      "governs_district": null
    },
    {
      "code": 937,
      "name": "Chaukhutiya",
      "type": {
        "code": 2,
        "name": "Block Panchayat",
        "tier": "PRI"
      },
      "notes": [],
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "wards": 33,
      "parent": {
        "code": 45,
        "name": "Almora"
      },
      "name_local": null,
      "governs_block": {
        "code": 354,
        "name": "Chaukhutiya"
      },
      "governs_district": null
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "total": 11,
    "limit": 3,
    "offset": 0,
    "count": 3
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/local-bodies/45/children?limit=3&offset=0" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/local-bodies/{local_body_code}/villages
Villages a Gram Panchayat governs

Empty for any body that is not a Gram Panchayat. Paginated.

ParameterInType
local_body_codepathinteger
limitqueryinteger · optional
offsetqueryinteger · optional
Example · limit, offset
GET /local-bodies/{local_body_code}/villages
{
  "data": [
    {
      "code": 562051,
      "name": "Kari",
      "block": {
        "code": 4579,
        "name": "Barshi"
      },
      "notes": [
        "Gram Panchayat Is Under A Different Block",
        "Gram Panchayat Is Under Another District's Zilla Parishad"
      ],
      "state": {
        "code": 27,
        "name": "Maharashtra"
      },
      "issues": [
        "gp_block_mismatch",
        "gp_other_district"
      ],
      "status": "Inhabitant",
      "district": {
        "code": 496,
        "name": "Solapur"
      },
      "name_local": "कारी",
      "sub_district": {
        "code": 4246,
        "name": "Barshi"
      },
      "gram_panchayat": "Kari",
      "name_ambiguity": {
        "unique_within": "district",
        "same_name_in_state": 4,
        "same_name_in_district": 1,
        "same_name_in_sub_district": 1
      },
      "census_2001_code": "03687100",
      "census_2011_code": "562051"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "total": 1,
    "limit": 3,
    "offset": 0,
    "count": 1
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/local-bodies/191050/villages?limit=3&offset=0" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/local-bodies/{local_body_code}/wards
Wards of a local body, as dropdown options

In ward-number order. Empty when LGD lists none: offer "None of the listed". A ward LGD entered twice comes back twice, each hinted with its code.

ParameterInType
local_body_codepathinteger
Example
GET /local-bodies/{local_body_code}/wards
{
  "data": [
    {
      "code": 131091,
      "hint": null,
      "label": "2 · Azad Ward",
      "notes": [],
      "label_local": null,
      "ward_number": "2"
    },
    {
      "code": 131093,
      "hint": "Duplicate Entry In LGD, Code 131093",
      "label": "3 · Gandhi Ward",
      "notes": [
        "Duplicate Entry In LGD"
      ],
      "label_local": null,
      "ward_number": "3"
    },
    {
      "code": 131097,
      "hint": "Duplicate Entry In LGD, Code 131097",
      "label": "3 · Gandhi Ward",
      "notes": [
        "Duplicate Entry In LGD"
      ],
      "label_local": "गांधी",
      "ward_number": "3"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 3
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/local-bodies/172277/wards" -H "X-API-Key: $LGD_API_KEY"

Wards

GET/wards
All wards

Every ward, filtered by state, local body or name prefix. Paginated.

ParameterInType
statequeryinteger · optional
local_bodyqueryinteger · optional
qquerystring · optional
limitqueryinteger · optional
offsetqueryinteger · optional
Example · state, local_body, q, limit, offset
GET /wards
{
  "data": [
    {
      "code": 149242,
      "name": "Gandhi Wared",
      "notes": [],
      "state": {
        "code": 27,
        "name": "Maharashtra"
      },
      "local_body": {
        "code": 4738,
        "name": "Kurkheda",
        "tier": "PRI",
        "type": "Block Panchayat"
      },
      "name_local": null,
      "ward_number": "2"
    },
    {
      "code": 699704,
      "name": "Gandhinagar",
      "notes": [],
      "state": {
        "code": 27,
        "name": "Maharashtra"
      },
      "local_body": {
        "code": 4784,
        "name": "Karveer",
        "tier": "PRI",
        "type": "Block Panchayat"
      },
      "name_local": "गांधीनगर",
      "ward_number": "8"
    },
    {
      "code": 137699,
      "name": "Gandhi Ward 2",
      "notes": [],
      "state": {
        "code": 27,
        "name": "Maharashtra"
      },
      "local_body": {
        "code": 167672,
        "name": "Savarkute",
        "tier": "PRI",
        "type": "Village Panchayat"
      },
      "name_local": null,
      "ward_number": "02"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "total": 481,
    "limit": 3,
    "offset": 0,
    "count": 3
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/wards?state=27&q=Gandhi&limit=3&offset=0" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/wards/{ward_code}
Ward by code

A ward with the body it belongs to and that body's parent.

ParameterInType
ward_codepathinteger
Example
GET /wards/{ward_code}
{
  "data": {
    "code": 131093,
    "name": "Gandhi Ward",
    "notes": [
      "Duplicate Entry In LGD"
    ],
    "state": {
      "code": 27,
      "name": "Maharashtra"
    },
    "issues": [
      "ward_duplicate_entry"
    ],
    "local_body": {
      "code": 172277,
      "name": "Gudegaon",
      "tier": "PRI",
      "type": "Village Panchayat",
      "parent": {
        "code": 4694,
        "name": "Pauni"
      }
    },
    "name_local": null,
    "ward_number": "3"
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/wards/131093" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

Reference

GET/local-body-types
All local body types

LGD's type codes and which tier each belongs to.

Example
GET /local-body-types
{
  "data": [
    {
      "code": 1,
      "name": "Zilla Parishad",
      "tier": "PRI",
      "bodies": 47
    },
    {
      "code": 2,
      "name": "Block Panchayat",
      "tier": "PRI",
      "bodies": 446
    },
    {
      "code": 3,
      "name": "Village Panchayat",
      "tier": "PRI",
      "bodies": 35898
    },
    {
      "code": 4,
      "name": "Municipal Corporation",
      "tier": "ULB",
      "bodies": 40
    },
    {
      "code": 5,
      "name": "Municipality",
      "tier": "ULB",
      "bodies": 289
    },
    {
      "code": 7,
      "name": "Nagar Panchayat",
      "tier": "ULB",
      "bodies": 200
    },
    {
      "code": 8,
      "name": "Cantonment Board",
      "tier": "ULB",
      "bodies": 9
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 7
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/local-body-types" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/local-body-types/{type_code}
Local body type by code
ParameterInType
type_codepathinteger
Example
GET /local-body-types/{type_code}
{
  "data": {
    "code": 8,
    "name": "Cantonment Board",
    "tier": "ULB",
    "bodies": 9
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/local-body-types/8" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/issues
All data-quality findings

Where LGD's own tables contradict each other or fall silent, one row per finding per entity, with the wording the API shows as notes. Filter by state, kind or entity. Paginated.

ParameterInType
statequeryinteger · optional
kindquerystring · optional
entityquerystring · optional
limitqueryinteger · optional
offsetqueryinteger · optional
Example · state, kind, entity, limit, offset
GET /issues
{
  "data": [
    {
      "id": 14721,
      "kind": "gp_other_district",
      "text": "Gram Panchayat Is Under Another District's Zilla Parishad",
      "detail": {
        "gp_district": 48,
        "gram_panchayat": 260409,
        "village_district": 55
      },
      "entity": "village",
      "state_code": 5,
      "entity_code": 43892
    },
    {
      "id": 14722,
      "kind": "gp_other_district",
      "text": "Gram Panchayat Is Under Another District's Zilla Parishad",
      "detail": {
        "gp_district": 55,
        "gram_panchayat": 26255,
        "village_district": 52
      },
      "entity": "village",
      "state_code": 5,
      "entity_code": 48746
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "total": 2,
    "limit": 100,
    "offset": 0,
    "count": 2
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/issues?state=5&kind=gp_other_district&limit=100&offset=0" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/issues/{id}
Finding by id
ParameterInType
idpathinteger
Example
GET /issues/{id}
{
  "data": {
    "id": 24,
    "kind": "gp_other_district",
    "text": "Gram Panchayat Is Under Another District's Zilla Parishad",
    "detail": {
      "gp_district": 488,
      "gram_panchayat": 191050,
      "village_district": 496
    },
    "entity": "village",
    "state_code": 27,
    "entity_code": 562051
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/issues/24" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/imports
All loads

When each state's data was exported by LGD and loaded here, with counts. Newest first.

ParameterInType
statequeryinteger · optional
Example · state
GET /imports
{
  "data": [
    {
      "id": 8,
      "state": {
        "code": 5,
        "name": "Uttarakhand"
      },
      "counts": {
        "wards": 61697,
        "blocks": 95,
        "villages": 17343,
        "districts": 13,
        "village_gp": 15938,
        "local_bodies": 8041,
        "ulb_coverage": 180,
        "sub_districts": 129
      },
      "loaded_at": "2026-09-15T00:06:01.122453+05:30",
      "lgd_export_date": "2026-09-12"
    },
    {
      "id": 2,
      "state": {
        "code": 27,
        "name": "Maharashtra"
      },
      "counts": {
        "wards": 106752,
        "blocks": 352,
        "villages": 44911,
        "districts": 36,
        "village_gp": 43367,
        "local_bodies": 28888,
        "ulb_coverage": 435,
        "sub_districts": 358
      },
      "loaded_at": "2026-09-12T10:56:10.782473+05:30",
      "lgd_export_date": "2026-09-12"
    }
  ],
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0",
    "count": 2
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/imports" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.

GET/imports/{id}
Load by id
ParameterInType
idpathinteger
Example
GET /imports/{id}
{
  "data": {
    "id": 8,
    "state": {
      "code": 5,
      "name": "Uttarakhand"
    },
    "counts": {
      "wards": 61697,
      "blocks": 95,
      "villages": 17343,
      "districts": 13,
      "village_gp": 15938,
      "local_bodies": 8041,
      "ulb_coverage": 180,
      "sub_districts": 129
    },
    "loaded_at": "2026-09-15T00:06:01.122453+05:30",
    "lgd_export_date": "2026-09-12"
  },
  "meta": {
    "source": "Local Government Directory, Ministry of Panchayati Raj, Government of India",
    "lgd_export_date": "2026-09-12",
    "api_version": "1.0.0"
  }
}
Try it
curl "https://findmyvillage.devshiv.in/v1/imports/8" -H "X-API-Key: $LGD_API_KEY"

This endpoint needs a key — a free one takes a minute, or a test key from your dashboard.