공개 API (/v1)
eSIM 검색
GET /v1/esims — 국가·기간·데이터량으로 eSIM을 검색하고 추적 링크가 붙은 구매 URL을 받아요.
요청#
GET
/v1/esimscurl "https://api.esimoa.com/v1/esims?country=JP&days=7&sort=price&limit=3&lang=en" \
-H "X-API-Key: esk_live_your_key_here"const res = await fetch(
'https://api.esimoa.com/v1/esims?country=JP&days=7&sort=price&limit=3&lang=en',
{ headers: { 'X-API-Key': process.env.ESIMOA_API_KEY } },
);
if (!res.ok) throw new Error(`esimoa API ${res.status}`);
const { items, total } = await res.json();
for (const esim of items) {
console.log(esim.title, esim.priceKrw, esim.url);
}import os
import requests
res = requests.get(
"https://api.esimoa.com/v1/esims",
params={"country": "JP", "days": 7, "sort": "price", "limit": 3, "lang": "en"},
headers={"X-API-Key": os.environ["ESIMOA_API_KEY"]},
timeout=10,
)
res.raise_for_status()
for esim in res.json()["items"]:
print(esim["title"], esim["priceKrw"], esim["url"])쿼리 파라미터#
모든 파라미터는 선택이에요.
| 파라미터 | 타입 | 설명 |
|---|---|---|
country | string | 국가 코드 (ISO 3166-1 alpha-2, 예: JP) |
days | integer | 사용 기간이 정확히 이 일수인 상품 |
minDays | integer | 최소 사용 기간(일) |
maxDays | integer | 최대 사용 기간(일) |
dataGb | number | 최소 데이터량(GB) |
unlimited | boolean | true 면 무제한 요금제만 |
sort | string | recommended(추천순, 기본) | price(최저가순) | data(데이터 많은순) |
limit | integer | 1–50, 기본 10 |
offset | integer | 건너뛸 개수 — limit 의 배수로 내림 처리돼요 |
lang | string | 응답 언어 ko | en | ja | zh-CN | zh-TW (기본 en) |
필터 규칙#
days를 주면 minDays·maxDays 는 무시돼요.unlimited=true이면 dataGb 는 무시돼요.- 결과는 이심모아에서 직접 판매하는 상품만 포함하고, 판매가 중단된 상품은 빠져요.
응답#
200 OKjson
{
"success": true,
"items": [
{
"id": "partner_9VKPYQ3JRYVK5797",
"title": "Japan · 100 MB · 7 days",
"countryCode": "JP",
"countryName": "Japan",
"coverageCountries": ["JP"],
"isMultiCountry": false,
"dataAmount": "100 MB",
"dataAmountGB": 0.1,
"isUnlimited": false,
"dataType": "total",
"validityDays": 7,
"priceKrw": 1000,
"currency": "KRW",
"provider": "TSIM",
"networkType": "5G",
"hotspot": true,
"hasLocalNumber": false,
"isLocalNetwork": true,
"url": "https://www.esimoa.com/en/plans/jp/partner_9VKPYQ3JRYVK5797?ref=p_yourcode&utm_source=esimoa_partner"
}
],
"total": 42,
"limit": 10,
"offset": 0,
"sort": "price"
}Esim 객체#
| 필드 | 타입 | 설명 |
|---|---|---|
id | string | 상품 ID — 상세 조회에 사용 |
title | string | 표시용 이름 (lang 기준) |
countryCode / countryName | string | null | 대표 국가 (다국가 상품은 null) |
coverageCountries | string[] | 사용 가능한 국가 코드 목록 |
isMultiCountry | boolean | 다국가 상품 여부 |
dataAmount / dataAmountGB | string / number | 데이터량 (표시 문자열 / GB 숫자) |
isUnlimited | boolean | 무제한 요금제 여부 |
dataType | 'total' | 'daily' | null | 총량형 / 일일 제공형 |
validityDays | integer | 사용 기간(일) |
priceKrw / currency | integer / 'KRW' | 판매가 (원화) |
provider / networkType | string | 공급사 / 네트워크 (예: 5G) |
hotspot / hasLocalNumber / isLocalNetwork | boolean | 테더링 / 현지 번호 제공 / 현지망 |
url | string | 구매 링크 — 내 파트너 코드(?ref=)가 붙어 있어요. 이 링크를 그대로 노출하세요. |
참고
응답 필드는 추가만 되고 이름·의미는 바뀌지 않아요. 모르는 필드는 무시하도록 파싱하세요.
