# 免费地震信息:5 分钟从注册到调通第一条地震记录
- **接口/接入点**:免费地震信息 · 2274-1
- **是否免费**:是(注册即免费额度,有档位限制)
- **请求方式**:POST / GET
- **返回格式**:JSON
- **适用人群**:新注册用户、初级开发者、科普爱好者
- **阅读时间**:约 6 分钟
## 核心要点
- 注册易源账号、在控制台拿到 AppKey,是调用所有 ShowAPI 接口的前置条件。
- 接口地址为 `https://route.showapi.com/2274-1?appKey={your_appKey}`,请求体用 `application/x-www-form-urlencoded`。
- 一次成功调用会返回 `showapi_res_body.earthquakes[]`,里面是当天/指定日期的全球地震记录。
## Why:这跟我有什么关系
你可能想做这些事:给学校做一份「本月全球地震」科普海报、在个人网站挂一个「近期地震」小工具、或者在写论文时拉一批历史震例做统计。这个接口免费、无需商务洽谈,注册即用,是门槛最低的历史地震数据来源之一。
注意:它**不提供实时预警**,只查询已发生的历史地震(近一年内,环太地区每分钟更新)。如果你需要的是「地震立刻报警」,这个接口不合适。
## What:前置条件与接口速览
| 项 | 值 |
|----|----|
| 接口地址 | `https://route.showapi.com/2274-1?appKey={your_appKey}` |
| 接入点 | 2274-1(默认分组「地震信息」) |
| 请求方式 | POST / GET |
| 鉴权 | URL 参数 `appKey` |
| 计费 | 免费(档位限制见 [免费 API 说明](https://www.showapi.com/free-api)) |
| 更新频率 | 环太地区每分钟更新 |
| 集成能力 | MCP(`showapi-mcp-2274`)、OpenAPI 3.0 |
前置条件:① 已注册 [showapi.com](https://www.showapi.com) 账号;② 在 [控制台 → 我的应用](https://www.showapi.com/console#/myApp) 拿到 AppKey。
## How:第一次调用
下面以查询 `2025-01-20` 当天地震为例(该日全球记录较多,便于观察返回结构)。`date` 为选填,格式 `yyyyMMdd`,按北京时间理解。
### Python(requests)
```python
import requests
APP_KEY = "YOUR_APPKEY" # 替换为你的真实 AppKey
url = "https://route.showapi.com/2274-1"
params = {"appKey": APP_KEY}
data = {"date": "20250120"} # 选填,北京时间 yyyyMMdd
try:
r = requests.post(url, params=params, data=data, timeout=10)
r.raise_for_status()
body = r.json().get("showapi_res_body", {})
if body.get("ret_code") != 0:
print("未找到:", body.get("remark"))
else:
print("共", body.get("count"), "条")
for eq in body.get("earthquakes", []):
print(eq["location"], "震级", eq["mag"], "深度", eq["dep"], "km")
except Exception as e:
print("请求失败:", e)
```
### cURL
```bash
curl -X POST "https://route.showapi.com/2274-1?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
--data-urlencode "date=20250120"
```
### Node.js(fetch)
```javascript
const APP_KEY = "YOUR_APPKEY";
const url = `https://route.showapi.com/2274-1?appKey=${APP_KEY}`;
const resp = await fetch(url, {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ date: "20250120" }),
});
const json = await resp.json();
const body = json.showapi_res_body;
if (body.ret_code !== 0) {
console.log("未找到:", body.remark);
} else {
console.log("共", body.count, "条");
body.earthquakes.forEach((eq) => {
console.log(eq.location, "震级", eq.mag, "深度", eq.dep, "km");
});
}
```
## 返回示例与解析
```json
{
"showapi_res_code": 0,
"showapi_res_id": "7276caf22b4c459597f5644b744e0bef",
"showapi_res_body": {
"ret_code": 0,
"count": 1,
"remark": "",
"earthquakes": [
{
"timestampLocal": 1737361046031,
"location": "台湾玉井北12 公里处",
"mag": 6,
"timeUTC": "2025-01-20 16:17:26",
"timestampUTC": 1737361046031,
"lng": 120.47,
"from": "usgs",
"timeLocal": "2025-01-20 16:17:26",
"dep": 10,
"lat": 23.23
}
]
}
}
```
关键字段:`ret_code`(0=找到,-1=没找到/出错)、`count`(条数)、`earthquakes[]` 每条含 `location`(位置)、`mag`(震级)、`lat`/`lng`(经纬度)、`dep`(深度)、`from`(数据来源)、`timeLocal`/`timeUTC`(时间)。完整字段见 [免费地震信息:返回字段全解](https://www.showapi.com/guides/earthquake-info-response-fields-2274)。
## 进阶 / 边界
- **没传 date 会怎样?** 实测不传 date 时返回「最近几条」全球记录(默认最新),适合做「近期地震」展示;要查特定日期务必传 `date`。
- **area 参数是个坑**:文档说可按省名筛选,但实测 `area=云南` 仍返回美国地震,当前**未按省名过滤**。正确做法是先用 `date` 框定时间,再在客户端按 `location` 自行过滤。详见 [date 与 area 参数使用指南](https://www.showapi.com/guides/earthquake-info-params-guide-2274)。
- **免费额度**:注册即免费,但有调用档位限制,生产环境注意控制频率(见 [缓存与频率最佳实践](https://www.showapi.com/guides/earthquake-info-caching-best-practice-2274))。
## FAQ
**Q1:返回 ret_code = -1 是什么意思?**
表示「没有找到或出错」。先看 `remark` 字段的文字说明;常见原因是该日期/地区确实没有地震记录。注意 `ret_code` 是业务码,在外层 `showapi_res_code`(系统码,0 表示请求成功)正常的前提下再看它。
**Q2:一定要用 POST 吗?GET 行不行?**
文档标明支持 POST 和 GET 两种方式。用 GET 时把 `date`、`area` 直接拼到 URL 查询参数即可,鉴权 `appKey` 同样走 URL 参数。
**Q3:为什么我拿不到数据,但也没有报错?**
先确认 `showapi_res_code` 是否为 0(系统层成功)。若为 0 但 `ret_code` 为 -1,说明请求成功只是「没匹配到记录」。另请确认 AppKey 已开通该接口免费额度。
**Q4:这个接口能实时预警吗?**
不能。文档明确「不提供实时预警」,它只查询已发生的历史地震(近一年内)。需要实时告警请使用专业地震预警服务。
## 相关能力 / 下一步阅读
- [免费地震信息:返回字段全解(ret_code / mag / from 一文读懂)](https://www.showapi.com/guides/earthquake-info-response-fields-2274)
- [免费地震信息:date 与 area 参数使用指南(含实测筛选坑)](https://www.showapi.com/guides/earthquake-info-params-guide-2274)
- [免费地震信息:做一个「全球近期地震」查询页(前端实战)](https://www.showapi.com/guides/earthquake-info-recent-quakes-app-2274)
- **本系列共 14 篇**:查看[免费地震信息指南总目录](https://www.showapi.com/guides/earthquake-info-guides-2274)