Put your eSIM plans in front of travellers who are ready to buy
eSIM Guide compares travel eSIMs straight from each provider's own catalogue. Send us your plan feed and your plans appear on every destination they cover, next to the brands travellers already know, updated automatically.
- providers listed
- 43
- providers listed
- live plans
- 301,824
- live plans
- destinations
- 229
- destinations
Listed alongside
See every provider
MicroESIM
eSIMnow
PikaSIM
RedEx eSIM
AbestESIM
ZenSim
HorizonESIM
RedteaGo
YeSIM
AirHub
Bloomy eSIM
Nomad
UBIGI
Mega eSIM
RoamlessAiralo
eSimHero
Esimatic
GigSky
VoyeGlobal
YonoSIM
LightSIM
Orbit Mobile
Wanderly eSIM
Always Mobile
Connect Me Guru
iroamly
MyTravel eSIM
MyEsimGlobal
AirPlans
JamboSIMSaily
ESIM.DOG
Skyalo
Stellar eSIM
MoodSIM
PuraSIM
eSimCard
eSIM4TravelSimify
Simsima
Roamix
esimagora
How it works
- 1
Tell us about you
Fill in the form with your brand, your website and, if you have one, your affiliate programme.
- 2
Send us your plans
A link to your plan feed in the format below, or in whatever format you already have.
- 3
Your plans go live
We write the integration, check it against your website, and re-sync your catalogue automatically from then on.
Every field you send is another way to be found
Travellers cut thousands of plans down with filters, and a plan only appears under a filter when its feed says it qualifies. Leave a field out and you are not ruled out, you are just missing from that search.
networks[].nameNetworkstypes: ["5G"]5Gtethering: trueTetheringtelephony.voice: trueCalls or SMScanTopUp: trueTop-upinternetBreakoutsLow latencydataCapPer: "day"Daily capdataCap: 0UnlimitedpromoEnabled: trueApply discounts
Ask to be listed
The plan feed format
Many of the providers we list already publish their plans in this shape, so if you have it, integration is quick. If you do not, there is no need to build it: send us what you have and we will work with it.
Delivery
One HTTPS URL that returns your whole catalogue as a JSON array, one object per plan. Paging is fine if your catalogue is large.
Public, or protected by a key in a header or query string. We keep keys server-side and never publish them.
We fetch at most once an hour, so a price change reaches the site within that window.
Put your affiliate attribution on every link, or tell us which parameter to add and we will append it.
The minimum
Seven fields are enough to list a plan. Everything else is optional.
[ { "planName": "Spain 3GB 30 Days", "link": "https://example.com/esim/spain?ref=esimguide", "prices": { "USD": 4.5 }, "validity": 30, "dataCap": 3, "dataUnit": "GB", "coverages": [ { "code": "ES" } ] } ]
A full example
Two plans: a fixed allowance in one country, and a daily plan across several.
[ { "id": "es-3gb-30d", "planName": "Spain 3GB 30 Days", "link": "https://example.com/esim/spain?plan=es-3gb-30d&ref=esimguide", "prices": { "USD": 4.5, "EUR": 4.2, "GBP": 3.6 }, "validity": 30, "dataCap": 3, "dataUnit": "GB", "dataCapPer": null, "maxSpeed": null, "reducedSpeed": null, "coverages": [ { "code": "ES", "networks": [ { "name": "Movistar", "types": [ "4G", "5G" ] }, { "name": "Orange", "types": [ "4G", "5G" ] } ] } ], "internetBreakouts": [ { "country": "ES" } ], "tethering": true, "canTopUp": true, "eKYC": false, "telephony": null, "phoneNumber": false, "subscription": false, "subscriptionPeriod": null, "payAsYouGo": false, "hasAds": false, "newUserOnly": false, "promoEnabled": true, "capacityInfo": null, "validityInfo": "Install within 180 days of purchase.", "activationInfo": "Validity starts when the eSIM first connects to a supported network.", "additionalInfo": null, "apn": "internet" }, { "id": "eu-1gb-day-7d", "planName": "Europe 1GB/day 7 Days", "link": "https://example.com/esim/europe?plan=eu-1gb-day-7d&ref=esimguide", "prices": { "USD": 9.9, "EUR": 9.2 }, "validity": 7, "dataCap": 1, "dataUnit": "GB", "dataCapPer": "day", "maxSpeed": null, "reducedSpeed": 512, "coverages": [ { "code": "FR", "networks": [ { "name": "Orange", "types": [ "5G" ] } ] }, { "code": "IT", "networks": [ { "name": "TIM", "types": [ "4G", "5G" ] } ] }, { "code": "DE", "networks": [ { "name": "Vodafone", "types": [ "4G" ] } ] } ], "internetBreakouts": [ { "country": "NL" } ], "tethering": true, "canTopUp": false, "eKYC": false, "telephony": { "voice": false, "sms": true, "dialingCode": null }, "phoneNumber": false, "subscription": false, "subscriptionPeriod": null, "payAsYouGo": false, "hasAds": false, "newUserOnly": false, "promoEnabled": true, "capacityInfo": "1GB a day at full speed, then unlimited at 512 kbps.", "validityInfo": null, "activationInfo": null, "additionalInfo": null, "apn": null } ]
Field reference
The plan
idstring- Your stable identifier for the plan. Strongly recommended.
planNamestringrequired- The plan's name as customers see it on your site.
linkstring (URL)required- Where the buy button goes: ideally the plan's own checkout page, carrying your attribution for us.
prices{ [currency]: number }required- Price in each currency you sell in, in major units. For example USD, EUR and GBP.
validitynumberrequired- How many days the plan lasts once it starts.
Data and speed
dataCapnumberrequired- The data allowance. 0 means unlimited.
dataUnit"MB" | "GB"required- The unit of dataCap.
dataCapPer"day" | null- "day" when dataCap is a daily allowance that resets every day. null or absent when it is the total for the plan.
maxSpeednumber | null- Top speed in kbps, if the plan is speed-capped.
reducedSpeednumber | null- Speed in kbps once the allowance is used up, if data carries on at a reduced speed.
Where it works
coveragesarrayrequired- One entry per country the plan works in.
coverages[].codestringrequired- ISO 3166-1 alpha-2 country code, such as ES or JP.
coverages[].networksarray- The mobile networks the eSIM connects to in that country.
coverages[].networks[].namestring- Network name, such as Vodafone or Orange.
coverages[].networks[].typesstring[]- Technologies on that network: "3G", "4G", "5G".
internetBreakouts{ country: string }[]- The country or countries where traffic reaches the internet, which decides the IP address and latency users see.
Features
tetheringboolean | null- Whether the plan can be shared as a hotspot.
canTopUpboolean | null- Whether more data can be added to the same eSIM.
eKYCboolean | null- Whether buyers must verify their identity before the eSIM works.
telephony{ voice, sms, dialingCode } | null- Voice and SMS: { voice: boolean, sms: boolean, dialingCode: string }. null if the plan is data only.
phoneNumberboolean | null- Whether the plan comes with its own phone number.
subscriptionboolean | null- Whether the plan renews automatically.
subscriptionPeriodnumber | null- Days between renewals, for subscriptions.
payAsYouGoboolean | null- Whether data is billed by usage rather than as a bundle.
hasAdsboolean | null- Whether the plan is funded by ads, as some free plans are.
newUserOnlyboolean | null- Whether only first-time customers can buy the plan.
promoEnabledboolean | null- Whether discount codes can be used on the plan.
Free text
capacityInfostring | null- Anything about the allowance, such as fair use terms or speed after a daily cap.
validityInfostring | null- Anything about validity, such as how long the customer has to install the eSIM.
activationInfostring | null- When validity starts: on purchase, on install or on first connection.
additionalInfostring | null- Anything else a traveller should know.
apnstring | null- The APN, if customers need to set one.
What makes a feed easy to work with
- 1
Send null, or leave a field out, when you do not know the answer. false means the plan definitely does not do something. We show unknown as unknown, never as a no.
- 2
Give every plan an id that survives renames and price changes. Without one, a renamed plan looks like one plan removed and another added.
- 3
One row per plan you can buy. If a plan is sold in several durations, send one row per duration, each with its own price.
- 4
Prices in major units (4.50, not 450) at the amount the customer pays. Send every currency you sell in: your own local prices are better than our conversion.
- 5
Networks belong to the country they serve. On a multi-country plan, list each country's networks under that country, not one list for the whole plan.
Different format? Send it anyway.
Around half the providers we list send something else entirely: their own APIs, XML, CSV, affiliate network product feeds. Tell us where yours lives and we will take it from there.