行政区划查询 level 参数怎么选?省级到村委会 5 级行政层级对照
# 行政区划查询 level 参数怎么选?省级到村委会 5 级行政层级对照
> 接口 / 接入点:行政区划查询(apiCode 1149)· 区域查询 1149-1 · 免费服务
> 请求方式:POST / GET · 返回格式:JSON · 适用人群:初级 / 中级开发者 · 阅读时间:约 5 分钟
## 核心要点
- `level` 是区域查询(1149-1)的**可选**参数(默认 2),取值 1~5,对应省 / 市 / 区县 / 乡镇 / 村委会。
- 设了 `level` 只是限定返回层级的「粒度」,真正定位靠必填的 `areaName`。
- 想查更细的层级(乡镇 / 村委会),优先用区域查询 + `level=4/5`,或子区域查询逐级下钻。
## Why:level 到底管什么
新手常把 `level` 当成「查哪一级」的开关,结果设了 `level=3` 却只传一个模糊的 `areaName`,返回一堆不匹配的结果。`level` 的准确含义是:**在 `areaName` 命中的结果里,只返回指定行政级别的那一层**。选对 level,能减少无关数据、让结果更干净。
## What:level 取值对照
| level | 行政级别 | 示例 areaName | 返回层级 |
|-------|---------|--------------|---------|
| 1 | 省级 | 广东省 | 省 |
| 2 | 市级(默认) | 昆明市 | 市 |
| 3 | 区县级 | 朝阳区 | 区 / 县 |
| 4 | 乡镇级 | 玉龙纳西族自治县巨甸镇 | 镇 / 乡 |
| 5 | 村委会级 | 某村委会 | 村委会 |
> 注:子区域查询(1149-2)返回的 `level` 仅为 1~3,乡镇 / 村委会级建议用区域查询 + `level=4/5`。
## How:按场景选 level
### Python
```python
import requests
APPKEY = "YOUR_APPKEY"
def by_level(area_name, level):
r = requests.get("https://route.showapi.com/1149-1",
params={"appKey": APPKEY, "areaName": area_name, "level": str(level)},
timeout=10)
return r.json()["showapi_res_body"]["data"]
# 想拿「区县级」列表,就设 level=3
for item in by_level("北京市", 3):
print(item["areaName"], item["id"], "level=", item["level"])
```
### cURL
```bash
curl -X POST "https://route.showapi.com/1149-1?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "level=3&areaName=%E5%8C%97%E4%BA%AC%E5%B8%82&page=1"
```
### Node.js
```javascript
fetch(`https://route.showapi.com/1149-1?appKey=YOUR_APPKEY&level=3&areaName=` + encodeURIComponent("北京市"))
.then(r => r.json())
.then(d => d.showapi_res_body.data.forEach(i => console.log(i.areaName, i.id, "level=", i.level)))
.catch(e => console.error(e));
```
## 返回示例(level=3 查「北京市」)
```json
{
"showapi_res_body": {
"ret_code": 0,
"data": [
{"areaName": "东城区", "id": "110101000000", "level": 3, "countyId": "110101000000", "parentId": "110100000000"},
{"areaName": "西城区", "id": "110102000000", "level": 3, "countyId": "110102000000", "parentId": "110100000000"}
],
"allNum": 16,
"maxSize": 20,
"allPage": 1
}
}
```
## 进阶 / 边界
- `level` 不填默认 2(市级)。不传也能用,只是粒度不同。
- `areaName` 越完整,`level` 的过滤效果越明显;名字太短(如「北京」)可能跨级别命中多条。
- 乡镇 / 村委会级数据量大,`maxSize=20` 会分页,记得翻页。
## FAQ
**Q:设了 level 是不是就只返回那一级?**
在 `areaName` 命中的结果里,只返回指定层级的记录;但 `areaName` 本身要足够明确,否则仍可能跨级。
**Q:level 和 parentId 能一起用吗?**
`level` 是区域查询(1149-1)的参数;`parentId` 是子区域查询(1149-2)的参数,二者分属不同接入点,不能混用。
**Q:想查村委会但 level=5 没结果?**
确认 `areaName` 写到了村委会层级的全称;若仍为空,可改用子区域查询从上级 `id` 逐级下钻。
**Q:level 默认是多少?**
默认 2(市级)。不传时按市级粒度返回。
## 相关能力 / 下一步阅读
- [行政区划查询:5 分钟接入,从注册到第一条区划数据](https://www.showapi.com/guides/region-query-quickstart-1149)
- [行政区划查询子区域查询实战:用 parentId 逐级下钻省→市→区→街道](https://www.showapi.com/guides/region-query-subregion-1149)
- **本系列共 11 篇**:查看[行政区划查询指南总目录](https://www.showapi.com/guides/region-query-guides-1149)