addedInput schema / properties / currency
Added value: +{
+ "description": "Currency to show prices in (ISO 4217, e.g. \"EUR\", \"GBP\", \"USD\"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD",
+ "JPY",
+ "CNY",
+ "KRW",
+ "INR",
+ "THB",
+ "IDR",
+ "MYR",
+ "SGD",
+ "PHP",
+ "VND",
+ "PKR",
+ "BDT",
+ "LKR",
+ "AED",
+ "SAR",
+ "ILS",
+ "TRY",
+ "ZAR",
+ "KES",
+ "NGN",
+ "EGP",
+ "MAD",
+ "BRL",
+ "MXN",
+ "COP",
+ "CLP",
+ "PEN",
+ "NZD",
+ "CHF",
+ "SEK",
+ "NOK",
+ "DKK",
+ "PLN",
+ "CZK",
+ "HUF",
+ "RON",
+ "BGN",
+ "RUB"
+ ],
+ "type": "string"
+}
changedOutput schema / properties / bestPricePerGb / anyOf
Previous value: -[
- {
- "properties": {
- "calls": {
- "type": "boolean"
- },
- "countryCount": {
- "type": "integer"
- },
- "coverage": {
- "enum": [
- "country",
- "regional",
- "global"
- ],
- "type": "string"
- },
- "dataGb": {
- "description": "Total data in GB; null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "dataLabel": {
- "type": "string"
- },
- "durationDays": {
- "type": "integer"
- },
- "fiveG": {
- "type": "boolean"
- },
- "hotspot": {
- "type": "boolean"
- },
- "planId": {
- "description": "Identifier to pass to get_esim_plan.",
- "type": "string"
- },
- "priceEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "pricePerGbUsd": {
- "description": "Null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "priceUsd": {
- "type": "number"
- },
- "provider": {
- "type": "string"
- },
- "providerSlug": {
- "type": "string"
- },
- "regionName": {
- "type": [
- "string",
- "null"
- ]
- },
- "sms": {
- "type": "boolean"
- },
- "unlimited": {
- "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
- "type": "boolean"
- },
- "url": {
- "description": "MyBestSim comparison page that lists this plan.",
- "type": "string"
- }
- },
- "required": [
- "planId",
- "provider",
- "providerSlug",
- "unlimited",
- "dataGb",
- "dataLabel",
- "durationDays",
- "priceUsd",
- "priceEur",
- "pricePerGbUsd",
- "coverage",
- "regionName",
- "countryCount",
- "fiveG",
- "hotspot",
- "calls",
- "sms",
- "url"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "properties": {
+ "calls": {
+ "type": "boolean"
+ },
+ "countryCount": {
+ "type": "integer"
+ },
+ "coverage": {
+ "enum": [
+ "country",
+ "regional",
+ "global"
+ ],
+ "type": "string"
+ },
+ "dataGb": {
+ "description": "Total data in GB; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "dataLabel": {
+ "type": "string"
+ },
+ "durationDays": {
+ "type": "integer"
+ },
+ "fiveG": {
+ "type": "boolean"
+ },
+ "hotspot": {
+ "type": "boolean"
+ },
+ "planId": {
+ "description": "Identifier to pass to get_esim_plan.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price in the response currency, as the MyBestSim page shows it.",
+ "type": "number"
+ },
+ "priceEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGb": {
+ "description": "Price per GB in the response currency; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGbUsd": {
+ "description": "Null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "priceUsd": {
+ "type": "number"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "providerSlug": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sms": {
+ "type": "boolean"
+ },
+ "unlimited": {
+ "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
+ "type": "boolean"
+ },
+ "url": {
+ "description": "MyBestSim comparison page that lists this plan.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "planId",
+ "provider",
+ "providerSlug",
+ "unlimited",
+ "dataGb",
+ "dataLabel",
+ "durationDays",
+ "price",
+ "pricePerGb",
+ "priceUsd",
+ "priceEur",
+ "pricePerGbUsd",
+ "coverage",
+ "regionName",
+ "countryCount",
+ "fiveG",
+ "hotspot",
+ "calls",
+ "sms",
+ "url"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / cheapest / anyOf
Previous value: -[
- {
- "properties": {
- "calls": {
- "type": "boolean"
- },
- "countryCount": {
- "type": "integer"
- },
- "coverage": {
- "enum": [
- "country",
- "regional",
- "global"
- ],
- "type": "string"
- },
- "dataGb": {
- "description": "Total data in GB; null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "dataLabel": {
- "type": "string"
- },
- "durationDays": {
- "type": "integer"
- },
- "fiveG": {
- "type": "boolean"
- },
- "hotspot": {
- "type": "boolean"
- },
- "planId": {
- "description": "Identifier to pass to get_esim_plan.",
- "type": "string"
- },
- "priceEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "pricePerGbUsd": {
- "description": "Null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "priceUsd": {
- "type": "number"
- },
- "provider": {
- "type": "string"
- },
- "providerSlug": {
- "type": "string"
- },
- "regionName": {
- "type": [
- "string",
- "null"
- ]
- },
- "sms": {
- "type": "boolean"
- },
- "unlimited": {
- "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
- "type": "boolean"
- },
- "url": {
- "description": "MyBestSim comparison page that lists this plan.",
- "type": "string"
- }
- },
- "required": [
- "planId",
- "provider",
- "providerSlug",
- "unlimited",
- "dataGb",
- "dataLabel",
- "durationDays",
- "priceUsd",
- "priceEur",
- "pricePerGbUsd",
- "coverage",
- "regionName",
- "countryCount",
- "fiveG",
- "hotspot",
- "calls",
- "sms",
- "url"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "properties": {
+ "calls": {
+ "type": "boolean"
+ },
+ "countryCount": {
+ "type": "integer"
+ },
+ "coverage": {
+ "enum": [
+ "country",
+ "regional",
+ "global"
+ ],
+ "type": "string"
+ },
+ "dataGb": {
+ "description": "Total data in GB; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "dataLabel": {
+ "type": "string"
+ },
+ "durationDays": {
+ "type": "integer"
+ },
+ "fiveG": {
+ "type": "boolean"
+ },
+ "hotspot": {
+ "type": "boolean"
+ },
+ "planId": {
+ "description": "Identifier to pass to get_esim_plan.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price in the response currency, as the MyBestSim page shows it.",
+ "type": "number"
+ },
+ "priceEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGb": {
+ "description": "Price per GB in the response currency; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGbUsd": {
+ "description": "Null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "priceUsd": {
+ "type": "number"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "providerSlug": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sms": {
+ "type": "boolean"
+ },
+ "unlimited": {
+ "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
+ "type": "boolean"
+ },
+ "url": {
+ "description": "MyBestSim comparison page that lists this plan.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "planId",
+ "provider",
+ "providerSlug",
+ "unlimited",
+ "dataGb",
+ "dataLabel",
+ "durationDays",
+ "price",
+ "pricePerGb",
+ "priceUsd",
+ "priceEur",
+ "pricePerGbUsd",
+ "coverage",
+ "regionName",
+ "countryCount",
+ "fiveG",
+ "hotspot",
+ "calls",
+ "sms",
+ "url"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / cheapestUnlimited / anyOf
Previous value: -[
- {
- "properties": {
- "calls": {
- "type": "boolean"
- },
- "countryCount": {
- "type": "integer"
- },
- "coverage": {
- "enum": [
- "country",
- "regional",
- "global"
- ],
- "type": "string"
- },
- "dataGb": {
- "description": "Total data in GB; null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "dataLabel": {
- "type": "string"
- },
- "durationDays": {
- "type": "integer"
- },
- "fiveG": {
- "type": "boolean"
- },
- "hotspot": {
- "type": "boolean"
- },
- "planId": {
- "description": "Identifier to pass to get_esim_plan.",
- "type": "string"
- },
- "priceEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "pricePerGbUsd": {
- "description": "Null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "priceUsd": {
- "type": "number"
- },
- "provider": {
- "type": "string"
- },
- "providerSlug": {
- "type": "string"
- },
- "regionName": {
- "type": [
- "string",
- "null"
- ]
- },
- "sms": {
- "type": "boolean"
- },
- "unlimited": {
- "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
- "type": "boolean"
- },
- "url": {
- "description": "MyBestSim comparison page that lists this plan.",
- "type": "string"
- }
- },
- "required": [
- "planId",
- "provider",
- "providerSlug",
- "unlimited",
- "dataGb",
- "dataLabel",
- "durationDays",
- "priceUsd",
- "priceEur",
- "pricePerGbUsd",
- "coverage",
- "regionName",
- "countryCount",
- "fiveG",
- "hotspot",
- "calls",
- "sms",
- "url"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "properties": {
+ "calls": {
+ "type": "boolean"
+ },
+ "countryCount": {
+ "type": "integer"
+ },
+ "coverage": {
+ "enum": [
+ "country",
+ "regional",
+ "global"
+ ],
+ "type": "string"
+ },
+ "dataGb": {
+ "description": "Total data in GB; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "dataLabel": {
+ "type": "string"
+ },
+ "durationDays": {
+ "type": "integer"
+ },
+ "fiveG": {
+ "type": "boolean"
+ },
+ "hotspot": {
+ "type": "boolean"
+ },
+ "planId": {
+ "description": "Identifier to pass to get_esim_plan.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price in the response currency, as the MyBestSim page shows it.",
+ "type": "number"
+ },
+ "priceEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGb": {
+ "description": "Price per GB in the response currency; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGbUsd": {
+ "description": "Null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "priceUsd": {
+ "type": "number"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "providerSlug": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sms": {
+ "type": "boolean"
+ },
+ "unlimited": {
+ "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
+ "type": "boolean"
+ },
+ "url": {
+ "description": "MyBestSim comparison page that lists this plan.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "planId",
+ "provider",
+ "providerSlug",
+ "unlimited",
+ "dataGb",
+ "dataLabel",
+ "durationDays",
+ "price",
+ "pricePerGb",
+ "priceUsd",
+ "priceEur",
+ "pricePerGbUsd",
+ "coverage",
+ "regionName",
+ "countryCount",
+ "fiveG",
+ "hotspot",
+ "calls",
+ "sms",
+ "url"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
addedOutput schema / properties / currency
Added value: +{
+ "description": "Currency of price, pricePerGb and totals (ISO 4217).",
+ "type": "string"
+}
addedOutput schema / properties / currencySymbol
Added value: +{
+ "description": "Symbol the MyBestSim page uses for that currency.",
+ "type": "string"
+}
addedOutput schema / properties / typicalPrices
Added value: +{
+ "anyOf": [
+ {
+ "description": "Typical prices on the comparison page, computed over ALL its plans (never a sample), in the response currency. For each standard package: median, lowest and highest price of the plans with exactly that data and validity (unlimited: any unlimited plan of that validity); planCount 0 = no such plan, prices null. medianPricePerGb: median of price ÷ GB over every fixed-data plan. Use these for \"average\" or \"typical\" price questions; a median is the middle plan, not the mean.",
+ "properties": {
+ "fixedDataPlanCount": {
+ "type": "integer"
+ },
+ "medianPricePerGb": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "packages": {
+ "items": {
+ "properties": {
+ "dataGb": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "durationDays": {
+ "type": "integer"
+ },
+ "high": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "low": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "median": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "planCount": {
+ "type": "integer"
+ },
+ "unlimited": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "dataGb",
+ "unlimited",
+ "durationDays",
+ "planCount",
+ "median",
+ "low",
+ "high"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "packages",
+ "medianPricePerGb",
+ "fixedDataPlanCount"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+}
changedOutput schema / required
Previous value: -[
- "destination",
- "language",
- "comparisonUrl",
- "planCount",
- "providerCount",
- "cheapest",
- "bestPricePerGb",
- "cheapestUnlimited",
- "durationsDays"
-]New value: +[
+ "destination",
+ "language",
+ "comparisonUrl",
+ "currency",
+ "currencySymbol",
+ "planCount",
+ "providerCount",
+ "typicalPrices",
+ "cheapest",
+ "bestPricePerGb",
+ "cheapestUnlimited",
+ "durationsDays"
+]