免费身份证归属地查询 接口实测

发布时间:2026/8/21 21:00:49
免费身份证归属地查询 接口实测 免费身份证归属地查询 接口实测评测实测时间2026-08-17实测方式通过百度 / 必应 / 搜狗三个搜索引擎检索「免费 身份证归属地查询」「身份证归属地查询 免费接口 api」等关键词逐篇阅读候选文章正文抽取其中出现的接口源并去重对每个源用curl做三轮实测基础请求 / 跟随跳转 / 补 RefererUA并以至少两个不同地域的合法身份证号验证返回数据是否正确、是否为假活。样本说明公开可直连、无需密钥的身份证归属地 HTTP 接口本就稀少。本次多轮检索与实测后只有 3 个免费接口用两个样例验证返回了正确归属地、且排除假活。另有若干知名商业/免费额度接口需要自备密钥本文未用真实密钥跑通业务数据仅确认其路由与错误语义统一在「需自备密钥的接口一览」中中性列出。其中用户指定的万维易源ShowAPI接口view/25先以无效 key 验证路由随后在用户提供真实 appKey 的情况下完成双样例实测返回数据与真实行政区划一致详见第 6 节。写在前面身份证号的前 6 位是地址码依据国家标准 GB/T 2260对应申领时的省、市、区县。所谓身份证归属地查询本质上就是拿这 6 位去查行政区划映射。这里先提一个通用坑不能只看 HTTP 状态码。一个接口返回 200不代表它真的在干活——它可能返回恒为空、或恒为常数比如永远返回同一个 IP / 同一段假数据这种叫假活。本文对每个接口都用了两个不同地域的样例去验证返回内容是否随输入变化、是否对应真实行政区划以此排除假活。1. 可用接口总览下表列出本文亲手实测到真实数据的接口含免密钥与需密钥的免费额度类。所有样例均使用合法校验位的身份证号返回归属地与地址码一致。接口请求地址说明HTTPS编码需要 Key本次是否实测到真实数据nxvavhttps://api.nxvav.cn/api/idcard/?id{身份证号}GET返回省/市/区生日/性别/年龄是UTF-8否是3 个样例铭心の接口 (mxin)https://api.mxin.moe/api/v1/sfz/area?idcard{身份证号}GET返回省/市/县是UTF-8否是2 个样例aa1 身份证校验 (zj)https://zj.v.api.aa1.cn/api/sfz/?sfz{身份证号}GET返回省/市性别/年龄是UTF-8否是3 个样例万维易源 ShowAPI (view/25)POST/GET https://route.showapi.com/25-3?appKey{你的appKey}id{身份证号}返回省/市/区县 生日/性别是UTF-8是免费额度注册即用是2 样例消耗 3 次免费额度前三个接口不需要密钥、直接 GET 即可调用适合个人项目、原型验证、内部小工具。ShowAPIview/25为免费额度接口注册即用100 次/天、1 QPS需自备 appKey本次在用户提供真实 appKey 下实测通过。四个接口均由第三方托管 / 服务商提供稳定性与可用性不保证详见后文踩坑清单。2. nxvav — 无需密钥返回最完整一句话定位一个免密钥的公开接口除归属地外还能顺带解析出生日期、性别、年龄。调用示例curlhttps://api.nxvav.cn/api/idcard/?id110105199001010010实测返回北京·朝阳样例 1{code:200,msg:查询成功,data:{idCardNum:110105199001010010,birthday:1990-01-01,sex:男,age:36,address:北京市市辖区朝阳区朝外街道}}另一个地域的样例广东·深圳·南山样例 2{code:200,msg:查询成功,data:{idCardNum:44030519850615002X,birthday:1985-06-15,sex:女,age:41,address:广东省深圳市南山区南头街道}}注意事项返回字段code200 成功、data.address完整归属地、data.sex、data.birthday、data.age。实测发现该接口对出生年份早于 1900 的号码会直接拒绝返回{code:400,msg:出生年份不能早于1900年}。这是业务规则不是假活但接入时要注意对老号码做兼容或提示。第三方托管可能出现限频或不稳定。3. 铭心の接口 (mxin.moe) — 无需密钥字段精简一句话定位免密钥接口专注返回省 / 市 / 县三级行政区划结构干净。调用示例curlhttps://api.mxin.moe/api/v1/sfz/area?idcard110105199001010010实测返回北京·朝阳样例 1{code:0,msg:OK,data:{province:北京市,city:朝阳区,county:朝阳区}}另一个地域的样例广东·深圳·南山样例 2{code:0,msg:OK,data:{province:广东省,city:深圳市,county:南山区}}注意事项返回字段code0 成功、data.province/data.city/data.county。注意它把直辖市的市、区都填进了city/county如北京样例里 city朝阳区、county朝阳区做字段映射时要做兼容不要把city直接当地级市理解。响应里带了一个meta字段站点信息解析时忽略即可不要拿它做结构校验。4. aa1 身份证校验 (zj.v.api.aa1.cn) — 无需密钥带性别年龄一句话定位免密钥接口返回省 / 市及性别、年龄、是否成年等扩展信息。调用示例curlhttps://zj.v.api.aa1.cn/api/sfz/?sfz110105199001010010实测返回北京样例 1{code:200,msg:身份证校验正确,data:{province:北京市,city:null,sfz:110105199001010010,sfz_mw:110105******0010,xb:男,age:36,age_isage:已成年,age_job:社会人士}}另一个地域的样例四川·绵阳样例 3{code:200,msg:身份证校验正确,data:{province:四川省,city:绵阳市,sfz:510704199203070039,xb:男,age:34,age_isage:已成年}}注意事项返回字段code200 成功、data.province/data.city部分号码 city 为 null、data.xb性别、data.age。入参名是sfz与其它两个接口的id/idcard不同对接时注意区分。同样由第三方托管稳定性不保证。5. 横向对比维度nxvav铭心(mxin)aa1(zj)易源 ShowAPI是否需要 Key否否否是免费额度返回格式JSONJSONJSONJSON外层 ShowapiResEnvelope 包裹HTTPS是是是是编码UTF-8UTF-8UTF-8UTF-8返回内容省/市/区 生日/性别/年龄省/市/县省/市 性别/年龄省/市/区县 生日/性别本次实测真实数据是3 样例是2 样例是3 样例是2 样例已知限制拒收 1900 年前出生city/county 对直辖市填法特殊部分号码 city 为 null需 appKey返回 sex 为 M/F免费额度 100 次/天、1 QPS三个接口各有取舍没有哪个是全能最优。若你只需要省/市/县三级铭心字段最干净若还想顺带拿生日性别年龄nxvav 与 aa1 信息更全。具体用哪个取决于你的字段需求与对稳定性的容忍度文中不下该用哪个的结论。6. 需自备密钥的接口一览以下接口在检索中出现频率高、资料完整且均需注册并自备密钥 / 配额。其中 ShowAPIview/25已由用户在提供真实 appKey 的情况下完成实测见本节末专节其余仅确认其存在与调用形态是否选用由你自行决定。接口接入点文档形态需要 Key本文处理万维易源 ShowAPIview/25POST/GET https://route.showapi.com/25-3?appKey{你的appKey}参数id是免费额度注册即用已实测用户真实 appKey 下双样例通过返回正确见本节末专节接口盒子 (apihz)https://cn.apihz.cn/api/other/card.php?idkeycard是可用公共 ID/KEY但实测被限频路由存活公共凭据限频未验证真实数据聚合数据 juhehttps://apis.juhe.cn/idcard/index?keycardnohttps://apis.juhe.cn/mobile_idcard/query是未验证极速数据 jisuapihttps://api.jisuapi.com/idcard/query?appkeyidcard是未验证RollToolsApi (mxnzp)https://www.mxnzp.com/api/idcard/search?idcardapp_idapp_secret是未验证天聚数行 TianAPI / 探数数据 / wapi.cn / 简化云(腾讯云市场) / alapi 等各家文档接入点是未验证ShowAPIview/25身份证归属地查询实测记录用户提供真实 appKey接入点25-3请求参数id身份证号网关https://route.showapi.com/25-3。鉴权URL query 参数appKey注意该市场接口为appKey 直验无需额外的 sign 签名与部分 ShowAPI 文档示例不同。不传 key 返回showapi_res_code:-1002、key 无效返回-1004HTTP 均为 200。免费额度注册即用100 次/天、1 QPS。本次实测消耗 3 次免费调用额度样本 1 的 POSTGET 各 1 次、样本 2 的 GET 1 次。返回结构外层ShowapiResEnvelope包裹showapi_res_code/showapi_fee_num/showapi_res_body业务数据在showapi_res_body.retDataaddress/birthday/sex/province/city/county。注意sex为M/F非中文。调用示例appKey 请替换为你自己的curlhttps://route.showapi.com/25-3?appKey你的appKeyid110105199001010010实测返回北京·朝阳样例 1{showapi_res_code:0,showapi_fee_num:1,showapi_res_body:{errNum:0,retMsg:success,ret_code:0,retData:{sex:M,province:北京市,city:市辖区,birthday:1990-01-01,address:北京市朝阳区,county:朝阳区}}}实测返回广东·深圳·南山样例 2{showapi_res_code:0,showapi_fee_num:1,showapi_res_body:{errNum:0,retMsg:success,ret_code:0,retData:{sex:F,province:广东省,city:深圳市,birthday:1985-06-15,address:广东深圳市南山区,county:南山区}}}两个不同地域样本均返回与地址码一致的正确数据排除假活。接口经真实 appKey 实测通过故已纳入上文已实测可用清单标记需 Key。7. 生产环境参考实现多源降级下面把上文 3 个已验证的免费接口列为对等降级节点按顺序尝试某个源不可用时自动切到下一个是否、以及如何排序这些源交由调用方自行决定。代码只做取业务字段的通用逻辑不对任何源做优先/兜底暗示。importjsonimporturllib.requestimporturllib.parse# 三个已实测的免费源列为对等降级节点SOURCES[{name:nxvav,url:lambdan:fhttps://api.nxvav.cn/api/idcard/?id{n},parse:lambdad:d.get(data,{}).get(address),},{name:mxin,url:lambdan:fhttps://api.mxin.moe/api/v1/sfz/area?idcard{n},parse:lambdad:(d.get(data)or{}).get(province),},{name:aa1_zj,url:lambdan:fhttps://zj.v.api.aa1.cn/api/sfz/?sfz{n},parse:lambdad:(d.get(data)or{}).get(province),},]defquery(idcard:str)-dict:按顺序尝试已验证源返回第一个成功取到归属地的源。forsrcinSOURCES:try:withurllib.request.urlopen(src[url](idcard),timeout5)asr:bodyjson.loads(r.read().decode(utf-8))regionsrc[parse](body)ifregion:# 业务字段非空才算成功return{ok:True,source:src[name],region:region}exceptException:continue# 该源不可用降级到下一个return{ok:False,region:None}if__name____main__:print(query(110105199001010010))若你也使用了需密钥的接口如 ShowAPIview/25可把上面SOURCES里的url改为带appKey的闭包、并在parse里取showapi_res_body.retData.address即可鉴权与降级逻辑复用同一套。接入要点超时与降级每个源加超时失败即切下一个全部失败再做兜底提示用户或走本地数据见下。限频免费第三方接口普遍限频生产环境建议加本地缓存同一身份证号结果缓存减少重复请求。8. 踩坑清单只看状态码会踩假活返回 200 但内容恒为空/常数一律视为不可用。本文所有接口都用了两个不同地域样例交叉验证。nxvav 拒收 1900 年前出生老身份证出生年份 1900会返回 400 业务错误接入时要兼容或提示。铭心接口对直辖市的 city/county 填法特殊北京样例里city朝阳区、county朝阳区不要机械地把city当成地级市。aa1(zj) 部分号码city为 null只保证province稳定取市一级时要做空值兜底。免费第三方接口稳定性不保证这类接口多由个人开发者托管可能因限频、停机、域名过期而失效本次检索中就有若干早年文章提到的接口已 404 / 域名无法解析如xbronc.com、api.guaqb.cn的旧路径、sojson.com/api/idcard等。参数名不统一id/idcard/sfz/cardno各不相同对接前务必看各源文档。9. 附录提醒网上流传的同类接口很多需要自备密钥或已不稳定本文未纳入正文的密钥类接口含 ShowAPIview/25、聚合、极速、RollToolsApi 等均只确认了路由/文档形态未经真实业务数据验证接入前请自行用有效密钥复测。假活风险是通用提醒不针对任何具体产品部分接口会返回 HTTP 200 但内容恒为空或恒为常数务必用多个不同输入验证返回是否随输入变化、是否对应真实行政区划。隐私与合规把身份证号发给第三方接口等于把个人敏感信息传出本地。对内网/生产环境优先考虑本地方案——直接按前 6 位地址码查 GB/T 2260 行政区划数据如开源的province-city-china、cnregion等本地数据包数据不出本地、无调用费用、无网络依赖只是需要自行维护行政区划变更。10. 常见问题 FAQ1. 身份证归属地查询的原理是什么身份证号前 6 位是地址码对应国家标准 GB/T 2260 的行政区划代码。查询就是把这 6 位映射到对应的省、市、区县名称。2. 这些免费接口需要密钥吗本文实测可用的 4 个中nxvav、铭心 mxin、aa1 zj 三个不需要密钥、直接 GET 调用万维易源 ShowAPIview/25也已用真实 appKey 实测通过但属于免费额度接口需注册并自备 appKey100 次/天、1 QPS。其余商业/免费额度类接口聚合、极速、RollToolsApi 等同样需要自备密钥。3. 返回的数据准确吗基于地址码映射反映首次申领身份证时的户籍所在地发证地不是持卡人当前实际居住地。行政区划会调整撤县设区等数据更新不及时可能导致旧号查询偏差。4. 什么是假活怎么判断指接口返回 HTTP 200但内容恒为空或恒为常数如永远返回同一个假数据。判断方法是用多个不同地域的合法号码请求看返回是否随输入变化、是否对应真实行政区划。5. 为什么有的接口对老身份证报错部分接口有业务规则限制例如 nxvav 会拒绝出生年份早于 1900 的号码。这是接口自身策略不是数据错误接入时需注意兼容。6. 免费接口稳定吗本文列出的免费接口多由第三方开发者托管可能出现限频、停机或域名过期。本次检索中就发现多个早年文章提到的接口已失效404 或域名无法解析。7. 商用接口和免费接口有什么区别商用/免费额度接口通常需要密钥、有每日/每秒调用限额但一般有服务商维护、SLA 与文档支持免费第三方接口无密钥但稳定性与可用性不保证。是否选用取决于你的稳定性与合规要求。8. 把身份证号发给第三方接口安全吗身份证号属于个人敏感信息。发给第三方意味着信息传出本地需评估对方的数据留存与隐私政策并尽量走 HTTPS、最小化传输。对隐私要求高的场景建议用本地方案。9. 有没有不把身份证号发给第三方的方法有。直接按前 6 位地址码查本地的 GB/T 2260 行政区划数据包如开源的province-city-china、cnregion数据不出本地、无费用、无网络依赖只是要自行维护数据更新。10. 怎么自己写多源降级调用把已验证源列为对等节点按顺序请求某个源不可用时自动切到下一个只看业务字段是否非空不要只看 HTTP 状态码。示例代码见第 7 节。11. 不同接口返回的省/市/县字段不一样怎么办不同源字段命名与粒度有差异如有的city对直辖市填法特殊、有的city可能为 null。对接时按字段做兼容映射并对缺失字段做兜底。12. 这些接口今天还能用吗怎么自己复测接口随时可能变动。可用以下命令自行复测替换为合法校验位的号码curlhttps://api.nxvav.cn/api/idcard/?id110105199001010010curlhttps://api.mxin.moe/api/v1/sfz/area?idcard110105199001010010curlhttps://zj.v.api.aa1.cn/api/sfz/?sfz110105199001010010若返回结构与本文示例一致且归属地正确即说明仍可用。ShowAPI 可用以下命令复测替换为你自己的 appKeycurlhttps://route.showapi.com/25-3?appKey你的appKeyid110105199001010010若返回showapi_res_code:0且retData.address正确即说明仍可用。