Argentina Fuel Prices API by Station (Official) avatar

Argentina Fuel Prices API by Station (Official)

Pricing

from $3.00 / 1,000 station rows

Go to Apify Store
Argentina Fuel Prices API by Station (Official)

Argentina Fuel Prices API by Station (Official)

Get fuel prices Argentine stations report to the Secretaria de Energia: nafta super, gas oil and GNC in ARS per station, with brand, address, coordinates and per-fuel dates. For fleets, station owners and AI agents: cheapest nearby, area averages, no API key. JSON, CSV, API or MCP; $3/1,000 rows.

Pricing

from $3.00 / 1,000 station rows

Rating

0.0

(0)

Developer

Japan Open Data

Japan Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

Get the fuel prices Argentine service stations report to the government: nafta súper and premium, gas oil grado 2 and 3, and GNC in pesos, for every estación de servicio near a point, in a province or in a city. The data is the official Precios en Surtidor file of Argentina's Secretaría de Energía, which permit holders must update within 8 hours of a price change (Resolución 314/2016). Search by latitude/longitude and radius, or by province/city, sort by nearest or cheapest, and optionally add one summary row with the minimum, maximum and average price of each fuel — one flat JSON row per station, no API key needed.

  • Official data: the prices stations report to the Secretaría de Energía. Open data under CC BY 4.0. About 4,600 stations are in the file; the Actor returns the last price each station reported, dropping the ones that are older than maxPriceAgeDays (default 90). Every fuel carries its own report date and age in days (superPriceAgeDays … cngPriceAgeDays) — the same station often reported its diesel and its GNC weeks apart, so read the age of the fuel you care about before you quote a price (see How fresh are the prices?).
  • You choose freshness vs. coverage. maxPriceAgeDays decides how old a reported price may be: on 2026-09-20 the file held 890 stations reported within 90 days (the default), 301 within 30 days and 73 within 7 days. Lower it for accuracy, raise it for coverage — every row tells you exactly how old each price is.
  • Precios de combustibles por estación (último precio informado): nafta súper, nafta premium, gas oil grado 2, gas oil grado 3 y GNC for every estación de servicio in your area, in ARS.
  • Search by point, province or city — plus brand (YPF, Shell, Axion, Puma, Gulf, Refinor, blanca…), street address, coordinates and distance in every row.
  • Cheapest fuel near a location: sortBy: "price" returns the cheapest stations first for the fuel you choose. When you sort by price, always read that fuel's …PriceAgeDays in the top rows — prices reported longer ago are lower simply because they are old.
  • Area benchmark in one row: includeSummary: true adds min / max / average per fuel for all matching stations — the "competitor price range" that station owners pay monitoring services for. With maxResults: 1 that is a 2-row run for about $0.0075.
  • Pay only for results. "Nothing found" and error rows are free.

What can you do with the Argentina Fuel Prices API?

  1. Trucking, logistics and fleets. Find the cheapest gas oil around a depot or along a route, check fuel card charges against the reported price, and pick refuelling stops. In a country with fast-moving fuel prices, run it once per stop or once per province with fuelType: "diesel" and sortBy: "price" — and compare dieselPriceAgeDays before you trust a low price.
  2. Service station owners and operators. Monitor the competition: every station within 3–10 km (or in your localidad) with brand, address, prices, the date each price took effect, and the local min / max / average in one summary row.
  3. Price comparison apps, analysts and AI agents. Feed a map or a chatbot ("where is the cheapest GNC in Rosario?"), track fuel inflation by province, or build your own price history by scheduling the Actor.

How to use

  1. Click Start with the default input: the 50 nearest stations within 10 km of the Obelisco in Buenos Aires whose price was reported in the last 90 days.
  2. Either enter the latitude and longitude of your point and a radius in km, or fill in province / city (then the radius is ignored).
  3. Optionally choose a fuel type and sort by price to get the cheapest stations first.
  4. Turn on Add a price summary row to get the area's min / max / average prices.
  5. Download the results as JSON, CSV or Excel, or call the Actor via API / MCP (see below). Use Apify Schedules to collect prices every day.

