Developer docs

    Wanderly API

    Public, read-only feeds of the full Wanderly eSIM catalog — built for comparison sites, affiliates and aggregators such as esimDB, esims.io and eSIM Radar. No API key required.

    Overview

    Two feeds are available. Both are read-only, CORS-enabled, served over HTTPS from getwanderly.com and refreshed on every catalog sync. Prices are live retail prices — the same ones a customer sees at checkout.

    ParameterTypeDescription
    v1 catalog feedJSON / CSVGeneral-purpose feed with our native field names. Best for custom integrations and spreadsheets.
    v2 eSIM Radar feedJSONMatches the eSIM Radar ingest schema exactly (plan_name, data_amount_gb, duration_days, price_usd, affiliate_link, country_iso_code, …).
    Endpoints
    # v1 catalog feed — JSON
    https://getwanderly.com/api/catalog.json
    
    # v1 catalog feed — CSV
    https://getwanderly.com/api/catalog.csv
    
    # v2 eSIM Radar feed — JSON
    https://getwanderly.com/api/v2/catalog.json

    Authentication & limits

    No authentication, no API key, no signup. Send a plain GET request. Responses include an ETag and Last-Modified; send If-None-Match to get a cheap 304 Not Modified and skip re-downloading an unchanged feed.

    • Each endpoint returns the complete catalog in one response
    • Refreshed daily — please poll no more than once per hour
    • Use generated_at / updated_at for change detection
    • CORS: *

    Catalog feed (v1)

    GET https://getwanderly.com/api/catalog.json
    GET https://getwanderly.com/api/catalog.csv

    Returns every active plan in our native schema under products. The CSV variant carries the same columns with a header row — drop it straight into a spreadsheet or a bulk importer. Filter client-side on country_code, coverage_type or plan_kind.

    Response (truncated)
    {
      "provider": "Wanderly",
      "website": "https://getwanderly.com",
      "currency": "USD",
      "generated_at": "2026-08-06T20:00:00.000Z",
      "count": 2231,
      "products": [
        {
          "product_id": "PC2G2GAZG",
          "sku": "AF_1_7",
          "name": "Afghanistan 1GB 7Days",
          "country_code": "AF",
          "country_name": "Afghanistan",
          "coverage": "AF",
          "coverage_type": "Single",
          "plan_kind": "total",
          "data_type": "Data in Total",
          "data_gb": 1,
          "validity_days": 7,
          "unlimited": false,
          "network_speed": "3G",
          "hotspot": true,
          "kyc_required": false,
          "topup_supported": true,
          "topup_type": "Data Reloadable for same area within validitity",
          "currency": "USD",
          "price": 8.99,
          "price_per_gb": 8.99,
          "url": "https://getwanderly.com/destinations/afghanistan",
          "buy_url": "https://getwanderly.com/destinations/afghanistan?plan=PC2G2GAZG",
          "last_updated": "2026-08-06T05:00:08.213+00:00"
        }
      ]
    }

    eSIM Radar feed (v2)

    Returns the catalog in eSIM Radar's documented schema, with live USD/EUR/GBP conversion, parsed fair-usage policy for daily plans and an activation_policy of FIRST_USAGE or INSTALL. Affiliate links carry utm_source=esimradar.

    GET https://getwanderly.com/api/v2/catalog.json
    Plan object
    {
      "plan_name": "Thailand 5GB - 30 Days",
      "data_amount_gb": 5.0,
      "duration_days": 30,
      "price_usd": 12.99,
      "price_eur": 11.94,
      "price_gbp": 10.21,
      "affiliate_link": "https://getwanderly.com/destinations/thailand?plan=TH_5_30&utm_source=esimradar",
      "country_iso_code": "TH",
      "is_unlimited": false,
      "fair_usage_policy_gb": null,
      "network_type": "4G/5G",
      "activation_policy": "FIRST_USAGE",
      "supports_topup": true,
      "networks": []
    }

    Note: networks is intentionally empty — our upstream supplier does not expose carrier names in the catalog, and we would rather return nothing than guess.

    Field reference (v1)

    ParameterTypeDescription
    product_id / skustringStable unique plan identifiers. Use product_id as your primary key.
    data_gbnumberIncluded data in GB (per day when plan_kind is daily).
    validity_daysintegerPlan validity in days from activation.
    plan_kinddaily | totaltotal = fixed bucket of data; daily = allowance per day.
    coverage / coverage_typestringISO codes covered, and Single / Regional / Global.
    unlimitedbooleanTrue for unlimited plans (fair-usage may apply).
    pricenumberLive retail price in currency (USD), tax exclusive.
    price_per_gbnumberDerived price efficiency metric for ranking.
    network_speedstringMax network generation, e.g. 3G, 4G, 4G/5G.
    hotspot / kyc_requiredbooleanTethering allowed; whether ID verification is required.
    topup_supported / topup_typeboolean / stringWhether and how the eSIM can be topped up.
    url / buy_urlstringDestination page and direct plan deep link on getwanderly.com.
    last_updatedISO datetimeLast time this plan's data or price changed.

    Examples

    curl
    curl "https://getwanderly.com/api/catalog.json"
    Filter to one country (Node)
    const res = await fetch("https://getwanderly.com/api/catalog.json");
    const { plans } = await res.json();
    
    const japan = plans.filter((p) => p.country_code === "JP");
    console.log(japan.length, "Japan plans");
    Cheapest plan per country (Node)
    const { plans } = await (await fetch("https://getwanderly.com/api/catalog.json")).json();
    
    const best = {};
    for (const p of plans) {
      const cur = best[p.country_code];
      if (!cur || p.price_per_gb_usd < cur.price_per_gb_usd) best[p.country_code] = p;
    }
    console.log(best.TH);
    CSV into a spreadsheet
    =IMPORTDATA("https://getwanderly.com/api/catalog.csv")
    Only sync what changed (conditional request)
    curl -H 'If-None-Match: "<previous-etag>"' -i "https://getwanderly.com/api/v2/catalog.json"
    # 304 Not Modified means nothing changed since your last sync

    Changelog & support

    • v2 — eSIM Radar schema feed with multi-currency pricing and activation policy.
    • v1 — Catalog feed in Wanderly's native schema, JSON and CSV.

    Integration questions, higher rate limits or a custom schema? Email support@getwanderly.com and we will get you set up.