Partners & API

Build with eSIM Park

Plans API and partnerships for travel businesses

Comparison sites, publishers, resellers and travel agencies can list or sell our travel eSIMs. The plans API gives you every plan we sell online, with final prices, coverage and product links — in one JSON document.

This page is available in English and Polish.

177destinations
1 077plans
6currencies
1 000requests per day per key

Who we work with

Pick the model that fits you. If none does, apply anyway and tell us what you have in mind.

Comparison sites

List our plans with live prices through the API. One key per site, deep links with your own tracking parameters.

Affiliates & creators

Your own promo code and commission on every purchase — through our existing affiliate programme.

Resellers & B2B

Selling eSIMs to your own customers or equipping a team? Tell us your markets and volume and we come back with a proposal.

Travel agencies

Send travellers a destination-specific eSIM link with your partner code. We handle the sale, delivery and installation support.

Plans API overview

A read-only REST endpoint that returns one JSON document: every plan that can be bought online on esimpark.com, with the same prices the product page shows and the checkout charges.

Base URL
https://uj684erdvk.execute-api.eu-central-1.amazonaws.com/v1
Format
JSON (UTF-8), gzip on request
Authentication
x-api-key header, one key per partner
Prices
final consumer prices including VAT, in USD, EUR, GBP, PLN, RON, HUF
Updates
the document is rebuilt with every release; polling once a day is enough
Machine-readable spec
OpenAPI 3.1 (YAML) · JSON Schema

Authentication

Every request needs your API key in the x-api-key header. Keys are issued per partner after we review your application — apply below or write to partner@esimpark.com.

Endpoints

Two GET endpoints. There are no query parameters: one response contains every plan in every currency.

GET/v1/plansAll destinations and plans (the document described below).
GET/v1/schemaJSON Schema (2020-12) of the /plans response.

Example request

curl --compressed \
  -H "x-api-key: $ESIMPARK_API_KEY" \
  -H 'If-None-Match: "<last ETag>"' \
  https://uj684erdvk.execute-api.eu-central-1.amazonaws.com/v1/plans

Example response (shortened: one destination, two of its plans)

{
  "apiVersion": 1,
  "updatedAt": "2026-10-27T10:50:12Z",
  "dataVersion": "92291e58d693d2be",
  "schema": "/v1/schema",
  "provider": {
    "name": "eSIM Park",
    "website": "https://www.esimpark.com/",
    "contact": "partner@esimpark.com"
  },
  "currencies": [
    "USD",
    "EUR",
    "GBP",
    "PLN",
    "RON",
    "HUF"
  ],
  "pricesIncludeVat": true,
  "esimFee": {
    "amount": {
      "USD": 1.63,
      "EUR": 1.36,
      "GBP": 1.23,
      "PLN": 6.19,
      "RON": 7.42,
      "HUF": 490
    },
    "appliesTo": "Purchases that need a new eSIM profile (normally the first purchase). Top-ups onto an eSIM Park eSIM the traveller already has are exempt.",
    "waived": {
      "from": "2026-09-16T00:00:00+02:00",
      "until": "2027-01-01T00:00:00+01:00"
    }
  },
  "planTerms": {
    "validityStarts": "first connection to a supported network at the destination",
    "delivery": "QR code by e-mail right after payment",
    "hotspot": true,
    "topUps": true,
    "refund": "full refund within 15 days if the eSIM was not installed and no data was used"
  },
  "linkParameters": {
    "cur": "ISO currency code to open the page in, e.g. ?cur=EUR",
    "ref": "partner code for attribution, e.g. ?ref=CODE (ask us for one)",
    "utm_*": "utm_source / utm_medium / utm_campaign / utm_content are recorded"
  },
  "destinations": [
    {
      "id": "torokorszag",
      "name": "Turkey",
      "type": "country",
      "countries": [
        {
          "iso2": "TR",
          "name": "Turkey",
          "networks": [
            "Turk Telekom Turkey",
            "Vodafone Turkey"
          ]
        }
      ],
      "url": "https://www.esimpark.com/esim-turkey.html",
      "localizedUrls": {
        "en": "https://www.esimpark.com/esim-turkey.html",
        "pl": "https://www.esimpark.com/pl/esim-turcja.html"
      }
    }
  ],
  "plans": [
    {
      "id": "torokorszag-m-5gb-15d",
      "destinationId": "torokorszag",
      "name": "Turkey 5 GB / 15 days",
      "countries": [
        "TR"
      ],
      "dataType": "fixed",
      "dataGb": 5,
      "dailyDataGb": null,
      "validityDays": 15,
      "throttling": null,
      "prices": {
        "USD": 5.9,
        "EUR": 4.9,
        "GBP": 4.9,
        "PLN": 22.9,
        "RON": 27.9,
        "HUF": 1790
      },
      "url": "https://www.esimpark.com/esim-turkey.html"
    },
    {
      "id": "torokorszag-xl-3gbday-5d",
      "destinationId": "torokorszag",
      "name": "Turkey 3 GB/day / 5 days",
      "countries": [
        "TR"
      ],
      "dataType": "daily",
      "dataGb": null,
      "dailyDataGb": 3,
      "validityDays": 5,
      "throttling": {
        "afterPercentOfDailyData": 80,
        "speedKbps": 128,
        "dailyDataCarriesOver": false
      },
      "prices": {
        "USD": 13.9,
        "EUR": 11.9,
        "GBP": 9.9,
        "PLN": 50.9,
        "RON": 60.9,
        "HUF": 3990
      },
      "url": "https://www.esimpark.com/esim-turkey.html"
    }
  ]
}

