esimoa Esims API

The Esims API from esimoa — 2 operation(s) for esims.

GitHub OpenAPI

Operations 2

GET /v1/esims Search and compare eSIM plans #
GET /v1/esims/{id} Get one eSIM plan #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/esimoa-com:esimoa-com-esims-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

esimoa-com-esims-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: esimoa Partner Esims API
  version: 1.0.0
  description: 'Search and compare travel eSIM plans sold by esimoa. Each result includes a purchase link with your partner code; you earn a commission on purchases made through it. Docs: https://www.esimoa.com/en/developers/docs'
servers:
- url: https://api.esimoa.com
security:
- ApiKeyAuth: []
tags:
- name: Esims
paths:
  /v1/esims:
    get:
      operationId: searchEsims
      summary: Search and compare eSIM plans
      parameters:
      - name: country
        in: query
        schema:
          type: string
        description: ISO alpha-2 destination, e.g. JP
      - name: days
        in: query
        schema:
          type: integer
          minimum: 1
        description: Exact validity in days
      - name: minDays
        in: query
        schema:
          type: integer
          minimum: 1
      - name: maxDays
        in: query
        schema:
          type: integer
          minimum: 1
      - name: dataGb
        in: query
        schema:
          type: number
          minimum: 0
        description: Minimum data in GB
      - name: unlimited
        in: query
        schema:
          type: boolean
        description: Unlimited-data plans only
      - name: countries
        in: query
        schema:
          type: string
        description: Comma-separated ISO codes (2-8), e.g. FR,IT,ES — only plans that cover all of them. Overrides country.
      - name: maxDataGb
        in: query
        schema:
          type: number
          minimum: 0
        description: Maximum data in GB
      - name: minPriceKrw
        in: query
        schema:
          type: integer
          minimum: 0
        description: Minimum price in KRW
      - name: maxPriceKrw
        in: query
        schema:
          type: integer
          minimum: 0
        description: Maximum price in KRW
      - name: dataType
        in: query
        schema:
          type: string
          enum:
          - daily
          - total
        description: daily = data resets every day, total = one allowance for the whole period
      - name: localNumber
        in: query
        schema:
          type: boolean
        description: true = only plans with a local phone number (calls/SMS)
      - name: network
        in: query
        schema:
          type: string
          enum:
          - local
          - roaming
        description: local = local carrier network, roaming = roaming network
      - name: multiCountry
        in: query
        schema:
          type: boolean
        description: true = multi-country plans only, false = single-country plans only
      - name: provider
        in: query
        schema:
          type: string
        description: Provider code as returned in `provider`
      - name: hotspot
        in: query
        schema:
          type: boolean
        description: 'Hotspot support. Approximate: checked within the top 50 plans matching the other filters (offset ignored, totalIsApproximate=true).'
      - name: fiveG
        in: query
        schema:
          type: boolean
        description: 5G network. Approximate, like hotspot.
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - recommended
          - price
          - data
          - price_per_gb
          - validity
          default: recommended
        description: recommended = esimoa default order (unlimited first, then price), price = lowest price first, data = most data first, price_per_gb = lowest price per GB first, validity = longest validity first
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 50
          default: 10
      - name: offset
        in: query
        schema:
          type: integer
          minimum: 0
          default: 0
        description: Rounded down to a multiple of limit
      - name: lang
        in: query
        required: false
        schema:
          type: string
          enum:
          - ko
          - en
          - ja
          - zh-CN
          - zh-TW
          - es
          - fr
          - ar
          - vi
          - th
          - id
          - it
          - de
          default: en
        description: Language of country names and of the purchase page linked in `url`.
      responses:
        '200':
          description: Matching plans
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Esim'
                  total:
                    type: integer
                  totalIsApproximate:
                    type: boolean
                    description: Present (true) when hotspot or fiveG was used
                  limit:
                    type: integer
                  offset:
                    type: integer
                  sort:
                    type: string
        '401':
          description: Missing or invalid API key
        '429':
          description: Rate limit exceeded
      tags:
      - Esims
  /v1/esims/{id}:
    get:
      operationId: getEsim
      summary: Get one eSIM plan
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: lang
        in: query
        required: false
        schema:
          type: string
          enum:
          - ko
          - en
          - ja
          - zh-CN
          - zh-TW
          - es
          - fr
          - ar
          - vi
          - th
          - id
          - it
          - de
          default: en
        description: Language of country names and of the purchase page linked in `url`.
      responses:
        '200':
          description: The plan
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  item:
                    $ref: '#/components/schemas/Esim'
        '404':
          description: Not found
      tags:
      - Esims
components:
  schemas:
    Esim:
      type: object
      properties:
        id:
          type: string
          description: Plan id
        title:
          type: string
          description: Human readable summary, e.g. "Japan · 5GB · 7 days"
        countryCode:
          type:
          - string
          - 'null'
          description: ISO 3166-1 alpha-2 (null for multi-country plans)
        countryName:
          type:
          - string
          - 'null'
        coverageCountries:
          type: array
          items:
            type: string
        isMultiCountry:
          type: boolean
        dataAmount:
          type: string
          description: Data as shown to customers, e.g. "5GB" or "1GB/day"
        dataAmountGB:
          type:
          - number
          - 'null'
        isUnlimited:
          type: boolean
        dataType:
          type:
          - string
          - 'null'
          enum:
          - total
          - daily
          - null
        validityDays:
          type: integer
        priceKrw:
          type: integer
          description: Price in KRW (tax included)
        currency:
          type: string
          enum:
          - KRW
        provider:
          type: string
        networkType:
          type:
          - string
          - 'null'
        hotspot:
          type:
          - boolean
          - 'null'
        hasLocalNumber:
          type: boolean
        isLocalNetwork:
          type: boolean
        url:
          type: string
          format: uri
          description: Purchase link. Carries your partner code — only purchases made through this link earn commission.
      required:
      - id
      - title
      - dataAmount
      - validityDays
      - priceKrw
      - currency
      - url
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key