eSIMGuide - Compare Travel eSIM Plans

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
  • Roamless
  • Airalo
  • eSimHero
  • Esimatic
  • GigSky
  • VoyeGlobal
  • YonoSIM
  • LightSIM
  • Orbit Mobile
  • Wanderly eSIM
  • Always Mobile
  • Connect Me Guru
  • iroamly
  • MyTravel eSIM
  • MyEsimGlobal
  • AirPlans
  • JamboSIM
  • Saily
  • ESIM.DOG
  • Skyalo
  • Stellar eSIM
  • MoodSIM
  • PuraSIM
  • eSimCard
  • eSIM4Travel
  • Simify
  • Simsima
  • Roamix
  • esimagora

How it works

  1. 1

    Tell us about you

    Fill in the form with your brand, your website and, if you have one, your affiliate programme.

  2. 2

    Send us your plans

    A link to your plan feed in the format below, or in whatever format you already have.

  3. 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[].nameNetworks
  • types: ["5G"]5G
  • tethering: trueTethering
  • telephony.voice: trueCalls or SMS
  • canTopUp: trueTop-up
  • internetBreakoutsLow latency
  • dataCapPer: "day"Daily cap
  • dataCap: 0Unlimited
  • promoEnabled: trueApply discounts

Ask to be listed

Optional. Send it later if you do not have one yet.

Do you run an affiliate programme?

We only use your details to reply. See our privacy policy.

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.

JSON
[
  {
    "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.

JSON
[
  {
    "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. 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. 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. 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. 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. 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.

Get in touch