Common centers: Buenos Aires -34.6037,-58.3816, Córdoba -31.4201,-64.1888, Rosario -32.9442,-60.6505, Mendoza -32.8895,-68.8458, La Plata -34.9215,-57.9545, Mar del Plata -38.0055,-57.5426, San Miguel de Tucumán -26.8083,-65.2176, Salta -24.7821,-65.4232, Neuquén -38.9516,-68.0591.

Input

Only latitude and longitude are required, and every input has a default.

InputTypeDefaultWhat it does
latitudenumber-34.6037Latitude of the search center (Argentina is about -56 to -21).
longitudenumber-58.3816Longitude of the search center (about -74 to -53).
radiusKmnumber10Only stations within this distance are returned (0.1–4000 km; 4000 covers all of Argentina). Ignored when province or city is set.
provincestring""Return the stations of a province instead of a radius search, e.g. BUENOS AIRES, CAPITAL FEDERAL, CORDOBA, SANTA FE, MENDOZA. Accents and case are ignored; a partial name matches.
citystring""Same for the localidad, e.g. ROSARIO, MAR DEL PLATA. Can be combined with province.
fuelTypeany / super / premium / diesel / dieselPremium / cnganyany = every station with at least one price inside the age limit. A specific fuel returns only the stations that report it, and price sorting uses it.
maxPriceAgeDaysinteger90Only prices whose effective date is within this many days are returned (1–3650), applied to each fuel separately. See How fresh are the prices?
timeOfDayday / nightdayStations report a daytime (diurno) and a night (nocturno) price; they are identical at about 99.5% of stations.
sortBydistance / pricedistanceNearest first, or cheapest first for the chosen fuel (super when fuelType is any; stations without that price go last). Check that fuel's …PriceAgeDays in the top rows: older reports look cheaper.
maxResultsinteger50Maximum number of station rows (1–20,000).
includeSummarybooleanfalseAdds one rowType: "summary" row with station count and min / max / average price per fuel for all matching stations (not only the returned ones).

Fuel names

Input valueOutput fieldOfficial productUnit
supersuperPriceNafta (súper) entre 92 y 95 RONARS per liter
premiumpremiumPriceNafta (premium) de más de 95 RONARS per liter
dieseldieselPriceGas Oil Grado 2 (regular diesel)ARS per liter
dieselPremiumdieselPremiumPriceGas Oil Grado 3 (premium diesel, e.g. Infinia Diesel, V-Power)ARS per liter
cngcngPriceGNC (compressed natural gas)ARS per m³

Input example

The stations within 10 km of the Obelisco in Buenos Aires, plus the area summary:

{
"latitude": -34.6037,
"longitude": -58.3816,
"radiusKm": 10,
"maxResults": 5,
"includeSummary": true
}

Output

Real output from the input above (run on 2026-09-20; source shortened).

{
"status": "ok",
"rowType": "summary",
"searchLatitude": -34.6037,
"searchLongitude": -58.3816,
"radiusKm": 10,
"province": null,
"city": null,
"fuelType": "any",
"timeOfDay": "day",
"maxPriceAgeDays": 90,
"stationCount": 65,
"superMin": 2059, "superMax": 2199, "superAvg": 2130.14, "superStationCount": 42, "superMinPriceAgeDays": 73,
"premiumMin": 2330, "premiumMax": 2468, "premiumAvg": 2425.47, "premiumStationCount": 40, "premiumMinPriceAgeDays": 5,
"dieselMin": 2131, "dieselMax": 2279, "dieselAvg": 2209.54, "dieselStationCount": 41, "dieselMinPriceAgeDays": 79,
"dieselPremiumMin": 2429, "dieselPremiumMax": 2522, "dieselPremiumAvg": 2488, "dieselPremiumStationCount": 38, "dieselPremiumMinPriceAgeDays": 73,
"cngMin": 579.9, "cngMax": 749, "cngAvg": 669.84, "cngStationCount": 33, "cngMinPriceAgeDays": 46,
"currency": "ARS",
"fetchedAt": "2026-09-19T23:27:45Z",
"sourceUpdatedAt": "2026-09-19T19:00:26Z",
"source": "Secretaria de Energia, Argentina - Precios en Surtidor (Res. 314/2016), ..."
}

