Mobile, home internet and energy prices in 34 countries, read on operators' pages and dated.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Household electricity and gas tariffs in these markets: Belgium, Netherlands, United Kingdom, Spain. Returns the tariffs that fit the stated fuel, region, meter, contract and green needs, ranked by cost over the horizon (unit rates x yearly consumption, standing charges, supplier charges on the price card, welcome credits), each part shown, with the period the prices apply to, source link and check date. Prices are compared on one stated basis per market; parts that are the same for every supplier at an address (e.g. network charges, taxes) are named, not computed. Dynamic hourly tariffs are listed, not costed. Per market: Belgium: supplier energy cost and fixed fee incl. VAT; region Flanders, Wallonia or Brussels; gas in kWh. Netherlands: supplier delivery prices incl. energy tax and VAT; national prices (no region); gas in m³ (gas_m3), as Dutch suppliers price it. United Kingdom: all-in unit rates and standing charges incl. VAT, as on the Tariff Information Label; one of 14 regions; unit rates per kWh and standing charges per day, in GBP; Ofgem's price-cap level for the region is returned as a reference line, not an offer. Spain: energy and power terms incl. peajes y cargos, before taxes; zone (peninsula, Baleares, Canarias, Ceuta, Melilla); contracted power in kW (contracted_kw) for the power term; period_shares for three-period (P1/P2/P3) tariffs.
Market, ISO 3166-1 alpha-2.
dual = electricity and gas from one supplier.
Number of results, default 5, max 20.
Single-rate, day/night (two-rate) or smart meter.
Yearly gas use in m³ (Netherlands).
Region or city (BE: Flanders/Wallonia/Brussels; GB: one of 14 regions or a city; ES: peninsula, Baleares, Canarias, Ceuta, Melilla).
Yearly gas use in kWh.
Fixed or variable price wanted.
Only tariffs stated as 100% renewable.
Share of electricity used at night / off-peak, 0 to 1 (two-rate meters).
ES: contracted power (potencia contratada) in kW.
ES 2.0TD: share of use in P1 (punta), P2 (llano), P3 (valle); sums to 1.
Months to cost over. Default 12.
Yearly electricity use in kWh.
Longest fixed term accepted, in months.
True if the household qualifies for social or restricted tariffs.
Supplier the household is already with (unlocks existing-customer tariffs).
Household electricity and gas tariffs in these markets: Belgium, Netherlands, United Kingdom, Spain. Returns the tariffs that fit the stated fuel, region, meter, contract and green needs, ranked by cost over the horizon (unit rates x yearly consumption, standing charges, supplier charges on the price card, welcome credits), each part shown, with the period the prices apply to, source link and check date. Prices are compared on one stated basis per market; parts that are the same for every supplier at an address (e.g. network charges, taxes) are named, not computed. Dynamic hourly tariffs are listed, not costed. Per market: Belgium: supplier energy cost and fixed fee incl. VAT; region Flanders, Wallonia or Brussels; gas in kWh. Netherlands: supplier delivery prices incl. energy tax and VAT; national prices (no region); gas in m³ (gas_m3), as Dutch suppliers price it. United Kingdom: all-in unit rates and standing charges incl. VAT, as on the Tariff Information Label; one of 14 regions; unit rates per kWh and standing charges per day, in GBP; Ofgem's price-cap level for the region is returned as a reference line, not an offer. Spain: energy and power terms incl. peajes y cargos, before taxes; zone (peninsula, Baleares, Canarias, Ceuta, Melilla); contracted power in kW (contracted_kw) for the power term; period_shares for three-period (P1/P2/P3) tariffs.
| Argument | Type | Description |
|---|---|---|
| fuel | string | dual = electricity and gas from one supplier. |
| limit | number | Number of results, default 5, max 20. |
| meter | string | Single-rate, day/night (two-rate) or smart meter. |
| gas_m3 | number | Yearly gas use in m³ (Netherlands). |
| region | string | Region or city (BE: Flanders/Wallonia/Brussels; GB: one of 14 regions or a city; ES: peninsula, Baleares, Canarias, Ceuta, Melilla). |
| country* | string | Market, ISO 3166-1 alpha-2. |
| gas_kwh | number | Yearly gas use in kWh. |
| contract | string | Fixed or variable price wanted. |
| green_only | boolean | Only tariffs stated as 100% renewable. |
| night_share | number | Share of electricity used at night / off-peak, 0 to 1 (two-rate meters). |
| contracted_kw | number | ES: contracted power (potencia contratada) in kW. |
| period_shares | object | ES 2.0TD: share of use in P1 (punta), P2 (llano), P3 (valle); sums to 1. |
| horizon_months | number | Months to cost over. Default 12. |
| electricity_kwh | number | Yearly electricity use in kWh. |
| max_term_months | number | Longest fixed term accepted, in months. |
| special_eligibility | boolean | True if the household qualifies for social or restricted tariffs. |
| existing_customer_of | string | Supplier the household is already with (unlocks existing-customer tariffs). |
{
"type": "object",
"required": [
"country"
],
"properties": {
"fuel": {
"enum": [
"electricity",
"gas",
"dual"
],
"type": "string",
"description": "dual = electricity and gas from one supplier."
},
"limit": {
"type": "number",
"description": "Number of results, default 5, max 20."
},
"meter": {
"enum": [
"single",
"dual",
"smart"
],
"type": "string",
"description": "Single-rate, day/night (two-rate) or smart meter."
},
"gas_m3": {
"type": "number",
"description": "Yearly gas use in m³ (Netherlands)."
},
"region": {
"type": "string",
"description": "Region or city (BE: Flanders/Wallonia/Brussels; GB: one of 14 regions or a city; ES: peninsula, Baleares, Canarias, Ceuta, Melilla)."
},
"country": {
"enum": [
"BE",
"NL",
"GB",
"ES"
],
"type": "string",
"description": "Market, ISO 3166-1 alpha-2."
},
"gas_kwh": {
"type": "number",
"description": "Yearly gas use in kWh."
},
"contract": {
"enum": [
"fixed",
"variable",
"any"
],
"type": "string",
"description": "Fixed or variable price wanted."
},
"green_only": {
"type": "boolean",
"description": "Only tariffs stated as 100% renewable."
},
"night_share": {
"type": "number",
"description": "Share of electricity used at night / off-peak, 0 to 1 (two-rate meters)."
},
"contracted_kw": {
"type": "number",
"description": "ES: contracted power (potencia contratada) in kW."
},
"period_shares": {
"type": "object",
"properties": {
"p1": {
"type": "number"
},
"p2": {
"type": "number"
},
"p3": {
"type": "number"
}
},
"description": "ES 2.0TD: share of use in P1 (punta), P2 (llano), P3 (valle); sums to 1."
},
"horizon_months": {
"type": "number",
"description": "Months to cost over. Default 12."
},
"electricity_kwh": {
"type": "number",
"description": "Yearly electricity use in kWh."
},
"max_term_months": {
"type": "number",
"description": "Longest fixed term accepted, in months."
},
"special_eligibility": {
"type": "boolean",
"description": "True if the household qualifies for social or restricted tariffs."
},
"existing_customer_of": {
"type": "string",
"description": "Supplier the household is already with (unlocks existing-customer tariffs)."
}
}
}Consumer home internet offers (fixed broadband alone or with TV, landline or mobile) in these markets: Belgium, Netherlands, Germany, France, United Kingdom, Italy, Spain, Romania, Slovenia, Malta, Cyprus, Estonia, Slovakia, Hungary, Croatia, Latvia, Austria, Switzerland, Luxembourg, Iceland, Liechtenstein, United States, Bulgaria, Czechia, Denmark, Finland, Greece, Ireland, Lithuania, Norway, Poland, Portugal, Sweden, Canada. Returns the offers that meet the stated speed, region, TV / landline and contract needs, ranked by average monthly cost over the horizon (promos for their stated months, one-off fees, modem rental, and bundle discounts when the household has that operator's mobile), each part shown, with the source link, check date and the operator's address-check link. List prices are national; availability depends on the address.
| Argument | Type | Description |
|---|---|---|
| limit | number | Number of results, default 5, max 20. |
| region | string | Province, state or region (e.g. Wallonia, Friesland, Texas). Regional operators are matched on it. |
| autopay | boolean | US: false = the household won't use AutoPay / paperless billing; advertised AutoPay discounts are added back. Default true. |
| country* | string | Market, ISO 3166-1 alpha-2. |
| wants_tv | boolean | |
| technology |
Consumer mobile phone plans (SIM-only and prepaid) in these markets: Belgium, Netherlands, Luxembourg, France, Iceland, Hungary, Finland, Slovenia, Ireland, Slovakia, Estonia, Latvia, Croatia, Greece, Malta, Liechtenstein, Portugal, Lithuania, Romania, Bulgaria, Cyprus, Czechia, Norway, Sweden, Austria, Poland, Italy, Denmark, United Kingdom, Switzerland, Spain, Germany, United States, Canada, including mobile data while travelling from there. Returns the plans that meet every stated need, ranked by effective monthly cost including promos, one-off fees and the cost of covering their trips (EU allowance and surcharges, or Canada and Mexico for US plans; operator roaming passes, travel eSIMs), each with its source link and check date (collected_by_hand where a person read the price on the operator's own website), plus questions worth asking the person (missing_inputs).
| Argument | Type | Description |
|---|---|---|
| age | number | Only needed for youth and senior plans. |
| limit | number | Number of results, default 5, max 20. |
| lines | number | Number of lines (e.g. a family of 4). Default 1. Costs are then the total for all lines; each line has the data/minutes need above. |
| travel | array | Specific trips per year, when the person knows them. Takes precedence over travel_profile and roaming_gb_month. Omit all three if unknown (the result then lists travel under missing_inputs); pass [] if the person does not travel. A trip with both days_per_year and data_gb_per_day is costed exactly; a trip missing either (e.g. just the country) only requires the plan to offer roaming there — no size or cost is assumed. |
The public Veritaset ranking rules and assumptions, with version, so a recommendation can be explained or audited.
No arguments.
{
"type": "object",
"properties": {}
}Checks whether a cheaper mobile plan fits someone's actual usage (from a bill, an app screenshot or their own estimate) in their market. Takes a few months of usage and, if known, the current plan; returns plans that cover most of their months, ranked by effective monthly cost including trips, with the yearly saving against their current plan, sources and check dates. Send only numbers: no names, phone numbers or bills.
| Argument | Type | Description |
|---|---|---|
| age | number | Only needed for youth and senior plans. |
| limit | number | Number of results, default 5, max 20. |
| lines | number | Number of lines (e.g. a family of 4). Default 1. Costs are then the total for all lines; each line has the data/minutes need above. |
| autopay | boolean | false = the person won't use AutoPay; advertised AutoPay discounts are added back. Default true. |
| country | string | Market, ISO 3166-1 alpha-2 (BE, NL, LU, FR, IS, HU, FI, SI, IE, SK, EE, LV, HR, GR, MT, LI, PT, LT, RO, BG, CY, CZ, NO, SE, AT, PL, IT, DK, GB, CH, ES, DE, US, CA). Prices are in that market's currency. |
| needs_5g | boolean | |
| province | string | Canada: the province or territory (name or code, e.g. Quebec, ON) where the line will be used. Plans whose source lists other provinces don't fit. |
Full published record of one mobile plan or travel eSIM by offer_id, in any covered market: allowances, roaming (EU allowance, or Canada and Mexico for US plans), roaming passes, promo terms, source URL, source type (manual = collected by hand from the operator's own website in a normal browser) and check date.
| Argument | Type | Description |
|---|---|---|
| country | string | Market of the offer, ISO 3166-1 alpha-2, if known. |
| offer_id* | string |
{
"type": "object",
"required": [
"offer_id"
],
"properties": {
"country": {
"type": "string",
"description": "Market of the offer, ISO 3166-1 alpha-2, if known."
},
"offer_id": {
"type": "string"
}
}
}Where a mobile operator keeps a customer's own usage history and how to get it out: the portal page to open (the customer logs in themselves), the steps, the download format, how many months it goes back and whether invoices show usage. Its output is where the per-day or per-month usage for find_better_plan comes from. Gives generic steps when the operator has no recipe yet.
| Argument | Type | Description |
|---|---|---|
| country | string | Two-letter country code of the plan, e.g. NL. |
| operator* | string | Operator or brand name, or the domain its invoices come from, e.g. 'Odido' or 'odido.nl'. |
{
"type": "object",
"required": [
"operator"
],
"properties": {
"country": {
"type": "string",
"description": "Two-letter country code of the plan, e.g. NL."
},
"operator": {
"type": "string",
"description": "Operator or brand name, or the domain its invoices come from, e.g. 'Odido' or 'odido.nl'."
}
}
}Markets covered by Veritaset for mobile plans and for home internet and household energy, with status, measured accuracy (share of audited facts correct, with a 95% interval, the number of facts and offers checked and the audit date, or "not measured"), brand and offer counts, how many were collected by hand, and the date of the last data check.
No arguments.
{
"type": "object",
"properties": {}
}Records an agent's rating of, and feedback on, Veritaset data; optionally reports a suspected data error. Needs the answer_id returned with an answer from this connector in the last 24 hours (one rating per answer). Ratings are published at https://veritaset.com/agent-ratings/.
| Argument | Type | Description |
|---|---|---|
| client | string | The agent or app name, as the agent declares it (not verified). |
| comment | string | Free text, up to 500 characters. Published; e-mail addresses, phone numbers and links are removed. |
| accuracy | integer | 1–5: were the facts correct where checked? |
| coverage | integer | 1–5: were the relevant operators and plans included? |
| offer_id | string | The plan or offer the feedback concerns, if any. |
| answer_id* | string | The answer_id field of the Veritaset answer being rated. |
| freshness | integer | 1–5: were the facts current? |
| usefulness | integer | 1–5: did the answer help with the question? |
| error_report | object |
| string |
| Only offers sold on this technology. |
| max_monthly | number | Budget per month in the market's currency, averaged over the horizon. |
| wants_mobile | boolean | True if offers that include mobile lines may be shown. |
| data_gb_month | number | Monthly data use in GB; plans with a lower data cap don't fit (most US fixed plans state unlimited data). |
| horizon_months | number | Months to average costs over. Default 24. |
| unlimited_data | boolean | True = only plans without a data cap. |
| wants_landline | boolean |
| accept_contract | boolean | false = only offers without a minimum term. |
| has_mobile_with | string | Operator or group the household has mobile with (e.g. Telenet, Proximus, KPN); counts that operator's bundle discounts. |
| max_term_months | number | Longest minimum term accepted, in months. |
| upload_mbps_min | number | Minimum advertised upload speed in Mbps. |
| download_mbps_min | number | Minimum advertised download speed in Mbps. |
| wants_mobile_with | string | Operator the household would take mobile from as well; counts that operator's bundle discounts. |
| special_eligibility | boolean | True if the household qualifies for social tariffs or other restricted offers. |
{
"type": "object",
"required": [
"country"
],
"properties": {
"limit": {
"type": "number",
"description": "Number of results, default 5, max 20."
},
"region": {
"type": "string",
"description": "Province, state or region (e.g. Wallonia, Friesland, Texas). Regional operators are matched on it."
},
"autopay": {
"type": "boolean",
"description": "US: false = the household won't use AutoPay / paperless billing; advertised AutoPay discounts are added back. Default true."
},
"country": {
"enum": [
"BE",
"NL",
"DE",
"FR",
"GB",
"IT",
"ES",
"RO",
"SI",
"MT",
"CY",
"EE",
"SK",
"HU",
"HR",
"LV",
"AT",
"CH",
"LU",
"IS",
"LI",
"US",
"BG",
"CZ",
"DK",
"FI",
"GR",
"IE",
"LT",
"NO",
"PL",
"PT",
"SE",
"CA"
],
"type": "string",
"description": "Market, ISO 3166-1 alpha-2."
},
"wants_tv": {
"type": "boolean"
},
"technology": {
"enum": [
"fibre",
"cable",
"dsl",
"fwa",
"satellite"
],
"type": "string",
"description": "Only offers sold on this technology."
},
"max_monthly": {
"type": "number",
"description": "Budget per month in the market's currency, averaged over the horizon."
},
"wants_mobile": {
"type": "boolean",
"description": "True if offers that include mobile lines may be shown."
},
"data_gb_month": {
"type": "number",
"description": "Monthly data use in GB; plans with a lower data cap don't fit (most US fixed plans state unlimited data)."
},
"horizon_months": {
"type": "number",
"description": "Months to average costs over. Default 24."
},
"unlimited_data": {
"type": "boolean",
"description": "True = only plans without a data cap."
},
"wants_landline": {
"type": "boolean"
},
"accept_contract": {
"type": "boolean",
"description": "false = only offers without a minimum term."
},
"has_mobile_with": {
"type": "string",
"description": "Operator or group the household has mobile with (e.g. Telenet, Proximus, KPN); counts that operator's bundle discounts."
},
"max_term_months": {
"type": "number",
"description": "Longest minimum term accepted, in months."
},
"upload_mbps_min": {
"type": "number",
"description": "Minimum advertised upload speed in Mbps."
},
"download_mbps_min": {
"type": "number",
"description": "Minimum advertised download speed in Mbps."
},
"wants_mobile_with": {
"type": "string",
"description": "Operator the household would take mobile from as well; counts that operator's bundle discounts."
},
"special_eligibility": {
"type": "boolean",
"description": "True if the household qualifies for social tariffs or other restricted offers."
}
}
}| autopay | boolean | false = the person won't use AutoPay; advertised AutoPay discounts are added back. Default true. |
| country | string | Market, ISO 3166-1 alpha-2 (BE, NL, LU, FR, IS, HU, FI, SI, IE, SK, EE, LV, HR, GR, MT, LI, PT, LT, RO, BG, CY, CZ, NO, SE, AT, PL, IT, DK, GB, CH, ES, DE, US, CA). Prices are in that market's currency. |
| network | string | US: the network the plan must run on, if the person asks for one. Plans where the customer picks the network at signup fit when it is one of the choices. |
| needs_5g | boolean |
| province | string | Canada: the province or territory (name or code, e.g. Quebec, ON) where the line will be used. Plans whose source lists other provinces don't fit. |
| sms_month | number | null | National SMS per month; null = unlimited. Default 0. Plans that charge per SMS beyond their allowance are costed at the stated rate, so a rough figure is fine. |
| needs_esim | boolean |
| intl_minutes | object | Calls a month to other countries, e.g. {"MX": 300}. Plans fit only if the source states those calls included or priced per minute. |
| data_gb_month* | number | string | Mobile data the person uses per month, in GB, or "unlimited". |
| minutes_month | number | null | Minutes of calls a month you need; null = unlimited. Omit or 0 if you don't need calls. |
| accept_prepaid | boolean |
| horizon_months | number | Months to average costs over, including promos. Default 12. |
| travel_profile | string | How the person travels, when they describe it loosely: eu_occasional or eu_frequent = EU travel with no stated amount. Only requires the plan to offer EU roaming; no trip size or cost is assumed. Give roaming_gb_month, or travel with days_per_year and data_gb_per_day, to cost a specific amount instead. |
| accept_contract | boolean | false = only plans without a minimum contract. Prepaid packs paid several months up front are not contracts (each result says so); use max_term_months to limit them. |
| max_monthly_eur | number | Budget per month in the market's currency (despite the name), as advertised; for all lines together. |
| max_term_months | number | Longest term the person accepts, in months: a contract or months paid up front (e.g. an annual prepaid pack). 1 = month to month only; 12, 24, 36… Omit for any. |
| hotspot_gb_month | number | Mobile hotspot (tethering) data needed per month, in GB. Plans that don't state enough hotspot data don't fit. |
| roaming_gb_month | number | Optional EU roaming need in GB per month; omit if unknown. |
| travels_outside_eu | boolean | True if the person sometimes travels outside the EU. Each result then lists the plan's own options there (passes, included countries, pay-per-use rate) without costing a specific trip. |
| special_eligibility | boolean | True if the person qualifies for offers limited to some customers (students, social tariffs, porting from a named operator, existing customers of another service). Default false: such plans are listed as not fitting, with the condition. |
| has_home_internet_with | string | Operator group the person has home internet with (e.g. Proximus, Orange or Telenet in Belgium), which unlocks bundle prices. |
{
"type": "object",
"required": [
"data_gb_month"
],
"properties": {
"age": {
"type": "number",
"description": "Only needed for youth and senior plans."
},
"limit": {
"type": "number",
"description": "Number of results, default 5, max 20."
},
"lines": {
"type": "number",
"description": "Number of lines (e.g. a family of 4). Default 1. Costs are then the total for all lines; each line has the data/minutes need above."
},
"travel": {
"type": "array",
"items": {
"type": "object",
"required": [
"country"
],
"properties": {
"country": {
"type": "string",
"description": "Destination, ISO 3166-1 alpha-2 (e.g. FR, US, MA)."
},
"days_per_year": {
"type": "number"
},
"data_gb_per_day": {
"type": "number",
"description": "Omit if unknown; don't guess it, since omitting it changes how the trip is ranked (see travel's description)."
}
}
},
"description": "Specific trips per year, when the person knows them. Takes precedence over travel_profile and roaming_gb_month. Omit all three if unknown (the result then lists travel under missing_inputs); pass [] if the person does not travel. A trip with both days_per_year and data_gb_per_day is costed exactly; a trip missing either (e.g. just the country) only requires the plan to offer roaming there — no size or cost is assumed."
},
"autopay": {
"type": "boolean",
"description": "false = the person won't use AutoPay; advertised AutoPay discounts are added back. Default true."
},
"country": {
"enum": [
"BE",
"NL",
"LU",
"FR",
"IS",
"HU",
"FI",
"SI",
"IE",
"SK",
"EE",
"LV",
"HR",
"GR",
"MT",
"LI",
"PT",
"LT",
"RO",
"BG",
"CY",
"CZ",
"NO",
"SE",
"AT",
"PL",
"IT",
"DK",
"GB",
"CH",
"ES",
"DE",
"US",
"CA"
],
"type": "string",
"description": "Market, ISO 3166-1 alpha-2 (BE, NL, LU, FR, IS, HU, FI, SI, IE, SK, EE, LV, HR, GR, MT, LI, PT, LT, RO, BG, CY, CZ, NO, SE, AT, PL, IT, DK, GB, CH, ES, DE, US, CA). Prices are in that market's currency."
},
"network": {
"enum": [
"att",
"verizon",
"tmobile"
],
"type": "string",
"description": "US: the network the plan must run on, if the person asks for one. Plans where the customer picks the network at signup fit when it is one of the choices."
},
"needs_5g": {
"type": "boolean"
},
"province": {
"type": "string",
"description": "Canada: the province or territory (name or code, e.g. Quebec, ON) where the line will be used. Plans whose source lists other provinces don't fit."
},
"sms_month": {
"type": [
"number",
"null"
],
"description": "National SMS per month; null = unlimited. Default 0. Plans that charge per SMS beyond their allowance are costed at the stated rate, so a rough figure is fine."
},
"needs_esim": {
"type": "boolean"
},
"intl_minutes": {
"type": "object",
"description": "Calls a month to other countries, e.g. {\"MX\": 300}. Plans fit only if the source states those calls included or priced per minute.",
"additionalProperties": {
"type": "number"
}
},
"data_gb_month": {
"type": [
"number",
"string"
],
"description": "Mobile data the person uses per month, in GB, or \"unlimited\"."
},
"minutes_month": {
"type": [
"number",
"null"
],
"description": "Minutes of calls a month you need; null = unlimited. Omit or 0 if you don't need calls."
},
"accept_prepaid": {
"type": "boolean"
},
"horizon_months": {
"type": "number",
"description": "Months to average costs over, including promos. Default 12."
},
"travel_profile": {
"enum": [
"none",
"eu_occasional",
"eu_frequent"
],
"type": "string",
"description": "How the person travels, when they describe it loosely: eu_occasional or eu_frequent = EU travel with no stated amount. Only requires the plan to offer EU roaming; no trip size or cost is assumed. Give roaming_gb_month, or travel with days_per_year and data_gb_per_day, to cost a specific amount instead."
},
"accept_contract": {
"type": "boolean",
"description": "false = only plans without a minimum contract. Prepaid packs paid several months up front are not contracts (each result says so); use max_term_months to limit them."
},
"max_monthly_eur": {
"type": "number",
"description": "Budget per month in the market's currency (despite the name), as advertised; for all lines together."
},
"max_term_months": {
"type": "number",
"description": "Longest term the person accepts, in months: a contract or months paid up front (e.g. an annual prepaid pack). 1 = month to month only; 12, 24, 36… Omit for any."
},
"hotspot_gb_month": {
"type": "number",
"description": "Mobile hotspot (tethering) data needed per month, in GB. Plans that don't state enough hotspot data don't fit."
},
"roaming_gb_month": {
"type": "number",
"description": "Optional EU roaming need in GB per month; omit if unknown."
},
"travels_outside_eu": {
"type": "boolean",
"description": "True if the person sometimes travels outside the EU. Each result then lists the plan's own options there (passes, included countries, pay-per-use rate) without costing a specific trip."
},
"special_eligibility": {
"type": "boolean",
"description": "True if the person qualifies for offers limited to some customers (students, social tariffs, porting from a named operator, existing customers of another service). Default false: such plans are listed as not fitting, with the condition."
},
"has_home_internet_with": {
"type": "string",
"description": "Operator group the person has home internet with (e.g. Proximus, Orange or Telenet in Belgium), which unlocks bundle prices."
}
}
}| needs_esim | boolean |
| usage_daily | array | Alternative to usage_months: usage per day (or per session) as read from the operator's download, e.g. a usage specification. Veritaset adds it up per calendar month and leaves out months the download only partly covers. Numbers only. |
| usage_months | array | One entry per month, most recent first if known. |
| travel_profile | string | How the person travels, when they describe it loosely: eu_occasional or eu_frequent = EU travel with no stated amount. Only requires the plan to offer EU roaming; no trip size or cost is assumed. Give roaming_gb_month, or travel with days_per_year and data_gb_per_day, to cost a specific amount instead. |
| accept_contract | boolean | false = only plans without a minimum contract. Prepaid packs paid several months up front are not contracts (each result says so); use max_term_months to limit them. |
| max_term_months | number | Longest term the person accepts, in months: a contract or months paid up front (e.g. an annual prepaid pack). 1 = month to month only; 12, 24, 36… Omit for any. |
| current_offer_id | string | Veritaset offer_id of the current plan, if it can be identified (see get_mobile_plan_details / compare results). |
| hotspot_gb_month | number | Mobile hotspot (tethering) data needed per month, in GB. Plans that don't state enough hotspot data don't fit. |
| roaming_gb_month | number | Optional EU roaming need in GB per month; omit if unknown. |
| current_bundle_gb | number | Data in the current plan per month, GB, if known: the result then says how often the person went over it and how much of it they use on average. |
| current_plan_name | string | Current operator and plan name as on the bill, e.g. 'Proximus Mobile Smart'. |
| travels_outside_eu | boolean | True if the person sometimes travels outside the EU. Each result then lists the plan's own options there (passes, included countries, pay-per-use rate) without costing a specific trip. |
| current_price_month | number | What the person pays per month today, in the market's currency as advertised, if the plan can't be identified. |
| special_eligibility | boolean | True if the person qualifies for offers limited to some customers (students, social tariffs, porting from a named operator, existing customers of another service). Default false: such plans are listed as not fitting, with the condition. |
| has_home_internet_with | string | Operator group the person has home internet with (e.g. Proximus, Orange or Telenet in Belgium), which unlocks bundle prices. |
{
"type": "object",
"properties": {
"age": {
"type": "number",
"description": "Only needed for youth and senior plans."
},
"limit": {
"type": "number",
"description": "Number of results, default 5, max 20."
},
"lines": {
"type": "number",
"description": "Number of lines (e.g. a family of 4). Default 1. Costs are then the total for all lines; each line has the data/minutes need above."
},
"autopay": {
"type": "boolean",
"description": "false = the person won't use AutoPay; advertised AutoPay discounts are added back. Default true."
},
"country": {
"enum": [
"BE",
"NL",
"LU",
"FR",
"IS",
"HU",
"FI",
"SI",
"IE",
"SK",
"EE",
"LV",
"HR",
"GR",
"MT",
"LI",
"PT",
"LT",
"RO",
"BG",
"CY",
"CZ",
"NO",
"SE",
"AT",
"PL",
"IT",
"DK",
"GB",
"CH",
"ES",
"DE",
"US",
"CA"
],
"type": "string",
"description": "Market, ISO 3166-1 alpha-2 (BE, NL, LU, FR, IS, HU, FI, SI, IE, SK, EE, LV, HR, GR, MT, LI, PT, LT, RO, BG, CY, CZ, NO, SE, AT, PL, IT, DK, GB, CH, ES, DE, US, CA). Prices are in that market's currency."
},
"needs_5g": {
"type": "boolean"
},
"province": {
"type": "string",
"description": "Canada: the province or territory (name or code, e.g. Quebec, ON) where the line will be used. Plans whose source lists other provinces don't fit."
},
"needs_esim": {
"type": "boolean"
},
"usage_daily": {
"type": "array",
"items": {
"type": "object",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD"
},
"country": {
"type": "string",
"description": "Two-letter code where it was used, if abroad; omit at home."
},
"data_gb": {
"type": "number"
},
"data_mb": {
"type": "number",
"description": "Mobile data used, MB (or give data_gb)."
},
"minutes": {
"type": "number",
"description": "Outgoing national call minutes."
}
}
},
"description": "Alternative to usage_months: usage per day (or per session) as read from the operator's download, e.g. a usage specification. Veritaset adds it up per calendar month and leaves out months the download only partly covers. Numbers only."
},
"usage_months": {
"type": "array",
"items": {
"type": "object",
"properties": {
"data_gb": {
"type": "number",
"description": "Mobile data used that month, GB."
},
"minutes": {
"type": "number",
"description": "National call minutes that month."
},
"roaming": {
"type": "array",
"items": {
"type": "object",
"required": [
"country",
"days"
],
"properties": {
"days": {
"type": "number"
},
"country": {
"type": "string"
},
"data_gb": {
"type": "number"
}
}
},
"description": "Days abroad that month."
}
}
},
"description": "One entry per month, most recent first if known."
},
"travel_profile": {
"enum": [
"none",
"eu_occasional",
"eu_frequent"
],
"type": "string",
"description": "How the person travels, when they describe it loosely: eu_occasional or eu_frequent = EU travel with no stated amount. Only requires the plan to offer EU roaming; no trip size or cost is assumed. Give roaming_gb_month, or travel with days_per_year and data_gb_per_day, to cost a specific amount instead."
},
"accept_contract": {
"type": "boolean",
"description": "false = only plans without a minimum contract. Prepaid packs paid several months up front are not contracts (each result says so); use max_term_months to limit them."
},
"max_term_months": {
"type": "number",
"description": "Longest term the person accepts, in months: a contract or months paid up front (e.g. an annual prepaid pack). 1 = month to month only; 12, 24, 36… Omit for any."
},
"current_offer_id": {
"type": "string",
"description": "Veritaset offer_id of the current plan, if it can be identified (see get_mobile_plan_details / compare results)."
},
"hotspot_gb_month": {
"type": "number",
"description": "Mobile hotspot (tethering) data needed per month, in GB. Plans that don't state enough hotspot data don't fit."
},
"roaming_gb_month": {
"type": "number",
"description": "Optional EU roaming need in GB per month; omit if unknown."
},
"current_bundle_gb": {
"type": "number",
"description": "Data in the current plan per month, GB, if known: the result then says how often the person went over it and how much of it they use on average."
},
"current_plan_name": {
"type": "string",
"description": "Current operator and plan name as on the bill, e.g. 'Proximus Mobile Smart'."
},
"travels_outside_eu": {
"type": "boolean",
"description": "True if the person sometimes travels outside the EU. Each result then lists the plan's own options there (passes, included countries, pay-per-use rate) without costing a specific trip."
},
"current_price_month": {
"type": "number",
"description": "What the person pays per month today, in the market's currency as advertised, if the plan can't be identified."
},
"special_eligibility": {
"type": "boolean",
"description": "True if the person qualifies for offers limited to some customers (students, social tariffs, porting from a named operator, existing customers of another service). Default false: such plans are listed as not fitting, with the condition."
},
"has_home_internet_with": {
"type": "string",
"description": "Operator group the person has home internet with (e.g. Proximus, Orange or Telenet in Belgium), which unlocks bundle prices."
}
}
}| A suspected data error, reviewed by a person before any change. |
{
"type": "object",
"required": [
"answer_id"
],
"properties": {
"client": {
"type": "string",
"description": "The agent or app name, as the agent declares it (not verified)."
},
"comment": {
"type": "string",
"maxLength": 500,
"description": "Free text, up to 500 characters. Published; e-mail addresses, phone numbers and links are removed."
},
"accuracy": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "1–5: were the facts correct where checked?"
},
"coverage": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "1–5: were the relevant operators and plans included?"
},
"offer_id": {
"type": "string",
"description": "The plan or offer the feedback concerns, if any."
},
"answer_id": {
"type": "string",
"description": "The answer_id field of the Veritaset answer being rated."
},
"freshness": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "1–5: were the facts current?"
},
"usefulness": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "1–5: did the answer help with the question?"
},
"error_report": {
"type": "object",
"properties": {
"seen": {
"type": "string",
"description": "What the agent saw on the operator's page."
},
"field": {
"type": "string",
"description": "e.g. price_month, data, roaming"
},
"offer_id": {
"type": "string"
},
"source_url": {
"type": "string",
"description": "The operator page where it was seen."
}
},
"description": "A suspected data error, reviewed by a person before any change."
}
}
}