Welcome to the official Esoim Public Partner API. This programmatic catalog feed provides automated, sub-millisecond access to our complete global inventory of prepaid travel eSIM packages across 200+ countries and regional bundles.
Our data plan feeds strictly comply with the official eSIMDB Provider Data Plans Specification (OpenAPI 3.0.3) and top telecom aggregator standards:
Returns a clean root JSON Array [ {...} ] of individual product plans, enabling immediate automated validation and parsing.
Prices reflect true customer checkout charges in our native currency (EUR). Market conversions are cleanly handled on the comparison portal side.
Sub-1GB or fractional plans use precise MB integers, while multi-gigabyte plans use exact GB integers to eliminate precision loss.
Every plan lists its exact 2-letter uppercase country codes (e.g. ["DE", "FR", "ES"]), allowing 100% accurate search matching.
Our catalog feeds are public, read-only, and highly optimized. No API keys or authorization headers are required to fetch real-time packages.
| Base URL | https://esoim.com |
|---|---|
| Content-Type | application/json; charset=utf-8 |
| HTTP Caching | Responses are accelerated via in-memory server cache (30-min window) with X-Cache: HIT / MISS headers. Average response time: < 15 ms. |
| Cache Bypass | To force a live database re-sync, append ?nocache=1 to the request. |
To automatically attach your partner referral tracking code to every product checkout link in the feed, pass ?ref=YOUR_CODE to the API endpoint:
esoim_ref=YOUR_CODE) is stored with a 30-day (2,592,000s) lifetime. Any purchase made within 30 days is credited to your partner account.
Returns the complete active catalog of international travel eSIM packages according to OpenAPI 3.0.3 standards.
GET https://esoim.com/esimdb/data-plans
GET https://esoim.com/esimdb/data-plans?ref=esimdb
| Parameter | Type | Requirement | Description |
|---|---|---|---|
ref |
string | Optional | Partner referral code (e.g. esimdb). Appended automatically to all product purchase links. |
nocache |
boolean | Optional | Set ?nocache=1 to bypass the server cache and return immediate live catalog. |
format |
string | Optional | official (default: flat JSON array) or wrapped (legacy object {"dataPlans": [...]}). |
[
{
"planName": "Germany eSIM 5 GB (30 Days)",
"validity": 30,
"dataCap": 5,
"dataUnit": "GB",
"dataCapPer": null,
"reducedSpeed": null,
"prices": {
"EUR": 4.99
},
"coverages": [
"DE"
],
"link": "https://esoim.com/esim/germany?plan=101&ref=esimdb",
"telephony": null,
"subscription": false,
"tethering": true,
"eKYC": false,
"canTopUp": true,
"promoEnabled": true,
"additionalInfo": "Instant email delivery with QR code.\nHigh-speed 4G/5G mobile data.\nNo physical SIM card swap required."
},
{
"planName": "Japan eSIM 2 GB (1 Days)",
"validity": 1,
"dataCap": 2,
"dataUnit": "GB",
"dataCapPer": null,
"reducedSpeed": 512,
"prices": {
"EUR": 2.99
},
"coverages": [
"JP"
],
"link": "https://esoim.com/esim/japan?plan=1243&ref=esimdb",
"telephony": null,
"subscription": false,
"tethering": true,
"eKYC": false,
"canTopUp": false,
"promoEnabled": true,
"additionalInfo": "Instant email delivery with QR code.\nHigh-speed 4G/5G mobile data.\nNo physical SIM card swap required."
}
]
Returns destination-specific landing page links for all 176 individual country pages and 9 major regional bundles (Europe, Asia, North America, Global, etc.).
GET https://esoim.com/esimdb/destination-links?ref=esimdb
[
{
"name": "United States plans",
"link": "https://esoim.com/esim/united-states?ref=esimdb",
"type": "web",
"targets": [
"US",
"united-states"
]
},
{
"name": "Europe plans",
"link": "https://esoim.com/esim/AX-AT-BE?ref=esimdb",
"type": "web",
"targets": [
"europe",
"EU"
]
}
]
Definition of each field provided within the product item objects:
| Field | Type | Requirement | Description & Constraints |
|---|---|---|---|
planName |
string | Recommended | Marketing title of the plan (max 100 characters). E.g. "France eSIM 3 GB (15 Days)". |
validity |
integer | Required | Plan duration in days. Set to 0 for plans with no expiration. |
dataCap |
integer | Required | Total data allowance. For whole GB plans, integer value in GB (e.g. 5). For sub-1GB plans, integer in MB. |
dataUnit |
string | Required | Unit of measurement: "MB", "GB", or "TB". |
dataCapPer |
string | null | Optional | Reset period for recurring allowance (e.g. "day"). Set to null for total fixed allowance plans. |
reducedSpeed |
integer | null | Optional | Throttled connection speed in kbps (e.g. 512 for 512 Kbps, 1000 for 1 Mbps) applied after exhausting high-speed dataCap. Set to null if data connection cuts off entirely. |
prices |
object | Required | Customer checkout price keyed by 3-letter ISO 4217 currency code. E.g. {"EUR": 4.99}. |
coverages |
array<string> | Required | List of supported 2-letter ISO 3166-1 alpha-2 country codes. E.g. ["DE", "FR"]. |
link |
string | Recommended | Direct purchase URL with plan selection (?plan=ID) and affiliate tracking attached. |
telephony |
object | null | Optional | Voice & SMS capabilities. Set to null for pure data-only eSIMs. |
subscription |
boolean | Optional | false for prepaid single-purchase plans. |
tethering |
boolean | Optional | true when mobile hotspot / tethering is allowed. |
eKYC |
boolean | Optional | false when passport scan or identity verification is not required. |
canTopUp |
boolean | Optional | true if customers can recharge extra data on the same eSIM profile. |
# Fetch live eSIM catalog
curl -X GET "https://esoim.com/esimdb/data-plans?ref=YOUR_PARTNER_CODE" \
-H "Accept: application/json"
import requests
url = "https://esoim.com/esimdb/data-plans?ref=YOUR_PARTNER_CODE"
response = requests.get(url, headers={"Accept": "application/json"})
plans = response.json()
print(f"Total available plans: {len(plans)}")
for plan in plans[:5]:
print(f"- {plan['planName']}: €{plan['prices']['EUR']} ({len(plan['coverages'])} countries)")
async function getEsimPlans() {
const response = await fetch('https://esoim.com/esimdb/data-plans?ref=YOUR_PARTNER_CODE');
const plans = await response.json();
console.log(`Fetched ${plans.length} plans successfully`);
console.log('Sample plan:', plans[0]);
}
getEsimPlans();
<?php
$json = file_get_contents('https://esoim.com/esimdb/data-plans?ref=YOUR_PARTNER_CODE');
$plans = json_decode($json, true);
echo "Total plans: " . count($plans) . "\n";
echo "First plan: " . $plans[0]['planName'] . " - €" . $plans[0]['prices']['EUR'] . "\n";
?>
Standard XML RSS 2.0 product catalog feed for Google Merchant Center and Google Shopping integration.
https://esoim.com/google-merchant.xml