ilportaleofferte APIilportaleofferte.it ↗
Query ARERA Portale Offerte for electricity, gas, and dual fuel offer comparisons by municipality and consumption profile. Returns ranked offers with cost breakdowns.
What is the ilportaleofferte API?
This API exposes 5 endpoints covering the Italian ARERA Portale Offerte comparison tool, letting you retrieve ranked electricity, gas, and dual fuel offers for any Italian municipality or CAP code. The compare_electricity_offers endpoint returns every electricity offer ordered by estimated annual cost, while get_electricity_offer_detail and its gas and dual-fuel equivalents return itemised cost breakdowns, seller contacts, discounts, payment methods, and official ARERA offer codes.
curl -X GET 'https://api.parse.bot/scraper/4e39250d-e7dd-484d-a0a9-72e091da61eb/compare_dual_fuel_offers?location=Roma' \ -H 'X-API-Key: $PARSE_API_KEY'
Runs the Portale Offerte 'Dual Fuel' comparison for an Italian municipality (comune name or 5-digit CAP) and a consumption profile, and returns every dual fuel offer the site lists, ordered by estimated annual cost ascending (the site's default order). Each row is one combined offer with its estimated yearly spend in EUR plus the electricity and gas components. The site returns the whole result set in one page, so there is no pagination; total_found is the site's own count and an empty offers list with total_found 0 is a valid result (seen for usage=other). The location is resolved through the site's municipality lookup: an exact comune-name or CAP match is used, otherwise the first suggestion; an unknown location yields a stale_input error. Three round trips per call. The electricity consumption, when tariff_type is time_bands, is split into the three time bands the same way the site's form does (33%/31%/36% for domestic, 44%/24%/32% otherwise).
| Param | Type | Description |
|---|---|---|
| usage | string | Supply use: domestic home or other uses. In testing the site returned no dual fuel offers for 'other'. |
| gas_smc | integer | Annual gas consumption in standard cubic metres (Smc) used for the cost estimate. |
| gas_uses | string | Comma-separated gas uses from: cooking, hot_water, heating, technological (e.g. cooking,hot_water,heating). Do NOT pass an array. |
| locationrequired | string | Italian comune name (e.g. Roma) or 5-digit CAP (e.g. 20121) of the supply point. |
| power_kw | number | Contracted electricity power in kW. The site's menu offers 1.5, 3, 4.5, 6, 10, 15; any other positive value is passed as a custom power. |
| resident | boolean | Whether the supply point is the customer's residence (domestic use only). |
| price_type | string | Whether to list fixed-price or variable-price offers. |
| tariff_type | string | Electricity pricing scheme: time_bands (three ARERA bands F1/F2/F3) or single (single-rate). |
| offer_category | string | Restrict to a market category of offers. |
| renewable_only | boolean | Only offers with electricity from renewable sources. |
| electricity_kwh | integer | Annual electricity consumption in kWh used for the cost estimate. |
| gas_meter_class | string | Gas meter class. |
{
"type": "object",
"fields": {
"offers": "array of dual fuel offers ordered by annual_cost_eur ascending",
"search": "echo of the resolved search profile, including the resolved municipality name and ISTAT code",
"total_found": "integer, the site's own count of dual fuel offers for this profile",
"offers[].gas": "gas component: offer_name, valid_from, valid_to, annual_cost_eur",
"offers[].offer_id": "string numeric site identifier of the combined offer; pass to get_dual_fuel_offer_detail",
"offers[].valid_to": "ISO date YYYY-MM-DD the offer can be subscribed until",
"offers[].offer_code": "official ARERA offer code",
"offers[].valid_from": "ISO date YYYY-MM-DD the offer can be subscribed from",
"offers[].electricity": "electricity component: offer_name, valid_from, valid_to, annual_cost_eur",
"offers[].annual_cost_eur": "estimated yearly spend in EUR for the combined offer"
},
"sample": {
"data": {
"offers": [
{
"gas": {
"valid_to": "2026-10-31",
"offer_name": "Accendi ECOLOGICA Luce e Gas 24 Mesi",
"valid_from": "2026-10-01",
"annual_cost_eur": 2176.42
},
"seller": "ALLEANZA LUCE&GAS S.p.A. - in breve ALG S.p.A.",
"offer_id": "1447658",
"valid_to": "2026-10-31",
"offer_code": "023912DSFFL01XXY2610ECOLOGK24BIR",
"offer_name": "Accendi ECOLOGICA Luce e Gas 24 Mesi",
"valid_from": "2026-10-01",
"electricity": {
"valid_to": "2026-10-31",
"offer_name": "Accendi ECOLOGICA Luce e Gas 24 Mesi",
"valid_from": "2026-10-01",
"annual_cost_eur": 916.22
},
"seller_website": "https://www.accendilucegas.it",
"annual_cost_eur": 3092.64
}
],
"search": {
"usage": "domestic",
"gas_smc": 1400,
"gas_uses": [
"cooking",
"hot_water"
],
"location": "Roma",
"power_kw": 3,
"resident": true,
"istat_code": "058091",
"price_type": "fixed",
"tariff_type": "time_bands",
"offer_category": "all",
"renewable_only": false,
"electricity_kwh": 2700,
"gas_meter_class": 1
},
"total_found": 9
},
"status": "success"
}
}About the ilportaleofferte API
What the API covers
The API mirrors all three comparison modes available on ilportaleofferte.it: electricity-only (compare_electricity_offers), gas-only (compare_gas_offers), and dual fuel (compare_dual_fuel_offers). Each comparison endpoint accepts a location parameter (Italian comune name or 5-digit CAP), an optional price_type to filter fixed vs. variable offers, and consumption-profile inputs such as power_kw (electricity contracted power in kW) and gas_smc (annual gas consumption in standard cubic metres). Results are ordered by annual_cost_eur ascending, matching the site's default sort. Every offer row includes offer_id, offer_code (the official ARERA code), valid_from, valid_to, and discount_summary where the site publishes one.
Detail endpoints
Passing an offer_id from a comparison result to get_electricity_offer_detail, get_dual_fuel_offer_detail, or the gas equivalent returns the full offer record. This includes a cost_breakdown array that itemises each section of the estimated annual spend (section label, total_eur, and individual components with quota, name, value, value_raw). The response also carries attributes (seller phone, website URL, activation channels, payment methods, duration of economic conditions), a discounts array with grouping (always/not-always applicable), and offer_document_url when the seller publishes a document link. description and guarantees are strings that can be null when the seller does not publish them.
Dual fuel specifics
Dual fuel results nest two sub-objects — electricity and gas — each with their own offer_name, valid_from, valid_to, and annual_cost_eur. The top-level annual_cost_eur is the combined estimated yearly spend. During testing the site returned no dual fuel offers when usage is set to other; only the domestic home use case yields results. The gas_uses parameter accepts a comma-separated list from cooking, hot_water, heating, technological and affects the cost estimate accordingly.
Reference rows
Both compare_electricity_offers and compare_gas_offers return a protected_service field alongside the market offers. For electricity this is the regulated Maggior Tutela row; for gas it is the Tutela della Vulnerabilità row. Each contains a name and annual_cost_eur so you can benchmark market offers against the regulated fallback. total_found reflects the site's own count and includes this reference row.
The ilportaleofferte API is a managed, monitored endpoint for ilportaleofferte.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ilportaleofferte.it changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official ilportaleofferte.it API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a cost-comparison dashboard for Italian households, ranking electricity and gas offers by estimated annual spend for their CAP and consumption profile.
- Track how market offer prices change over time relative to the regulated Maggior Tutela or Tutela della Vulnerabilità reference rows.
- Filter dual fuel offers by
price_type(fixed vs. variable) andtariff_type(time-banded vs. single-rate) to match a specific household's metering setup. - Extract full
cost_breakdownsections from offer detail endpoints to show customers exactly which tariff components drive their annual estimate. - Alert customers when a currently subscribed offer's
valid_todate is approaching, using the date fields returned by comparison endpoints. - Aggregate seller
attributesdata (activation channels, payment methods) across all offers for a location to compare service accessibility. - Cross-reference
offer_codevalues against ARERA's published register to verify offer metadata or enrich results with additional regulatory information.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ilportaleofferte.it have an official developer API?+
What does compare_gas_offers return that compare_electricity_offers does not?+
compare_gas_offers accepts gas-specific inputs — gas_smc (annual consumption in standard cubic metres), gas_uses (a comma-separated list of use types such as cooking, hot_water, heating, technological), and gas_meter_class — none of which apply to electricity-only comparisons. It also returns a protected_service row representing the Tutela della Vulnerabilità regulated rate rather than the electricity Maggior Tutela row.Does the API return gas offer detail pages, or only the comparison list?+
compare_gas_offers) and full detail pages for electricity and dual fuel offers via get_electricity_offer_detail and get_dual_fuel_offer_detail. A dedicated get_gas_offer_detail endpoint is not currently included. You can fork this API on Parse and revise it to add that endpoint using the offer_id values already returned by compare_gas_offers.Does the dual fuel comparison work for non-domestic (business) supply points?+
usage is set to other (non-domestic). Dual fuel results are only available for the domestic home use case. The electricity-only and gas-only comparison endpoints do accept other as a usage value and return results for that segment.Are the cost estimates real-time, and how current is the offer data?+
valid_from and valid_to fields on each result row. The site does not expose a timestamp for when individual offers were last updated by sellers, so there is no guaranteed freshness indicator beyond those subscription-window dates.