GasBuddy Fuel Prices Scraper
Pricing
from $1.15 / 1,000 fuel prices
GasBuddy Fuel Prices Scraper
Collect public US GasBuddy station prices by ZIP, city and state, or exact coordinates. Look up the stations you name by station ID, page link, or street address. Get reported fuel grades, cash and credit prices, station details, and report times in structured rows.
Pricing
from $1.15 / 1,000 fuel prices
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
9
Monthly active users
15 hours
Issues response
2 days ago
Last modified
Categories
Share
⛽ GasBuddy fuel prices for local station research
Fuel buyers, fleet teams, station chains, and data builders can search public US GasBuddy station data by ZIP or postal code, city and state, or exact coordinates. They can also look up the stations they name by station ID, GasBuddy page link, or exact street address. Get each station's ID, name, and address, the fuel prices GasBuddy reports for each grade, cash and credit prices, the time each price was reported, ratings, offers, payment methods, and outage status, all in structured dataset rows. Use the rows to compare local prices, map fueling options, or feed a price workflow without copying pages by hand.
Use cases
- Find nearby station listings with Gas Prices Near Me.
- Find lower reported station prices around a ZIP with Lowest Gas Prices Near Me.
- Review state-specific results with Gas Prices In California.
- Check diesel prices around a location with Diesel Prices Near Me.
- Compare Costco station prices with Costco Gas Prices Near Me.
🧾 Station prices and source details
What you get
The Actor saves one row for each station that an area search finds. It saves one row for each station you name, in the order you entered it, plus a row that explains any station that could not be returned. A row keeps the station ID, name, and address, plus the fuel prices GasBuddy reports and the time each price was reported. Optional values stay absent when the source does not report them.
Why it helps
You can compare cash and credit prices, review report times, and keep station context in one dataset. This cuts down on manual page copying while leaving the source values visible for your own checks.
🔎 Find stations by place or station ID
How to run
- Choose how to find stations: ZIP or postal codes, City and state, Exact coordinates, Station IDs or links, or Exact street address.
- Add one or more values to the matching field. A run uses one option at a time, and values in the other options are ignored.
- For an area search, optionally choose a fuel product, set a maximum report age, or add brand names.
- Start the run and open the default dataset.
One run can look up a long list of station IDs, page links, or street addresses, so one saved run can cover a whole station chain.
Result behavior
- Each saved area row is the first match for a station that passes your filters. If another submitted location finds that station later, the later match is ignored.
- Each station you name gets its own row, in the order you entered it. A station you name more than once appears once, at its first position, even when the entries use different forms.
- A station lookup returns only the stations you name. It never adds nearby stations or swaps in a similarly named one.
- A station that cannot be returned still gets its own row with a status and a short reason. One station that fails does not stop the others from returning.
- The fuel product focus guides area searches. An area row still includes every fuel grade that GasBuddy reports for that station.
- Cash and credit prices are kept separately, each with its report time and contributor when GasBuddy gives them.
- Station IDs or links and exact street addresses keep every price report, even old ones.
Coverage
GasBuddy data is crowd-sourced. Reports may be old, missing, or different from the price at the pump. The Actor does not promise a current pump price, every grade at every station, or a fixed number of rows. It covers public US GasBuddy station data, including the stations you name by ID, page link, or street address.
⚙️ Input
Choose one value for target, then fill in the matching field. Values in the other options are ignored.
Input fields
| Field | Type | What it does |
|---|---|---|
target | string | Required. Chooses one way to find stations: zip, cityState, coordinates, station, or streetAddress. |
zipCodes | array of strings | For zip. One or more U.S. ZIP or ZIP+4 values, one per line. A ZIP+4 value searches the whole 5-digit ZIP. |
cityStates | array of strings | For cityState. One or more city and state values, such as Austin, TX, one per line. |
coordinates | array of objects | For coordinates. One or more exact search locations. Each object needs a latitude and longitude. |
coordinates[].latitude | number | Latitude for a search location, from -90 to 90. |
coordinates[].longitude | number | Longitude for a search location, from -180 to 180. |
stations | array of strings | For station. One GasBuddy station ID or station page link per line, such as 91019 or https://www.gasbuddy.com/station/91019. Each station is returned once, in your order. Nearby or similarly named stations are never added. |
streetAddresses | array of strings | For streetAddress. One full street address per line, such as 123 Main St, Austin, TX 78701. Each address returns only the station at that exact address. |
fuelType | string | Optional for area searches: regular (the default), midgrade, premium, diesel, e85, or unleaded88. Keeps only stations that list a price for this fuel product. Each kept station still shows every grade that GasBuddy reports for it. Not used by station or streetAddress. |
maxReportAgeHours | integer | Optional for area searches. Keeps only cash and credit prices reported within this many hours. Not used by station or streetAddress, which keep every report, even old ones. |
brandNames | array of strings | Optional for area searches. Keeps only stations whose brand name matches one of these names, ignoring capital letters. One brand name per line. |
Example input
This is copied from the successful current beta default-input run.
{"target": "zip","zipCodes": ["78701"],"fuelType": "regular"}
🧾 Output
Run output
| Field | Type | What it does |
|---|---|---|
datasetUrl | string | Links to all station results in the Fuel stations view. |
The default dataset has one row for each station that an area search finds, and one row for each station you name. Each row matches one of the four shapes below, and each shape has its own table. Fields marked optional are omitted when the source does not provide them.
Area search rows
| Field | Type | What it does |
|---|---|---|
stationId | string | Stable GasBuddy station ID. Its page is https://www.gasbuddy.com/station/ followed by this ID. |
stationName | string | Station name reported by GasBuddy. |
brand | string, optional | Station brand when GasBuddy reports one. |
address | object | Station address. |
address.street | string | Street address. |
address.city | string | Station city. |
address.state | string | Station state. |
address.postalCode | string, optional | Postal code when GasBuddy gives one. |
searchLocation | object | The one submitted location value that found the station. |
searchLocation.value | string | Submitted ZIP, city and state value, or coordinate pair. |
distanceMiles | number, optional | Distance from the search location in miles, when GasBuddy reports it. |
stationCoordinates | object, optional | Station latitude and longitude, when GasBuddy reports them. |
stationCoordinates.latitude | number | Station latitude. |
stationCoordinates.longitude | number | Station longitude. |
prices | array of objects | Fuel grades that have a reported cash or credit price. |
prices[].fuelType | string | Fuel grade: regular, midgrade, premium, diesel, e85, or unleaded88. |
prices[].cash | object, optional | Cash price for the grade. |
prices[].cash.price | number | Cash price in US dollars per gallon. |
prices[].cash.reportedAt | string, optional | Time GasBuddy says the cash price was reported. |
prices[].cash.contributor | string, optional | Contributor GasBuddy reports for the cash price. |
prices[].credit | object, optional | Credit price for the grade. |
prices[].credit.price | number | Credit price in US dollars per gallon. |
prices[].credit.reportedAt | string, optional | Time GasBuddy says the credit price was reported. |
prices[].credit.contributor | string, optional | Contributor GasBuddy reports for the credit price. |
rating | object, optional | Station rating when GasBuddy reports one. |
rating.score | number, optional | Rating score, from 0 to 5. |
rating.count | integer, optional | Number of ratings used for the score. |
offers | array of objects, optional | Offers and discounts GasBuddy lists for the station. |
offers[].name | string, optional | Offer name. |
offers[].details | string, optional | Offer details. |
offers[].discount | string, optional | Discount wording reported by GasBuddy. |
paymentMethods | array of strings, optional | Payment methods reported as available at the station. |
status | object, optional | Station status when GasBuddy reports one. |
status.outage | string, optional | active or inactive: whether GasBuddy reports an active outage at the station. |
Example area row
This genuine row comes from the current beta coordinate run.
{"stationId": "213879","stationName": "Gulf","address": {"street": "522 Main St","city": "Ansonia","state": "CT","postalCode": "06401"},"brand": "Gulf","stationCoordinates": {"latitude": 41.336462764498,"longitude": -73.076245777909},"rating": {"score": 3.9,"count": 8},"offers": [{"name": "Flash Deal: Save 2¢ per gallon","details": "gasbuddy, strike, sort","discount": "Flash Deal: Save 2¢ per gallon"}],"status": {"outage": "inactive"},"prices": [{"fuelType": "regular","cash": {"price": 4.22,"reportedAt": "2026-10-16T02:56:11.825Z","contributor": "DataFeed"},"credit": {"price": 4.22,"reportedAt": "2026-10-16T02:56:11.810Z","contributor": "DataFeed"}},{"fuelType": "midgrade","credit": {"price": 4.99,"reportedAt": "2026-10-15T02:56:15.899Z","contributor": "DataFeed"}},{"fuelType": "premium","credit": {"price": 5.45,"reportedAt": "2026-10-16T02:56:11.825Z","contributor": "DataFeed"}},{"fuelType": "diesel","credit": {"price": 6.19,"reportedAt": "2026-10-16T02:56:11.841Z","contributor": "DataFeed"}}],"searchLocation": {"value": "41.4879,-73.0512"},"distanceMiles": 10.54}
Stations you name with prices
This table covers a station you name that has at least one reported cash or credit price. The searchLocation and distanceMiles fields do not appear in these rows.
| Field | Type | What it does |
|---|---|---|
requestedStation | string | The station ID, station page link, or street address you entered for this row, as you entered it. |
stationId | string | Stable GasBuddy station ID. Its page is https://www.gasbuddy.com/station/ followed by this ID. |
stationName | string | Station name reported by GasBuddy. |
brand | string, optional | Station brand when GasBuddy reports one. |
address | object | Station address. |
address.street | string | Street address. |
address.city | string | Station city. |
address.state | string | Station state. |
address.postalCode | string, optional | Postal code when GasBuddy gives one. |
stationCoordinates | object, optional | Station latitude and longitude, when GasBuddy reports them. |
stationCoordinates.latitude | number | Station latitude. |
stationCoordinates.longitude | number | Station longitude. |
prices | array of objects | Every fuel grade GasBuddy lists for the station. A grade with no reported price has only its fuel type. |
prices[].fuelType | string | Fuel grade: regular, midgrade, premium, diesel, e85, or unleaded88. |
prices[].cash | object, optional | Cash price for the grade. |
prices[].cash.price | number | Cash price in US dollars per gallon. |
prices[].cash.reportedAt | string, optional | Time GasBuddy says the cash price was reported. |
prices[].cash.contributor | string, optional | Contributor GasBuddy reports for the cash price. |
prices[].credit | object, optional | Credit price for the grade. |
prices[].credit.price | number | Credit price in US dollars per gallon. |
prices[].credit.reportedAt | string, optional | Time GasBuddy says the credit price was reported. |
prices[].credit.contributor | string, optional | Contributor GasBuddy reports for the credit price. |
rating | object, optional | Station rating when GasBuddy reports one. |
rating.score | number, optional | Rating score, from 0 to 5. |
rating.count | integer, optional | Number of ratings used for the score. |
offers | array of objects, optional | Offers and discounts GasBuddy lists for the station. |
offers[].name | string, optional | Offer name. |
offers[].details | string, optional | Offer details. |
offers[].discount | string, optional | Discount wording reported by GasBuddy. |
paymentMethods | array of strings, optional | Payment methods reported as available at the station. |
status | object, optional | Station status when GasBuddy reports one. |
status.outage | string, optional | active or inactive: whether GasBuddy reports an active outage at the station. |
Example station row
This genuine row comes from the current beta station-ID run. It has every grade with cash and credit prices.
{"stationId": "97216","stationName": "Roadrunners","address": {"street": "469 Rubber Ave","city": "Naugatuck","state": "CT","postalCode": "06770"},"stationCoordinates": {"latitude": 41.489774168181,"longitude": -73.070631623268},"rating": {"score": 4.6,"count": 113},"offers": [{"name": "Flash Deal: Save 2¢ per gallon","details": "gasbuddy, strike, sort","discount": "Flash Deal: Save 2¢ per gallon"}],"status": {"outage": "inactive"},"prices": [{"fuelType": "regular","cash": {"price": 4.03,"reportedAt": "2026-10-16T18:42:40.359Z","contributor": "5f4h2zx44s"},"credit": {"price": 4.13,"reportedAt": "2026-10-16T18:42:40.375Z","contributor": "5f4h2zx44s"}},{"fuelType": "midgrade","cash": {"price": 4.33,"reportedAt": "2026-10-16T18:42:40.375Z","contributor": "5f4h2zx44s"},"credit": {"price": 4.43,"reportedAt": "2026-10-16T18:42:40.391Z","contributor": "5f4h2zx44s"}},{"fuelType": "premium","cash": {"price": 4.63,"reportedAt": "2026-10-16T18:42:40.406Z","contributor": "5f4h2zx44s"},"credit": {"price": 4.73,"reportedAt": "2026-10-16T18:42:40.406Z","contributor": "5f4h2zx44s"}},{"fuelType": "diesel","cash": {"price": 6.07,"reportedAt": "2026-10-16T18:42:40.422Z","contributor": "5f4h2zx44s"},"credit": {"price": 6.07,"reportedAt": "2026-10-16T18:42:40.437Z","contributor": "5f4h2zx44s"}}],"requestedStation": "https://www.gasbuddy.com/station/97216"}
Stations you name that are unavailable
This table covers a station you name that GasBuddy shows without fuel prices right now. The row keeps the station ID, and it keeps the name and address when GasBuddy shows them.
| Field | Type | What it does |
|---|---|---|
requestedStation | string | The station ID, station page link, or street address you entered for this row, as you entered it. |
stationId | string | Stable GasBuddy station ID. |
stationName | string, optional | Station name, when GasBuddy shows it. |
address | object, optional | Station address, when GasBuddy shows it. |
address.street | string | Street address. |
address.city | string | Station city. |
address.state | string | Station state. |
address.postalCode | string, optional | Postal code, when GasBuddy gives one. |
prices | array of objects, optional | Fuel grades GasBuddy lists for the station, by fuel type only. This row has no cash or credit price. |
prices[].fuelType | string | Fuel grade. |
lookupStatus | string | unavailable. |
lookupReason | string | Short, plain reason the station has no prices right now. |
Example unavailable row
This genuine row comes from the current beta station-ID run.
{"requestedStation": "24539","stationId": "24539","stationName": "H-E-B","address": {"street": "7301 N UR-620","city": "Austin","state": "TX","postalCode": "78726"},"prices": [{"fuelType": "regular"},{"fuelType": "midgrade"},{"fuelType": "premium"}],"lookupStatus": "unavailable","lookupReason": "GasBuddy shows no fuel prices for this station right now."}
Stations you name that could not be returned
This table covers a station you name that could not be returned with a station record. These rows have no station ID, name, address, or prices.
| Field | Type | What it does |
|---|---|---|
requestedStation | string | The entry you gave, as you entered it. |
lookupStatus | string | not_found: no station matches the entry. invalid_input: the entry is not a station ID, station page link, or street address. error: the lookup failed or could not pick one station. |
lookupReason | string | Short, plain reason the station was not returned. |
Example not-returned row
This genuine row comes from the current beta station-ID run.
{"requestedStation": "987654321","lookupStatus": "not_found","lookupReason": "GasBuddy has no station with this ID."}
💳 Pricing
How charging works
One event is charged for each saved station row that reports fuel prices. The current event price is shown in the Store pricing panel before you run. A row can contain several fuel grades and cash or credit prices. Rows that only explain why a station could not be returned do not contain prices.
🔌 Integrations
Dataset and workflow access
Open the default Apify dataset to review the rows. Use the Apify API, schedules, or available dataset integrations to move repeated searches or station lookups into your workflow.
Video guide
❓ FAQ
Can I look up specific stations?
Yes. Choose Station IDs or links, then enter one station ID or GasBuddy station page link per line. The ID is the number after /station/ in the station's GasBuddy page address. To look up a station by its full address instead, choose Exact street address.
Can I mix station IDs and page links in one run?
Yes. Enter both forms in the same Station IDs or links field. A station named more than once appears once, at its first position.
Does a station lookup include nearby stations?
No. A station lookup returns only the stations you name. It never adds nearby stations, searches around a named station, or swaps in a similarly named one.
What if a station I name cannot be returned?
It still gets its own row with a lookupStatus and a short lookupReason. not_found means no station matches the entry. unavailable means GasBuddy shows no fuel prices for the station right now. invalid_input means the entry is not a station ID, page link, or street address. error means the lookup failed or could not pick one station. The other stations in the run still return.
Do station lookups drop old price reports?
No. Station IDs or links and exact street addresses keep every price report, even old ones. Each price keeps the time GasBuddy says it was reported, so check that time before you rely on it.
Can I search a city such as Woodlake, Virginia?
Yes. Choose City and state and enter a value such as Woodlake, VA. Results depend on public GasBuddy coverage and the reports available for that location.
Can I check today's prices in a town such as West Hartford, Connecticut?
Yes, if GasBuddy shows public prices for that place. Choose City and state and enter a value such as West Hartford, CT, or look up a station there by ID or page link. Each price shows the time GasBuddy says it was reported. Reports may be older than today, so check those times.
Can I submit several locations in one run?
Yes. Choose one option, then add several values to its matching field, such as several ZIP codes, city and state values, coordinate items, station IDs or links, or street addresses. Values in the other options are ignored.
Does the fuel product option hide other grades?
No. For an area search, it keeps only stations that list a price for the chosen fuel product, and each kept station still includes every grade that GasBuddy reports for it. A station lookup does not use the fuel product option. Its row lists every grade GasBuddy lists for that station.
Can I keep only recent price reports?
Yes, for area searches. Set maxReportAgeHours to keep only cash and credit prices reported within that many hours. A station is left out when it has no price for the chosen fuel product within the limit. Station lookups are not filtered this way.
Why is a price or station field missing?
GasBuddy may not report every grade, payment type, rating, offer, or status for every station. The Actor keeps available source values and does not invent missing ones.
What happens when two locations find the same station?
The first match that passes your filters is saved. A later match for the same station is ignored, so the saved row keeps the first search location that found it.
Does the Actor guarantee a current pump price or a result count?
No. GasBuddy prices are crowd-sourced and can change after a report. Public coverage, missing grades, and your filters can also change the number of rows.
Do I need a GasBuddy login or API key?
No. The Actor uses public station-search data and does not require a GasBuddy login or private API key.
Which fuel products can I choose?
You can focus area searches on Regular, Midgrade, Premium, Diesel, E85, or Unleaded 88. Each row can still include other grades that GasBuddy reports. A station lookup lists every grade GasBuddy lists for each station you name.
Can I run the same station list every day?
Yes. Save the run input as an Apify task, then set a schedule for that task in Apify. Each run returns the prices GasBuddy shows at that time, with the time each price was reported.
📝 Changelog
v1.0 (17-10-2026)
- Breaking change: rows no longer include
stationUrl,extractedAt,searchLocation.type, orstatus.emergency. To build the station link, add the station ID to https://www.gasbuddy.com/station/. Update any code or tool that reads the removed fields. - Breaking change: stations that GasBuddy lists without a postal code now return, and their
addressleaves outpostalCode. - Look up the stations you name by GasBuddy station ID or station page link. You can mix both forms in one list.
- Look up the station at each exact street address you enter. Nearby or similar stations are never added. If more than one station is at an address, no station is returned, and the row says why.
- Get one row for each station you name, in the order you entered it. A station you name more than once appears once.
- Each row for a station you name shows the entry you typed, in
requestedStation. - A station you name that cannot be returned still gets its own row with a status and a short reason.
- Station lookups list every fuel grade GasBuddy lists for the station. They keep old price reports too. Each price shows its report time when GasBuddy gives one.
- The fuel product, maximum report age, and brand filters apply only to area searches: ZIP or postal codes, City and state, and Exact coordinates.
- A location in an area search that GasBuddy places outside the United States returns no stations. The run shows a warning and keeps going with the other locations.
- A ZIP, city and state, or coordinates search no longer fails when GasBuddy leaves out the country but lists US stations.
- Zero-dollar prices are no longer returned.
- Postal codes that GasBuddy shows with four digits now show all five, such as 06770.
- You can choose from 128 MB to 256 MB of memory. Runs use 128 MB by default.
- Reliability improvements.
v0.0
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Google Maps List Scraper for Shared Lists: Export the addresses of places in a saved Google Maps list, then look up each address with the exact street address option here.
- ZIP Code Lookup: Find the ZIP codes for a city and state, then search those ZIP codes for fuel prices here.
- U.S. Census Geocoder: Turn station street addresses into coordinates, then run an exact coordinate search here.
- GasBuddy Fuel Prices Scraper — Stations, All Grades, Batch: Compare another GasBuddy workflow that batches ZIP codes or cities and returns all grades per station.
- GasBuddy Scraper | Gas Prices by Station: Compare another GasBuddy station-price workflow that also accepts GasBuddy page links and station IDs.
Made with ❤️ by Maxime Dupré