# 全国小学基础信息
> 来源页面: https://www.gugudata.com/api/details/primaryschool
## 概览
- API 标识: `primaryschool`
- 分类: 教育/高考
- 描述: 小学名录与地区分类检索
- 标签: 基础数据 / 教育数据 / 多维度筛选
- 短标签: 基础数据 / 教育数据
- 详情页: https://www.gugudata.com/api/details/primaryschool
- LLM Markdown: https://www.gugudata.com/api/details/primaryschool/llm.md
- 数据预览: https://www.gugudata.com/preview/primaryschool
- 购买开通: https://www.gugudata.com/order/primaryschool
- APP KEY 管理: https://www.gugudata.com/portal/
- 订单与续费: https://www.gugudata.com/portal/orders
## 给大模型的接入指令
如果你正在帮助用户接入这个 API,请优先使用本文档中的接口地址、请求方式、请求参数、返回参数、状态码、cURL 示例和预览数据生成代码或排查问题。
- 接入目标: 调用 `全国小学基础信息`,不要臆造未在文档中出现的参数或返回字段。
- AppKey 获取: 用户登录咕咕数据开发者中心后,在 `APP KEY 管理` 页面复制对应产品的 AppKey。
- AppKey 替换: 示例中的 `YOUR_APPKEY`、`APPKEY`、`{{YOUR_APPKEY}}`、`{{appkey}}`、`{{appKey}}` 都应替换为用户自己的 AppKey。
- AppKey 传递: 推荐使用 `X-GUGUDATA-APPKEY` 或 `X-API-Key` 请求头;OpenAI 兼容客户端可使用 `Authorization: Bearer <AppKey>`;历史 query 参数 `appkey` 继续有效。
- 开通与续费: 未开通时引导用户访问购买开通页;已开通或需要续费时,引导用户进入开发者中心或订单与续费页。
- 错误处理: HTTP 状态码代表传输层结果,响应体内的业务状态码代表接口业务结果,代码中应分别处理。
- 生产建议: AppKey 应保存在服务端环境变量或密钥配置中,由服务端统一发起请求,不要写入网页、App 客户端或公开仓库。
关键链接:
- 接口详情页: https://www.gugudata.com/api/details/primaryschool
- LLM Markdown: https://www.gugudata.com/api/details/primaryschool/llm.md
- 数据预览: https://www.gugudata.com/preview/primaryschool
- 购买开通页: https://www.gugudata.com/order/primaryschool
- 开发者中心 APP KEY 管理: https://www.gugudata.com/portal/
- 订单与续费: https://www.gugudata.com/portal/orders
## API 功能
- 查询中国大陆各省级区域的小学基础信息;
- 按学校名称或别名关键词检索;
- 支持普通小学、教学点及一贯制类型筛选;
- 支持省、市、区县组合查询;
- 返回学校标识、名称、类型及所属地区;
- 提供可获取的地址与联系电话;
- 返回学校别名,辅助名称检索与资料核对;
- 支持分页浏览和匹配总数,每页最多 20 条;
- 适合学校目录、教育资源检索与机构资料整理;
- 学校信息及招生安排请以当地教育部门和学校公告为准;
- 默认最大 QPS:5,可在开发者中心自助升级,年付订单接口调用次数不限。
- [接口调用状态与状态监控](https://www.gugudata.com/status)
## API 文档
- 接口地址: `https://api.gugudata.com/metadata/primary-school`
- 返回格式: `application/json; charset=utf-8`
- 请求方式: `GET`
- 请求协议: `HTTPS`
- 请求示例: `https://api.gugudata.com/metadata/primary-school?keyword=&schoolType=ALL&province=%e5%8c%97%e4%ba%ac%e5%b8%82&city=&district=&pageIndex=1&pageSize=10&appkey=YOUR_APPKEY`
- 接口测试: https://api.gugudata.com/metadata/primary-school/demo
- Apifox: https://doc.gugudata.com/
- Postman: https://www.postman.com/gugudata/gugudata-official/collection/1163860-22cb92f5-771a-48fd-89c0-f20a0790a8ce/?action=share&creator=1163860&active-environment=1163860-a95b31ef-324f-43db-b2fc-faa41f45bd35
- OpenAPI: https://www.gugudata.com/openapi/gugudata.openapi.3.1.json
## 鉴权方式
接口支持以下 AppKey 传递方式,任选一种即可;已有请求示例、Postman 集合和历史代码仍可继续使用原来的 `appkey` 参数方式。
| 传输载体 | 参数 | 示例 | 说明 |
| --- | --- | --- | --- |
| HTTP Header | `X-GUGUDATA-APPKEY` | `X-GUGUDATA-APPKEY: YOUR_APPKEY` | 推荐方式,适合服务端接入和统一封装。 |
| HTTP Header | `X-API-Key` | `X-API-Key: YOUR_APPKEY` | 通用 API Key Header,便于和常见 API 客户端集成。 |
| HTTP Header | `Authorization` | `Authorization: Bearer YOUR_APPKEY` | 适合 OpenAI 兼容接口或 Bearer Token 风格客户端。 |
| Query 参数 | `appkey` | `?appkey=YOUR_APPKEY` | 兼容现有示例、Postman 集合、浏览器调试和历史代码。 |
> 部分历史 POST 接口仍兼容表单或 JSON body 中的 `appkey`;新接入建议优先使用 Header 或 Query 参数。
## 请求参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 备注 |
| --- | --- | --- | --- | --- |
| appkey | string | 否 | YOUR_APPKEY | 支持 Query、AppKey/X-GUGUDATA-APPKEY/X-API-Key Header 和 Bearer;相同值可共存,冲突返回 501。 |
| keyword | string | 否 | | 学校名称或别名包含匹配;NFKC 及首尾空白处理,最长 100 字符;空值不筛选。 |
| schoolType | string | 否 | ALL | 学校类型,大小写不敏感;未传或空值为 ALL。普通小学 PRIMARY_SCHOOL、教学点 TEACHING_POINT、九年一贯制 NINE_YEAR_SCHOOL、十二年一贯制 TWELVE_YEAR_SCHOOL;未知类别返回 501。 |
| province | string | 否 | | 地区完整名称精确匹配;NFKC 及首尾空白处理,最长 50 字符;默认空值不筛选,组合条件取交集。 |
| city | string | 否 | | 地区完整名称精确匹配;NFKC 及首尾空白处理,最长 50 字符;默认空值不筛选,组合条件取交集。 |
| district | string | 否 | | 地区完整名称精确匹配;NFKC 及首尾空白处理,最长 50 字符;默认空值不筛选,组合条件取交集。 |
| pageIndex | integer | 否 | 1 | 正 Int32 页码,默认 1;显式空值或非法值返回 501;合法超范围页返回空数组和正确总数。 |
| pageSize | integer | 否 | 20 | 每页 1~20 条,默认 20;显式空值或非法值返回 501。 |
## 返回参数
| 参数名 | 参数类型 | 备注 |
| --- | --- | --- |
| DataStatus.RequestParameter | string | 正式请求展示筛选长度、类型和分页摘要;固定 Demo 展示完整示例条件,不包含 APPKEY。 |
| DataStatus.StatusCode | integer | 业务状态码。 |
| DataStatus.StatusDescription | string | 业务状态说明。 |
| DataStatus.ResponseDateTime | string | 响应时间。 |
| DataStatus.DataTotalCount | integer | 筛选后的全部匹配数量,失败为 0。 |
| Data.SchoolId | string | 学校固定唯一标识。 Data 为数组,本项描述其中每条记录。 |
| Data.SchoolName | string | 学校名称。 Data 为数组,本项描述其中每条记录。 |
| Data.SchoolType | string | 标准学校类型。可能值:PRIMARY_SCHOOL(普通小学);TEACHING_POINT(小学教学点);NINE_YEAR_SCHOOL(九年一贯制学校);TWELVE_YEAR_SCHOOL(十二年一贯制学校)。 Data 为数组,本项描述其中每条记录。 |
| Data.Province | string | 省级名称。 Data 为数组,本项描述其中每条记录。 |
| Data.City | string | 城市名称。 Data 为数组,本项描述其中每条记录。 |
| Data.District | string | 区县名称。 Data 为数组,本项描述其中每条记录。 |
| Data.Address | string\|null | 学校地址,无数据时为 null。 Data 为数组,本项描述其中每条记录。 |
| Data.Telephone | string\|null | 联系电话,无数据时为 null。 Data 为数组,本项描述其中每条记录。 |
| Data.Aliases | array | 学校别名去重数组。 Data 为数组,本项描述其中每条记录。 |
## 响应示例(真实数据节选)
```json
{
"DataStatus": {
"RequestParameter": "keyword=&schoolType=ALL&province=北京市&city=&district=&pageIndex=1&pageSize=10",
"StatusCode": 100,
"StatusDescription": "请求成功。",
"ResponseDateTime": "2026-09-07 16:49:45.487",
"DataTotalCount": 1267
},
"Data": [
{
"SchoolId": "93c59bee-ca71-44ff-8068-f45478e5c298",
"SchoolName": "东交民巷小学",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "船板胡同63号(崇文门地铁站F东北口步行380米)",
"Telephone": "010-65131284;010-65131595",
"Aliases": [
]
},
{
"SchoolId": "03bee439-c519-4743-a4e5-44ddfc5d12da",
"SchoolName": "东交民巷小学",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "台基厂大街14号",
"Telephone": "010-65131595",
"Aliases": [
]
},
{
"SchoolId": "69ca343f-09f4-43e3-a780-532aa14f595e",
"SchoolName": "东城区东四十四条小学(低年级部)",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "板桥胡同乙3号(北新桥地铁站C东南口步行180米)",
"Telephone": null,
"Aliases": [
]
},
{
"SchoolId": "cd17751c-18ee-4d8e-a907-5b634a44d066",
"SchoolName": "东城区回民小学",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "朝阳门内大街124号(朝阳门地铁站H西南口步行190米)",
"Telephone": "010-65254529",
"Aliases": [
]
},
{
"SchoolId": "8977be01-7f6a-4247-8b95-18735d708b31",
"SchoolName": "东城区景泰小学一年级部",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "天坛东里内8号",
"Telephone": "010-65115308;010-67024124",
"Aliases": [
"天坛东里小学"
]
},
{
"SchoolId": "6f4e83da-e2db-4111-b7af-d68a03d7c4e3",
"SchoolName": "东城区板厂小学",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "双玉中街35号(天坛东门地铁站C东南口步行360米)",
"Telephone": null,
"Aliases": [
]
},
{
"SchoolId": "a0a9770b-3bbd-4062-bef1-af51c64a8842",
"SchoolName": "东城区板厂小学低年级部",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "夕照寺街5号院7号",
"Telephone": null,
"Aliases": [
]
},
{
"SchoolId": "b23bba72-d4ae-4943-827f-9d8edc389a66",
"SchoolName": "东城区精忠街小学",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "精忠街11号",
"Telephone": "010-67021505",
"Aliases": [
]
},
{
"SchoolId": "8543e6d4-e223-4de9-95d9-3871f50cda35",
"SchoolName": "东城区西总布小学",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "西总布胡同19号",
"Telephone": "010-65231053;010-65250309",
"Aliases": [
]
},
{
"SchoolId": "d88b9be1-c13d-436b-885c-47826630ae5f",
"SchoolName": "东高房小学",
"SchoolType": "PRIMARY_SCHOOL",
"Province": "北京市",
"City": "北京市",
"District": "东城区",
"Address": "东高房胡同与大学夹道交叉口东北80米",
"Telephone": "010-64032310",
"Aliases": [
]
}
]
}
```
## 接口常见 HTTP 响应状态码
> 以下为接口调用中常见的 HTTP 传输层状态码,不等同于响应体内的业务状态码;完整状态码注册表以 IANA HTTP Status Code Registry 为准。
| 状态码 | 状态码解释 | 备注 |
| --- | --- | --- |
| 200 | 请求成功 | HTTP 请求已成功处理;业务状态请结合响应体中的自定义业务码判断。 |
| 201 | 资源已创建 | 创建类接口请求成功,并已生成对应资源。 |
| 202 | 请求已接受 | 请求已被接受处理,结果可能异步完成。 |
| 204 | 无响应内容 | 请求成功但响应体为空,适用于无需返回数据的操作。 |
| 400 | 请求参数错误 | 请求参数缺失、格式错误或参数组合不合法。 |
| 401 | 认证失败 | 缺少、无效或未通过认证的访问凭证(如 AppKey)。 |
| 403 | 无权限访问 | 订单到期、权限不足或接口额度不可用。 |
| 404 | 资源不存在 | 请求路径不存在。 |
| 405 | 请求方法不允许 | 当前路径不支持该 HTTP 方法。 |
| 408 | 请求超时 | 客户端请求在服务端等待时间内未完成,可稍后重试。 |
| 409 | 请求冲突 | 请求与当前资源状态冲突,调整参数或业务状态后重试。 |
| 413 | 请求内容过大 | 上传文件或请求体超过接口限制。 |
| 414 | 请求地址过长 | 请求 URL 超过服务端可处理长度,建议减少查询参数或改用 POST。 |
| 415 | 请求内容类型不支持 | 上传或请求体的内容类型不符合接口要求。 |
| 422 | 请求语义错误 | 请求格式正确,但参数取值、语义或业务约束无法处理。 |
| 429 | 请求频率受限 | 默认按来源 IP 限速,单 IP 最多 5 QPS,可满足常规业务调用。超出限制时接口会返回 429 请求频率受限;已购买接口订单可加购 10 QPS 扩展。 |
| 431 | 请求头过大 | 请求头字段过大或过多,建议精简 Header 后重试。 |
| 500 | 服务器内部错误 | 服务端处理异常,请稍后重试。 |
| 502 | 服务暂时不可用 | 请稍后重试。 |
| 503 | 服务暂时不可用 | 请稍后重试。 |
| 504 | 请求超时 | 请稍后重试。 |
## 接口自定义业务状态码
| 业务状态码 | 业务状态码解释 | 备注 |
| --- | --- | --- |
| 100 | 成功 | HTTP 200 |
| 501 | 参数或凭证冲突 | HTTP 400 |
| 502 | 请求频率受限 | HTTP 429 |
| 503 | 订单到期 | HTTP 403 |
| 504 | APPKEY 缺失或无效 | HTTP 401 |
| 505 | 额度耗尽 | HTTP 403 |
| 900 | 内部错误 | HTTP 500 |
| 901 | 小学数据服务暂不可用 | HTTP 503 |
## cURL 请求示例
```bash
curl --location --request GET 'https://api.gugudata.com/metadata/primary-school?keyword=&schoolType=ALL&province=%e5%8c%97%e4%ba%ac%e5%b8%82&city=&district=&pageIndex=1&pageSize=10&appkey=YOUR_APPKEY'
```
## 更多请求示例与预览数据
- [北京市小学查询](https://www.gugudata.com/preview/6a8284bf1973dbbcdf3523ca)
## 常见问题 Q&A
### Q: 如何完成第一次 API 调用?
A: 先确认当前接口的请求方法、必填参数和成功状态,再使用对应产品的 AppKey 发起请求;以实际响应中的业务状态判断结果。 [查看接入指南](https://www.gugudata.com/developers/getting-started)
### Q: 如何保证请求时 AppKey 的安全性?
A: 在开发者中心的 APP KEY 管理页面复制对应产品的 AppKey,并保存在服务端环境变量或密钥管理服务中。不要写入网页、App 客户端、公开仓库或日志。
### Q: 接口可以用于哪些开发语言?
A: Java、Python、Node.js、PHP、Go、C#、Swift、Kotlin 等支持 HTTP 请求的语言均可接入;也可以通过 OpenAPI、Postman 或 Apifox 查看和调试接口。
### Q: 请求失败或超时后可以重试吗?
A: 先区分 HTTP 状态与业务错误。参数、鉴权和权限错误应修正后再请求;超时并不表示服务端未执行,重试前需确认接口是否会重复计费或产生副作用。 [查看接入指南](https://www.gugudata.com/developers/errors-and-retries)
### Q: 接口的性能可以保证吗?
A: 实际响应时间受接口类型、参数和网络环境影响。请按当前套餐的 QPS 控制并发,生产接入前完成联调与容量评估。
### Q: 数据多久更新?
A: 不同接口按各自的数据周期更新,请以当前详情页的更新时间、更新频率及字段说明为准;不要将一次请求时间视为数据更新时间。
## 服务协议以及服务免责声明
- [服务协议](https://www.gugudata.com/license)
- [服务免责声明](https://www.gugudata.com/disclaimer)
## 技术支持
- 技术支持邮箱: support@gugudata.com
- 微信客服: https://work.weixin.qq.com/kfid/kfcf9a60a6afe3337b7