The values come from the live document at the time this page was built.

Response fields

New optional fields may appear at any time — ignore the ones you don't know. Amounts are in major units (22.9 = 22.90); HUF has no decimals.

Top level

FieldTypeMeaning
apiVersionintegerAlways 1 on this version.
updatedAtstring (date-time)When the content last changed — not when the file was rebuilt.
dataVersionstringFingerprint of the content; the same value means nothing changed. Also sent as the ETag.
schemastringPath of the JSON Schema on this API (/v1/schema).
providerobjectname, website and contact e-mail.
currenciesstring[]ISO 4217 codes; every prices object has exactly these keys.
pricesIncludeVatbooleantrue: the prices are final consumer prices including VAT.
esimFeeobjectOne-time fee for a new eSIM profile, on top of the plan price.
esimFee.amountobjectThe fee per currency.
esimFee.appliesTostringWhen it is charged: purchases that need a new eSIM profile (normally the first one). Top-ups are exempt.
esimFee.waivedobject | nullfrom / until (exclusive): while now is inside this window the fee is not charged.
planTermsobjectTerms true for every plan: when validity starts, delivery, hotspot, top-ups, refund.
linkParametersobjectQuery parameters the product pages understand (cur, ref, utm_*).
destinationsobject[]One entry per destination.
plansobject[]One entry per plan, flat.

destinations[]

FieldTypeMeaning
idstringOpaque, stable identifier — don't parse it.
namestringEnglish name, as on the product page.
typestringcountry, region or global.
countriesobject[]Every covered country.
countries[].iso2stringISO 3166-1 alpha-2, upper case.
countries[].namestringEnglish country name.
countries[].networksstring[]Partner networks in that country.
urlstringEnglish product page.
localizedUrlsobjectThe product page in our other languages, keyed by language code.

plans[]

FieldTypeMeaning
idstringStable while the plan exists; a different allowance or validity gives a new id.
destinationIdstringPoints to destinations[].id.
namestringe.g. Turkey 5 GB / 15 days.
countriesstring[]ISO alpha-2 codes covered (same as the destination's).
dataTypestringfixed: dataGb for the whole validity. daily: dailyDataGb every day.
dataGbnumber | nullTotal data in GB (fixed plans).
dailyDataGbnumber | nullData per day in GB (daily plans).
validityDaysintegerDays from the first connection at the destination.
throttlingobject | nullnull: full speed until the data is used up.
throttling.afterPercentOfDailyDatanumberSpeed drops after this share of the day's data.
throttling.speedKbpsnumberSpeed after the drop, until the next day.
throttling.dailyDataCarriesOverbooleanUnused daily data does not carry over (false).
pricesobjectFinal price per currency.
urlstringProduct page to send the traveller to.

Errors & rate limits

Limits apply per key: 5 requests per second (short bursts up to 10) and 1 000 requests per day. The daily count resets at 00:00 UTC. Error bodies are JSON: {"message": "…"}.

StatusWhenResponse
200OKThe document.
304You sent the current ETag in If-None-MatchNo body — keep your copy.
403Missing, wrong or disabled x-api-keyMissing or invalid x-api-key header. Request a key at partner@esimpark.com.
403Unknown path or methodForbidden. Endpoints: GET /v1/plans, GET /v1/schema with an x-api-key header.
429More than 5 requests per secondToo many requests (limit: 5 per second). Retry after a short pause. Retry-After: 1
429Daily quota of 1 000 requests used upDaily quota (1000 requests) exceeded; it resets at 00:00 UTC.
5xxTemporary error on our sideRetry later with exponential backoff.

Caching & polling

Versioning & deprecation

Changelog

Terms of use

By using a key you agree to the following:

Apply for access

Tell us who you are and how you'd use the data. We usually reply within two working days from partner@esimpark.com.

Support & contact

Phone support · 24/7 · 18 languages · AI assistantUSA+1 305 789 7727EU+36 21 201 2432UK+44 330 190 0422 Affiliate programme Legal notice Privacy notice Terms and conditions TikTok · Instagram · Facebook · YouTube © 2026 eSIM Park — SoundCam Productions Kft.