(superMin 2059 was reported 73 days ago while the area average is 2130.14 — that is what …MinPriceAgeDays is for.)

{
"status": "ok",
"rowType": "station",
"stationId": "3747",
"brand": "SHELL C.A.P.S.A.",
"holderName": "ESTACION LIMA S.R.L.",
"cuit": "30-53767985-5",
"holderType": "company",
"address": "Lima 835",
"city": "CAPITAL FEDERAL",
"province": "CAPITAL FEDERAL",
"region": "PAMPEANA",
"latitude": -34.618063,
"longitude": -58.381766,
"distanceKm": 1.597,
"superPrice": 2129,
"premiumPrice": 2429,
"dieselPrice": 2199,
"dieselPremiumPrice": 2499,
"cngPrice": null,
"currency": "ARS",
"timeOfDay": "day",
"nightPriceDiffers": false,
"priceReportedAt": "2026-07-01T00:00:00-03:00",
"priceAgeDays": 80,
"newestPriceReportedAt": "2026-07-01T00:00:00-03:00",
"newestPriceAgeDays": 80,
"superPriceReportedAt": "2026-07-01T00:00:00-03:00",
"superPriceAgeDays": 80,
"premiumPriceReportedAt": "2026-07-01T00:00:00-03:00",
"premiumPriceAgeDays": 80,
"dieselPriceReportedAt": "2026-07-01T00:00:00-03:00",
"dieselPriceAgeDays": 80,
"dieselPremiumPriceReportedAt": "2026-07-01T00:00:00-03:00",
"dieselPremiumPriceAgeDays": 80,
"cngPriceReportedAt": null,
"cngPriceAgeDays": null,
"fetchedAt": "2026-09-19T23:27:45Z",
"sourceUpdatedAt": "2026-09-19T19:00:26Z",
"source": "Secretaria de Energia, Argentina - Precios en Surtidor (Res. 314/2016), ..."
}

Each fuel keeps its own date, so you can see which price is fresh and which is not (real rows; station 2481 reported its GNC 38 days ago but its nafta and gas oil more than a year ago, so those two are null under the default 90-day limit and come back only with a larger maxPriceAgeDays):

stationIdbrandcitysuper (age)premium (age)gas oil 2 (age)gas oil 3 (age)GNC (age)priceAgeDays (oldest)
3747SHELL C.A.P.S.A.CAPITAL FEDERAL2129 (80 d)2429 (80 d)2199 (80 d)2499 (80 d)null80
3765SHELL C.A.P.S.A.CAPITAL FEDERAL2129 (80 d)2429 (80 d)2199 (80 d)2499 (80 d)660 (43 d)80
2481YPFCAPITAL FEDERALnullnullnullnull739.9 (38 d)38
2481 (with maxPriceAgeDays: 3650)YPFCAPITAL FEDERAL1186 (475 d)1684 (357 d)1191 (475 d)1375 (475 d)739.9 (38 d)475

Invalid input and searches with no stations return one free row that says what to change (real output):

{"status": "not_found", "fetchedAt": "2026-09-19T22:31:33Z", "searchLatitude": 35.68, "searchLongitude": 139.76, "radiusKm": 10, "province": null, "city": null, "fuelType": "any", "maxPriceAgeDays": 90, "sourceUpdatedAt": "2026-09-19T19:00:26Z", "error": "No service stations with a price reported for 35.68,139.76 (radius 10 km); the point is outside Argentina; use Argentine coordinates (latitude about -56 to -21, longitude about -74 to -53, e.g. -34.6037,-58.3816 for Buenos Aires)."}
{"status": "error", "fetchedAt": "2026-09-19T22:27:24Z", "error": "\"fuelType\" must be one of: \"any\", \"super\", \"premium\", \"diesel\", \"dieselPremium\", \"cng\"."}

Output fields

