API 문서
구독 중인 계정의 API 키로 조회해요. 헤더 X-API-Key에 키를 넣거나 주소 뒤에 ?key=를 붙여요. 3개월 플랜은 하루 5,000번까지, 6개월·12개월 플랜은 하루 제한이 없어요. 하루 사용량은 매일 0시(UTC)에 다시 채워져요. 모든 플랜이 1초에 20번까지예요.
기본 주소
https://ipinfobox.com/api/v1IP 하나 조회
curl -H "X-API-Key: YOUR_KEY" https://ipinfobox.com/api/v1/8.8.8.8
{
"ip": "8.8.8.8", "version": 4, "type": "public",
"country": { "code": "US", "name": "United States", "name_en": "United States" },
"region": "California", "city": "Mountain View", "continent": "NA",
"location": { "lat": 37.422, "lon": -122.085 },
"asn": { "number": 15169, "org": "Google LLC" },
"privacy": { "vpn": false, "vpn_provider": null, "tor": false,
"hosting": true, "hosting_provider": "Google", "cloud_region": null }
}IPv6도 같아요. 사설·특수 IP는 type이 private 또는 reserved이고 위치 값은 null이에요.
접속 판별 (privacy)
vpn, vpn_provider공개 VPN 서버 목록에 있는 주소인지와 업체 이름(모르면 null)
torTor Project 출구 노드 목록에 있는지
hosting, hosting_provider클라우드 공식 IP 대역이나 호스팅 회사 망인지와 회사 이름
cloud_region클라우드 대역이면 그 지역(예: us-east-1)
목록은 매일 갱신해요. 목록에 없는 VPN과 가정용 회선 프록시는 false로 나와요. 사설·특수 IP는 privacy가 null이에요. 판별 방법 자세히
방문자 IP로 쓰는 예
// Node.js (Express): ask for extra verification when a sign-up comes from a VPN, Tor or a data center
app.post("/signup", async (req, res) => {
const ip = req.headers["cf-connecting-ip"] ?? req.ip; // behind Cloudflare: CF-Connecting-IP
const r = await fetch(`https://ipinfobox.com/api/v1/${ip}`, { headers: { "X-API-Key": process.env.IPINFOBOX_KEY } });
const info = await r.json();
if (info.privacy && (info.privacy.vpn || info.privacy.tor || info.privacy.hosting)) {
return res.status(403).json({ error: "extra verification required" });
}
// continue sign-up
});# Python
import requests
info = requests.get(f"https://ipinfobox.com/api/v1/{ip}", headers={"X-API-Key": KEY}, timeout=3).json()
risky = bool(info.get("privacy")) and (info["privacy"]["vpn"] or info["privacy"]["tor"] or info["privacy"]["hosting"])내 IP 조회
GET /api/v1/me 요청을 보낸 곳의 IP와 정보남은 사용량
GET /api/v1/usage {"plan_ends_at":"2026-11-11T...","used_today":12,"daily_limit":5000} (하루 제한이 없는 플랜은 null)오류
400 invalid_ipIP 주소 형식이 아니에요.
401 invalid_api_key키가 없거나 틀렸어요.
402 no_subscription구독 기간이 끝났어요. 다시 결제하면 바로 쓸 수 있어요.
429 rate_limited / daily_limit요청이 너무 많거나 오늘 사용량을 다 썼어요.