AeroCell: Affordable eSIMs · Developers

    Live travel data.
    Ready for your AI application.

    Search current travel eSIM plans for a country or a multi-country itinerary. Get USD prices, data allowances, validity, network summaries and verified bundle coverage through MCP or a read-only JSON API.

    Public access, no credentials

    MCP endpoint: https://aerocell.app/mcp. Transport: Streamable HTTP, stateless. The three search tools and JSON routes require no AeroCell account, OAuth, API key, bearer token or cookie. An AI client's own account requirements may still apply.

    The MCP client performs initialization and discovers tool schemas through tools/list. POST requests must accept both application/json and text/event-stream. A normal browser GET shows a short guide; it does not execute a search.

    Country results use the existing recommendation catalog with a five-minute cache. Regional results fetch the existing bundle catalog. Allowances and prices can change before checkout.

    Connect an AI client

    These configuration examples were checked against the linked official documentation on 12 October 2026. They are untested client examples. Local automated tests use the official MCP TypeScript SDK to initialize, list tools and search; a passing SDK test does not establish compatibility in every AI application.

    Codex CLI / IDE extension

    codex mcp add aerocell --url https://aerocell.app/mcp
    codex mcp list

    Alternative entry in ~/.codex/config.toml:

    [mcp_servers.aerocell]
    url = "https://aerocell.app/mcp"

    Official OpenAI connection documentation. Untested with AeroCell in this client.

    Claude Code

    claude mcp add --transport http aerocell https://aerocell.app/mcp
    claude mcp get aerocell

    Official Claude Code MCP documentation. Untested with AeroCell in this client.

    VS Code / GitHub Copilot

    Save this in .vscode/mcp.json, then start the server from the file's controls and enable its tools in agent mode.

    {
      "servers": {
        "aerocell": {
          "type": "http",
          "url": "https://aerocell.app/mcp"
        }
      }
    }

    Official VS Code MCP documentation. Untested with AeroCell in this client.

    Test prompt: “Find plans for Japan from 15 to 25 October 2026 with at least 3 GB, under $25.” For itineraries, pass every country code and inspect the returned coverage list.

    Three read-only MCP tools

    All tools return JSON as structuredContent and as text content. The samples below show the structured JSON. MCP tool failures return isError: true with a useful message; invalid schema inputs can also produce protocol errors. None of the tools places orders.

    find_esim_plans

    Find current single-country plans.

    Request parameters
    ParameterTypeBehavior
    country_codestring, requiredTwo-letter ISO 3166-1 alpha-2 code, such as JP, FR or GB. Case-insensitive. The catalog also accepts XK.
    start_date / end_datestring, optionalProvide both real YYYY-MM-DD dates. Inclusive range: 1–366 days. Dates constrain validity; they do not reserve inventory or schedule activation.
    min_data_gbnumber ≥ 0Minimum allowance. Displayed GB uses 1024³ bytes and one-decimal rounding.
    max_price_usdnumber > 0Maximum live total plan price in USD.
    require_trip_coveragebooleanDefaults to true with dates. False allows shorter plans; inspect covers_trip.
    limitinteger 1–20Default 8. Cheapest first, then more data. total_matching counts all matches before this limit.
    {
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "find_esim_plans",
        "arguments": {
          "country_code": "JP",
          "start_date": "2026-10-15",
          "end_date": "2026-10-25",
          "min_data_gb": 3,
          "max_price_usd": 25,
          "limit": 8
        }
      }
    }

    Illustrative response, not a live offer. All sample prices, operator names and EXAMPLE IDs are fixtures. Retrieve real IDs through search.

    {
      "country": {
        "code": "JP",
        "name": "Japan"
      },
      "trip_days": 11,
      "currency": "USD",
      "updated_at": "2026-10-12T12:00:00Z",
      "total_matching": 1,
      "browse_url": "https://aerocell.app/plans",
      "note": "Illustrative fixture only. Fetch live prices and real plan IDs before recommending or opening checkout.",
      "plans": [
        {
          "id": "EXAMPLE-JP-5GB",
          "name": "Example Japan 5 GB",
          "data_gb": 5,
          "validity_days": 15,
          "price_usd": 9,
          "network": "5G",
          "operators": [
            "Example operator"
          ],
          "covers_trip": true,
          "plan_page_url": "https://aerocell.app/plans/japan",
          "checkout_url": "https://aerocell.app/checkout/EXAMPLE-JP-5GB"
        }
      ]
    }

    get_esim_plan

    Request parameters
    ParameterTypeBehavior
    country_codestring, requiredThe same country code used in find_esim_plans.
    plan_idstring, requiredID from that country search, 1–100 letters, digits, underscores or hyphens. Regional IDs are not supported by this tool; refresh them through regional search.
    {
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "get_esim_plan",
        "arguments": {
          "country_code": "JP",
          "plan_id": "EXAMPLE-JP-5GB"
        }
      }
    }

    Replace the EXAMPLE ID with a real country-search ID. Illustrative detail response:

    {
      "country": {
        "code": "JP",
        "name": "Japan"
      },
      "currency": "USD",
      "updated_at": "2026-10-12T12:00:00Z",
      "plan": {
        "id": "EXAMPLE-JP-5GB",
        "name": "Example Japan 5 GB",
        "data_gb": 5,
        "validity_days": 15,
        "price_usd": 9,
        "network": "5G",
        "operators": [
          "Example operator"
        ],
        "covers_trip": null,
        "plan_page_url": "https://aerocell.app/plans/japan",
        "checkout_url": "https://aerocell.app/checkout/EXAMPLE-JP-5GB"
      },
      "note": "Illustrative fixture only. Fetch live prices and real plan IDs before recommending or opening checkout."
    }

    find_regional_esim_plans

    Request parameters
    ParameterTypeBehavior
    country_codesstring[], conditional1–30 distinct codes for every itinerary country. Required unless region is supplied. Every requested country must appear in each bundle's coverage list.
    regionstring, conditionalglobal, europe, asia_pacific, southeast_asia, latin_america, middle_east_north_africa or gulf. Can combine with country_codes. Required unless country_codes is supplied.
    start_date / end_datestring, optionalProvide both real YYYY-MM-DD dates. Inclusive range: 1–366 days. Dates constrain validity; they do not reserve inventory or schedule activation.
    min_data_gbnumber ≥ 0Minimum allowance. Displayed GB uses 1024³ bytes and one-decimal rounding.
    max_price_usdnumber > 0Maximum live total plan price in USD.
    require_trip_coveragebooleanDefaults to true with dates. False allows shorter plans; inspect covers_trip.
    limitinteger 1–20Default 8. Cheapest first, then more data. total_matching counts all matches before this limit.
    {
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "find_regional_esim_plans",
        "arguments": {
          "country_codes": [
            "FR",
            "IT",
            "ES"
          ],
          "region": "europe",
          "start_date": "2026-10-15",
          "end_date": "2026-10-25",
          "min_data_gb": 3,
          "max_price_usd": 25
        }
      }
    }

    Illustrative response. country_codes is the bundle's exact published coverage list. Region names alone do not establish itinerary coverage.

    {
      "requested_country_codes": [
        "FR",
        "IT",
        "ES"
      ],
      "region": "europe",
      "trip_days": 11,
      "currency": "USD",
      "updated_at": "2026-10-12T12:00:00Z",
      "total_matching": 1,
      "browse_url": "https://aerocell.app/plans",
      "note": "Illustrative fixture only. Fetch live prices and real plan IDs before recommending or opening checkout.",
      "plans": [
        {
          "id": "EXAMPLE-EU-5GB",
          "name": "Example Europe 5 GB",
          "data_gb": 5,
          "validity_days": 15,
          "price_usd": 9,
          "network": "5G",
          "operators": [
            "Example operator"
          ],
          "covers_trip": true,
          "plan_page_url": "https://aerocell.app/plans/europe",
          "checkout_url": "https://aerocell.app/checkout/EXAMPLE-EU-5GB",
          "region_code": "EU-3",
          "country_codes": [
            "FR",
            "IT",
            "ES"
          ],
          "country_count": 3
        }
      ]
    }

    The same searches over JSON

    All three routes use the same live search functions as MCP. Send HTTP GET requests; receive the same structured result schemas. No login required. Browser access allows CORS without credentials.

    curl --get 'https://aerocell.app/api/v1/esim/plans' \
      --data-urlencode 'country_code=JP' \
      --data-urlencode 'start_date=2026-10-15' \
      --data-urlencode 'end_date=2026-10-25' \
      --data-urlencode 'min_data_gb=3' \
      --data-urlencode 'max_price_usd=25' \
      --data-urlencode 'limit=8'
    curl --get 'https://aerocell.app/api/v1/esim/regional-plans' \
      --data-urlencode 'country_codes=FR,IT,ES' \
      --data-urlencode 'region=europe' \
      --data-urlencode 'start_date=2026-10-15' \
      --data-urlencode 'end_date=2026-10-25' \
      --data-urlencode 'min_data_gb=3' \
      --data-urlencode 'max_price_usd=25'

    Plan details require country_code. This runnable example needs jq and uses a real returned plan ID:

    PLAN_ID=$(curl -fsS 'https://aerocell.app/api/v1/esim/plans?country_code=JP&limit=1' | jq -r '.plans[0].id // empty')
    if [ -n "$PLAN_ID" ]; then
      curl -fsS "https://aerocell.app/api/v1/esim/plans/$PLAN_ID?country_code=JP"
    fi

    For JSON queries, country_codes is one comma-separated parameter; numeric fields are decimal numbers; booleans are exactly true or false. Unknown, empty and repeated parameters are rejected. Detail requests accept only country_code.

    Download the public OpenAPI 3.1 specification for full route schemas and examples.

    Comparison websites

    Import GET /api/v1/esim/catalog to list AeroCell alongside other providers. This public JSON feed requires no account or API key and allows browser access without credentials. It returns the complete purchasable catalog in one response, including country and regional plans and every day-pass duration from 1–90 days. There is no search limit or pagination. Hidden products and existing-customer top-ups are excluded.

    curl -fsS -D catalog-headers.txt \
      'https://aerocell.app/api/v1/esim/catalog' \
      -o aerocell-catalog.json

    Poll every 15 minutes. Save the response's ETag header and send it as If-None-Match on subsequent requests. HTTP 304 means your previous catalog remains current; HTTP 200 supplies a complete replacement. catalog_version changes when public plan content changes. Respect Retry-After on HTTP 429 or 503, keep your previous import, and retry. An error must never be imported as an empty catalog.

    curl -sS -D catalog-headers.txt \
      -H 'If-None-Match: "<saved-etag>"' \
      'https://aerocell.app/api/v1/esim/catalog' \
      -o catalog-response.json
    # Inspect the HTTP status before replacing your saved catalog.

    Illustrative response, not a live offer. The example contains a fixture; fetch the endpoint for the complete live catalog.

    {
      "schema_version": 1,
      "provider": "AeroCell",
      "currency": "USD",
      "price_basis": "Retail before coupons; daily variants show the total duration price.",
      "total_plans": 1,
      "plans": [
        {
          "id": "EXAMPLE-JP-5GB",
          "package_code": "EXAMPLE-JP-5GB",
          "name": "Illustrative Japan 5GB (not a live offer)",
          "country_codes": [
            "JP"
          ],
          "data_gb": 5,
          "allowance_period": "plan",
          "is_unlimited": false,
          "allowance_behavior": "total",
          "reduced_speed_kbps": null,
          "maximum_speed_kbps": null,
          "validity_days": 15,
          "is_daily": false,
          "price_usd": 9,
          "operators": [
            {
              "name": "Example operator",
              "network": "5G"
            }
          ],
          "plan_page_url": "https://aerocell.app/plans/japan",
          "checkout_url": "https://aerocell.app/checkout/EXAMPLE-JP-5GB"
        }
      ],
      "catalog_version": "3cedf68183c3a264aa809b94f0ffa23cd572c44831a56586e612918c4df24dc4",
      "generated_at": "2026-10-13T00:00:00.000Z",
      "source_updated_at": "2026-10-13T00:00:00.000Z",
      "refresh_after_seconds": 900
    }

    Allowances, duration and freshness

    data_gb is the high-speed allowance for allowance_period, using 1024³ bytes per GB. A daily allowance repeats each day; do not present it as a total trip allowance. daily_throttled plans continue at the published reduced_speed_kbps after that day's quota. daily_cutoff plans stop until the quota resets. is_unlimited does not mean unlimited high-speed data. Null speed fields mean unspecified, not uncapped.

    Each plan has a stable id, exact country_codes, operator network summaries and AeroCell purchase links. Day-pass IDs append their selected duration to package_code; their price_usd is the total for that duration, including ordinary duration discounts and before coupons. The checkout URL already selects the duration. The fixed-plan storefront minimum of 1,000,000,000 bytes is preserved; daily plans with smaller high-speed quotas are included.

    source_updated_at is the oldest provider catalog retrieval used in the response, not a provider price-change timestamp. Snapshot contents refresh within five minutes; provider data is cached for up to 15 minutes. Missing required facts or expired source data produce HTTP 503 instead of a partial catalog.

    Registered partner links

    Registered partners can fetch GET /api/partners/comparison-catalog from their server using an existing scoped feed credential: Authorization: Bearer <feed-key>. This returns the same plans with partner purchase links when referral tracking is enabled. tracking_enabled reports whether those links carry attribution. Prices are unchanged. Keep the key on your server; it does not authorize purchases or reporting access. Contact [email protected] for partner access.

    Response fields & errors

    price_usd is the current catalog price; currency is USD. data_gb, validity_days, network and operators describe the plan. Operators are a catalog summary of up to four names, not a complete per-country network map. Regional bundles include country_codes, country_count and region_code.

    covers_trip is null without dates. It indicates validity length only. updated_at for country results is the upstream catalog snapshot time; for regional results it is the catalog retrieval time, not a provider price-change timestamp. Returned plan_page_url, browse_url and checkout_url open AeroCell.

    Request parameters
    ParameterTypeBehavior
    200SuccessNo matches is also 200: plans: [], total_matching: 0.
    400Invalid inputMissing country, invalid dates, duplicate codes, unsupported region or invalid filters.
    404Not foundPlan is unavailable for the supplied country, or API route does not exist.
    405Method not allowedRead-only plan routes accept GET and CORS OPTIONS.
    502Invalid catalog responseUpstream returned an invalid response; no guessed prices are substituted.
    503Catalog unavailableRetry later; Retry-After suggests 30 seconds.
    {
      "error": {
        "code": "invalid_input",
        "message": "Provide both start_date and end_date."
      }
    }

    Checkout & privacy

    Open the returned checkout link on aerocell.app. The traveler completes any required sign-in and checkout there. Refresh current prices, check device eSIM compatibility and confirm regional coverage before purchase. These interfaces do not process payments, create purchases, or expose account, order or eSIM installation credentials.

    The MCP and JSON request handlers have no search-history database, per-user session store or request analytics. Searches use request memory. Travel dates are applied locally and are not forwarded to the upstream catalog; single-country lookups forward the destination country code. The upstream country catalog cache contains plan data, not visitor dates or IP addresses.

    The included API proxy configuration disables access logging for the new JSON search routes. JSON GET URLs contain search fields, so clients and hosting infrastructure may see them. Source inspection does not establish deployed proxy, CDN, backup or log-retention settings. See the existing privacy policy for the website's practices.

    Built by Mezsondra LTD

    AeroCell: Affordable eSIMs is operated by Mezsondra LTD. Contact [email protected] for integration help.

    Support · Privacy policy · Terms · About AeroCell

    Discovery files help applications understand these interfaces; they do not guarantee that AI platforms will discover, list or recommend AeroCell.