FieldMeaning
statusok, not_found or error
rowTypestation (one service station) or summary (area statistics, only with includeSummary)
stationIdStation ID in the official file (idempresa; stable, use it to track a station over time)
brandFlag / brand (bandera): YPF, SHELL C.A.P.S.A., AXION, PUMA, GULF, REFINOR, DAPSA S.A., VOY, WICO, BLANCA (unbranded) or SIN EMPRESA BANDERA
holderNamePermit holder's name — only for companies and organizations, otherwise null (see Privacy)
cuitHolder's tax ID — only for companies, otherwise null
holderTypecompany, individual_redacted or unverified_redacted (see Privacy)
address, city, province, regionStreet address, localidad, province and statistical region as published
latitude, longitudeStation coordinates
distanceKmStraight-line distance from your search point (km). Also returned for province/city searches.
superPrice, premiumPrice, dieselPrice, dieselPremiumPricePrice per liter in ARS; null when the station reported no price for that fuel inside the age limit
cngPriceGNC price per m³ in ARS
superPriceReportedAt … cngPriceReportedAtPer fuel: when that price took effect (fecha de vigencia), Argentine local time (UTC-3); null when the fuel has no price
superPriceAgeDays … cngPriceAgeDaysPer fuel: days since that fuel's price was reported. Fuels at the same station are often reported weeks apart, so this is the number to check for the fuel you buy
currencyAlways ARS (Argentine pesos, taxes included, as posted at the pump)
timeOfDayWhich shift the prices come from: day (diurno) or night (nocturno)
nightPriceDifferstrue when at least one of this station's fuels has a different price in the other shift
priceReportedAtWhen the oldest of the prices in this row took effect — the worst case for the row, so no price in the row is older than this
priceAgeDaysDays since priceReportedAt: the age of the oldest price in the row. Use it as the row's overall freshness; use the per-fuel fields above for a single fuel
newestPriceReportedAt, newestPriceAgeDaysSame for the newest price in the row (the station's most recent report of any fuel)
fetchedAtWhen this Actor downloaded the file (UTC)
sourceUpdatedAtWhen the official file itself was last written (UTC)
sourceData source, license and changes (attribution)
searchLatitude, searchLongitude, radiusKm, province, city, fuelType, maxPriceAgeDays, stationCountSummary / not_found rows: the search and how many stations matched
superMin … cngAvg, superStationCount …Summary row: min / max / average price and number of stations with a price, per fuel
superMinPriceAgeDays … cngMinPriceAgeDaysSummary row: how many days ago the cheapest price of that fuel was reported — a minimum that is much lower than the average is usually an old report
errorOn not_found / error rows: one sentence explaining what to change

How much does it cost?

This Actor uses Pay per event pricing — you pay for results, not for compute time:

EventPriceWhen it is charged
Result row (result-row)$0.003 ($3 per 1,000 rows)Each ok row: each station row, and the summary row when you ask for it
Actor start$0.0015Once per run

not_found and error rows are free.

ExampleRowsCost
Area benchmark only (maxResults: 1 + includeSummary: true) — min / max / average of every fuel in a city or province2about $0.0075
Cheapest 5 diesel stations near a depot5about $0.017
Daily competitor check: 20 stations around your station + summary, every day for a month21 × 30about $1.94 / month
Default run (50 nearest stations in Buenos Aires)50about $0.15
  • Cheapest way to start: {"province": "CORDOBA", "maxResults": 1, "includeSummary": true} — two rows, under a cent, and the summary already covers every matching station.
  • Keep maxResults small when you only need the nearest or cheapest stations; the summary row always covers all matching stations, not only the returned ones.
  • Set the maximum cost per run when you start the Actor to cap spending. If the limit is reached, the Actor stops cleanly and says so in the status message.
  • For comparison, commercial price-monitoring dashboards for station owners start at roughly €10 per month for a fixed set of competitor stations; here a daily check of 20 competitors plus the area summary costs about $1.94 a month, and you can change the area, the fuel or the radius on every run.

Use via API / MCP (AI agents)

Apify API (HTTP). Run the Actor and get the rows in one call:

curl -X POST "https://api.apify.com/v2/acts/japan-open-data~argentina-fuel-station-prices/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"latitude": -31.4201, "longitude": -64.1888, "radiusKm": 10, "fuelType": "diesel", "sortBy": "price", "maxResults": 10}'

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("japan-open-data/argentina-fuel-station-prices").call(run_input={
"province": "SANTA FE", "city": "ROSARIO",
"fuelType": "cng", "sortBy": "price", "maxResults": 20, "includeSummary": True,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
# cngPriceAgeDays is the age of THIS fuel's price - always read it next to the price.
print(row["status"], row.get("rowType"), row.get("brand"),
row.get("cngPrice"), row.get("cngPriceAgeDays"))

MCP (Claude, ChatGPT, Cursor and other AI agents). Add this Actor as a tool through the Apify MCP server (https://mcp.apify.com), for example with ?tools=japan-open-data/argentina-fuel-station-prices. An agent only needs {"latitude": <lat>, "longitude": <lon>} or {"city": "<localidad>"}.

Recommended agent settings:

  • "Cheapest diesel near X" → {"latitude": .., "longitude": .., "radiusKm": 15, "fuelType": "diesel", "sortBy": "price", "maxResults": 5}.
  • "What do fuel prices look like in province X?" → {"province": "MENDOZA", "includeSummary": true, "maxResults": 1} — the summary row already has min / max / average.
  • Prefer province / city over geocoding an address; when you do use coordinates, geocode first (the Actor does not geocode).
  • Always check status; on not_found / error show the error sentence to the user.
  • When you use sortBy: "price", always read the chosen fuel's age field (dieselPriceAgeDays, cngPriceAgeDays, …) in the top rows before calling a station "the cheapest": a price reported weeks ago looks cheaper than a current one. Tell the user how old the price is, or drop rows above your own threshold (e.g. superPriceAgeDays > 30).
  • Each fuel has its own …PriceReportedAt / …PriceAgeDays; priceAgeDays is the age of the oldest price in the row, newestPriceAgeDays that of the newest.

FAQ

How fresh are the prices? The official file is not a daily snapshot: it holds the last price each station reported, with the date it took effect (fecha de vigencia). Stations must report a change within 8 hours, but stations that closed or stopped reporting keep old values — dates in the file go back to 2016. This Actor therefore drops prices older than maxPriceAgeDays (default 90). On 2026-09-20 the file held 4,608 stations, of which about 890 had reported within 90 days, about 300 within 30 days and about 70 within 7 days. In the default search (10 km around the Obelisco) 65 stations came back, but only 17 had reported within 30 days and the median report was about 5 weeks old. Argentine fuel prices move fast, so a price that is weeks old is an indication, not today's pump price: lower maxPriceAgeDays (e.g. 14 or 30) when you need accuracy and accept fewer stations, raise it for coverage, and always read the age fields in each row.

Is the whole row as fresh as priceAgeDays says? Each fuel is reported separately, so one station can have a GNC price from last month and a nafta price from last year — on 2026-09-20, 1,826 of the 4,608 stations in the file had reported their fuels on different dates, 1,441 of them more than 30 days apart. The age limit is applied to each fuel on its own, and each fuel carries its own …PriceReportedAt / …PriceAgeDays. priceAgeDays is the age of the oldest price in the row (nothing in the row is older than that) and newestPriceAgeDays the age of the most recent one. This matters most with sortBy: "price": the cheapest-looking stations are often the ones that reported longest ago, so compare the age of the fuel you are pricing.

Why are there day and night prices? Argentine stations declare a diurno and a nocturno price. They are the same at about 99.5% of stations; when they differ the row has nightPriceDiffers: true and you can rerun with timeOfDay: "night".

Can I search by city or province? Yes — fill in province and/or city. They match the names as published (accents and case ignored, partial names allowed) and replace the radius search.

Is GNC priced per liter? No. GNC (compressed natural gas) is sold per cubic metre, so cngPrice is ARS per m³ while the four liquid fuels are ARS per liter.

Is it legal to use this data commercially? Yes. The Secretaría de Energía publishes the dataset as open data under Creative Commons Attribution 4.0, which allows commercial use and adaptation with attribution. Each row's source field and the section below carry that attribution; keep it if you republish the data.

Why do some stations have no name? About 10% of permits belong to private persons, and another 9% to partnerships, estates or businesses registered under people's own names. To avoid publishing personal names, only names that are clearly companies or organizations are returned — 81% of stations keep theirs (see Privacy).

Known limitations

  • "Last reported", not "today". See How fresh are the prices? — always check the age of the fuel you are pricing (superPriceAgeDays … cngPriceAgeDays), especially with sortBy: "price".
  • Coverage depends on reporting. Small towns and some provinces have few stations with a recent report; widen radiusKm, use province, or raise maxPriceAgeDays.
  • Prices as reported. The Secretaría de Energía does not verify them and the pump price can differ. Values of 0 or below are dropped; other implausible values (typos) are returned as reported, which is why the age filter matters.
  • Straight-line distance, not driving distance.
  • No geocoding. The Actor takes coordinates or the official province / city names, not free-form addresses.
  • A few stations have inconsistent coordinates in the source (4 of 4,609 carry two different points); the Actor keeps the most recently reported one.
  • Argentina only. Points outside Argentina return a free not_found row.
  • Cost limit. If your maximum cost per run is lower than the price of one row, the dataset stays empty and the status message explains why.

Data source and license

  • Source: Secretaría de Energía, Ministerio de Economía, Argentina — Precios en Surtidor – Resolución 314/2016 (prices reported by service station permit holders; registration under Resolución 1.102/2004). Dataset page: https://datos.gob.ar/dataset/energia-precios-surtidor---resolucion-3142016 , file served from http://datos.energia.gob.ar/ .
  • License: Creative Commons Attribution 4.0 International (CC BY 4.0), https://creativecommons.org/licenses/by/4.0/ (the dataset's license_id in the national open data catalogue is CC-BY-4.0).
  • Changes made by this Actor: the file is reshaped from one row per station × product × shift to one row per station, keeping the most recently reported price of each product for the selected shift; prices older than maxPriceAgeDays and prices of 0 or less are returned as null; rows without valid Argentine coordinates are dropped; duplicate rows and stations with conflicting attributes are resolved to the most recent report; names of permit holders who may be private persons are removed; summary statistics are calculated by this Actor.
  • Not affiliated: this Actor is an independent project and is not affiliated with, endorsed by or sponsored by the Secretaría de Energía or the Government of Argentina.
  • Access: one run downloads the one public file once (about 9 MB) and identifies itself in the User-Agent.

Privacy

The source file contains the permit holder's name (empresa) and tax ID (CUIT), and roughly 10% of permits belong to private persons. To avoid publishing personal names, holderName and cuit are returned only when both of the following hold:

  1. the CUIT prefix is 30, 33 or 34 (a legal entity, not a private person — 20, 23, 24, 27 are individuals), and
  2. the name contains a company or organization legal form (S.A., S.R.L., S.A.S., S.A.I.C., S.A.C.I.F., S.C.A., Sociedad Anónima, Cooperativa, Ltda., Asociación, Fundación, Municipalidad, Club, Instituto, U.T.E., …; accent, dot and spacing variants included), and
  3. the name carries no form that is registered under people's own names — sociedad de hecho / S.H., sociedad colectiva, sociedad simple, sucesión / sucesores de … — and names no previous holder in brackets (e.g. "… S.A. (ex-

Everything else gets holderName: null, cuit: null and holderType individual_redacted (a private-person CUIT) or unverified_redacted (a company-type CUIT whose name is, or may be, the partners' or owner's personal name). On 2026-09-20 that meant 3,742 of the 4,608 stations (81%) kept their holder name, 455 (10%) were individual_redacted and 411 (9%) unverified_redacted. This deliberately also hides a few real organizations. The station's address, brand, coordinates and prices describe the business location and are always returned.

More from Japan Open Data

Feedback

Found a wrong value or need another field (e.g. historical prices, driving distance, route search)? Open an issue on the Actor's Issues tab with your input and what you expected.