taiwan-hospitallisted
Install: claude install-skill tahodev/baodao-skill
# taiwan-hospital
> 實測日:2026-09-20(最近一次端對端實測;數值基準日各自標於內文)
用健保署開放資料 API 查全台健保特約醫療院所(醫院、診所、藥局、護理機構…)的基本資料。不需要 API 金鑰或登入。
## 基本流程
1. 大量下載資料集(一次 limit 拉高)或帶參數查詢
2. 依院名、縣市(地址開頭)、類型篩選
3. 回報名稱、地址、電話;註明資料為健保特約院所名錄(非即時看診資訊)
### 1. API 端點
```bash
# 院所基本資料:API 單次最多回 1,000 筆,先看 total 再分頁(37,133 筆,2026-09-20 實測)
curl -sm 30 -A 'Mozilla/5.0' 'https://info.nhi.gov.tw/api/iode0010/v1/rest/datastore/A21030000I-D2100G-001?limit=1&offset=0' -o /tmp/hosp_meta.json
# 資料集目錄
curl -sm 30 -A 'Mozilla/5.0' 'https://info.nhi.gov.tw/api/iode0010/v1/rest/dataset?limit=100' -o /tmp/datasets.json
```
**全量下載要分頁**:這個 datastore API 把 limit 封頂在 1,000(2026-09-20 實測:帶 `limit=40000` 只回 1,000 筆、`result.limit` 顯示 1000;總數看 `result.total`)。用 offset 逐頁取:
```python
import json, urllib.request
UA = {'User-Agent': 'Mozilla/5.0'}
BASE = 'https://info.nhi.gov.tw/api/iode0010/v1/rest/datastore/A21030000I-D2100G-001'
def page(offset):
req = urllib.request.Request(f'{BASE}?limit=1000&offset={offset}', headers=UA)
return json.loads(urllib.request.urlopen(req, timeout=40).read())['result']
first = page(0)
total, recs = first['total'], list(first['records'])
for off in range(1000, total, 1000):
recs += page(off)['records']
print(total, len(recs)) # 37133 37133 (2026-09-20 實測,約 38 頁)
```
2026-09-20 實測:HTTP 200、`{"success": true, "result": {...}}`、`result.total` = 37,133 筆。欄位:BRANCH_CODE(分區)、HOSP_ID、HOSP_ATTR_NAME(如 部立及直轄市立醫院)、HOSP_NAME、HOSP_ADDR、TEL_AREA/TEL、HOSP_CNT_TYPE、HOSP_TYPE、CONT_ORIG_DATE(簽約起日)。首筆實