# Firestone Complete Auto Care Scraper - Stores and Tire Prices (`recordsdata/firestone-autocare-scraper`) Actor

Scrape Firestone Complete Auto Care service centers: address, phone, hours, services, ratings and review counts. Also current coupons and tire rebates, and tire prices with stock by size. Search by ZIP and radius, city, state or store number. Export JSON, CSV or Excel.

- **URL**: https://apify.com/recordsdata/firestone-autocare-scraper.md
- **Developed by:** [RecordsData](https://apify.com/recordsdata) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $22.00 / 1,000 service centers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![RecordsData](https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner?v=3)

## Firestone Complete Auto Care Scraper: Store Locator, Hours, Ratings and Tire Prices

> Firestone Complete Auto Care Scraper is an Apify Actor that extracts service centers from firestonecompleteautocare.com, the United States auto repair and tire chain of Bridgestone Retail Operations. Each store row has the address, GPS position, phone, 7-day opening hours, the services offered, the average review rating, the review count and the star distribution. It also returns the current service coupons and tire rebates, and tire prices with stock for any tire size. No login, proxy or browser is needed. Pay per result.

Export the result as JSON, CSV, Excel, XML or HTML, or read it through the Apify API. The actor reads the same public store services that the site's own store locator calls, and it keeps to the 5 second crawl delay that the site asks for.

### What can you scrape from Firestone Complete Auto Care?

- **Service centers (`service-center`)**: every store that the site lists, with store number, street address, city, state, ZIP+4, latitude and longitude, phone and fax, opening hours for each day, whether it is open on Sunday, whether you can book online, whether it shows tire prices, whether it is flagged for electric and hybrid service, the services and payment methods, and the store's own page address. On 2026-10-23 Texas had 253 stores, California 136 and New York 49.
- **Ratings (inside each service center row)**: average rating, number of reviews and how many reviews gave 1, 2, 3, 4 and 5 stars. Reviewer names are never read.
- **Service offers (`service-offer`)**: the current coupons and tire rebates, such as `$100 Off` a brake service, with the price or saving, the start and end date, the offer type and the full terms. The list held 33 national and store-level offers on 2026-10-23 (39 with the regional ones).
- **Tire prices (`tire-price`)**: for a tire size such as 225/45R17, every tire the nearest stores list, with price, brand, tire line, load index, speed rating, stock in the store and in nearby stores, and the active rebates. A Houston store lists 18 tires in that size.

### Why use this Firestone scraper?

- **All stores, not only the ones with a web page**: the public sitemap lists 984 store pages, about 45 percent of the network. The actor reads the store services instead, so stores that only have a `local.` page are included.
- **Real radius search**: the site returns only the 30 nearest stores and ignores the radius. The actor measures the distance itself and runs the extra searches that a wide radius needs, up to 100 miles. A 25 mile search around ZIP 77002 returned the same 47 stores as an independent check of every Texas store.
- **A search for every need**: ZIP code plus radius, city, whole state, store numbers, or store page addresses.
- **Filters on the data you care about**: minimum rating, minimum review count, open on Sunday, online booking, electric vehicle service. Every row is checked again against the filter before it is delivered.
- **Honest about privacy**: store manager names and e-mails that the site's services carry are never output, and review authors are never read.
- **Monitor mode**: scheduled runs return only the stores, offers or tire prices that are new.

### How to scrape Firestone Complete Auto Care stores in four steps

1. Open the actor on Apify and choose **What to collect**, usually **Service centers**.
2. Enter one or more **ZIP codes** with a **Radius (miles)**, or **Cities**, **States**, **Store numbers** or **Store page addresses**.
3. Add filters such as **Minimum rating** if you need them, set the maximum number of items and click **Start**.
4. Download the dataset from the **Storage** tab.

Input for the best rated stores within 40 miles of downtown Houston:

```json
{
  "mode": "centers",
  "zipCodes": ["77002"],
  "radiusMiles": 40,
  "minRating": 4.5,
  "minReviews": 50,
  "maxItems": 100
}
```

### Three ways to collect data

| Mode (`mode`) | Use it to | Record types |
|---|---|---|
| `centers` | Find stores by ZIP and radius, city, state, store number or store page, with rating and filters | `service-center` |
| `offers` | List the current service coupons and tire rebates, by type or text | `service-offer` |
| `tires` | Read tire prices and stock for one size at the nearest stores or at stores you choose | `tire-price` |

In `tires` mode the actor finds the stores with the same place inputs as `centers`, skips stores that show no tire prices online, and reads the prices of the nearest ones (3 by default, up to 500).

### What data do you get from Firestone Complete Auto Care?

Every row has a `recordType`: `service-center`, `service-offer` or `tire-price`. Fields that do not apply are left out.

| Field | Description |
|---|---|
| `listingId`, `url`, `title`, `sourceSite`, `country` | Store number, offer id or `storeNumber-tireCode`, address of the page, title, `firestonecompleteautocare.com` and `US` |
| `address`, `city`, `region`, `regionName`, `postalCode`, `latitude`, `longitude`, `distanceMiles` | Where the store is; `distanceMiles` is the distance from the ZIP code you searched |
| `sellerName`, `sellerPhone`, `fax` | Store name, phone and fax |
| `hours`, `hoursText`, `isOpenSunday`, `temporarilyClosed` | Opening hours per day, a one-line summary such as `Mon-Fri 07:00-19:00, Sat 07:00-18:00, Sun 09:00-17:00`, Sunday flag, closed flag |
| `onlineBooking`, `bookingUrl`, `tirePricingAvailable`, `evServiceEnabled`, `isMilitaryStore` | Store flags |
| `services`, `paymentMethods`, `sisterStores` | Services and payment methods listed on the site, store numbers of nearby sister stores |
| `rating`, `reviewCount`, `ratingDistribution` | Average rating, review count and the 1 to 5 star counts |
| `offerText`, `price`, `savingsAmount`, `savingsPercent`, `isFree`, `isUpTo`, `service`, `details`, `description`, `terms` | Offer headline, price or saving, and the conditions |
| `category`, `offerType`, `scope`, `validAt`, `startDate`, `endDate`, `tags`, `images` | Offer type, scope (`national`, `store` or `regional`), the store address a store offer is valid at, dates in `YYYY-MM-DD`, tags and image |
| `storeNumber`, `productCode`, `brand`, `pattern`, `tireSize`, `tireCode`, `loadIndex`, `speedRating`, `extraLoad` | Tire identity: brand such as `Bridgestone`, line such as `TURANZA T005`, size, load index and speed rating |
| `price`, `currency`, `stockLocal`, `stockNearby`, `stockTotal`, `inStock`, `availableFromNearbyStores`, `purchasable`, `priceDrop`, `rebates`, `categories` | Tire price and stock |
| `raw`, `scrapedAt` | The store object as the site sends it (optional) and the extraction time |

#### Sample output

A real `service-center` row:

```json
{
  "recordType": "service-center",
  "title": "Firestone Complete Auto Care - 1301 Memorial Pkwy Nw, Huntsville, AL",
  "listingId": "3387",
  "url": "https://www.firestonecompleteautocare.com/alabama/huntsville/1301-memorial-pkwy-nw/",
  "sourceSite": "firestonecompleteautocare.com",
  "country": "US",
  "listingType": "service",
  "city": "Huntsville",
  "region": "AL",
  "regionName": "Alabama",
  "address": "1301 Memorial Pkwy Nw",
  "postalCode": "35801-5932",
  "latitude": 34.74511,
  "longitude": -86.601392,
  "sellerName": "Firestone Complete Auto Care",
  "sellerPhone": "(256) 217-5894",
  "fax": "(256) 539-2257",
  "hoursText": "Mon-Fri 07:00-19:00, Sat 07:00-18:00, Sun 08:00-17:00",
  "isOpenSunday": true,
  "temporarilyClosed": false,
  "onlineBooking": true,
  "tirePricingAvailable": true,
  "evServiceEnabled": false,
  "rating": 4.2,
  "reviewCount": 59,
  "ratingDistribution": { "1": 10, "2": 0, "3": 1, "4": 6, "5": 42 },
  "sisterStores": ["18910", "18929", "25097", "25496", "940603"],
  "scrapedAt": "2026-10-23T19:27:12.803Z"
}
```

The row also carries the `hours` array (one object per day), the `services` and `paymentMethods` lists and the booking link; they are shortened here. A real `tire-price` row from a Houston store, also shortened:

```json
{
  "recordType": "tire-price",
  "title": "SUREDRIVE SPORT 225/45R17",
  "listingId": "7528-13025",
  "url": "https://www.firestonecompleteautocare.com/tires/brands/suredrive/sport/13025/",
  "sourceSite": "firestonecompleteautocare.com",
  "country": "US",
  "price": 83.99,
  "currency": "USD",
  "storeNumber": "7528",
  "productCode": "13025",
  "brand": "SureDrive",
  "pattern": "SUREDRIVE SPORT",
  "tireSize": "225/45R17",
  "stockLocal": 2,
  "stockNearby": 4,
  "stockTotal": 6,
  "inStock": true,
  "availableFromNearbyStores": true,
  "purchasable": true,
  "priceDrop": true,
  "city": "Houston",
  "region": "TX",
  "scrapedAt": "2026-10-23T19:43:16.437Z"
}
```

Load index and speed rating are filled when the site prints them with the tire.

Offers are not per store: the site serves one national list, and offers tied to a new store opening carry that store address in `validAt`.

### Monitor new stores, offers and tire prices

Switch on **Only new rows (monitor)** and the actor remembers every row it delivered, in a named key-value store of your own account. Scheduled runs return only unseen stores, offers or tire prices. Use one **Monitor name** per saved search, for example one for new store openings in a state and one for the weekly offers.

### How does it compare with other Firestone scrapers?

No Store actor is dedicated to Firestone Complete Auto Care: a Store search for "firestone complete auto care" returned 0 results on 2026-10-23. The nearest are generic auto repair directories, which cannot return Firestone hours, ratings, coupons or tire prices.

### Is it legal to scrape Firestone Complete Auto Care? Limits and responsible use

The actor reads public store, review summary, offer and tire price data from the same web services that the Firestone Complete Auto Care site uses for its own store locator. It does not log in and does not pass any protection. It keeps to the robots.txt of the site: one request at a time, 5 seconds apart, and the regional offer pages that robots.txt excludes are never opened. The site terms restrict automated copying of its content, so you are responsible for using the data in line with those terms and with United States law. Store manager names and e-mails and reviewer names are never output.

Limits:

- The site returns the 30 nearest stores per search, so very wide searches in dense areas need several searches and take longer. The radius is capped at 100 miles.
- Because of the 5 second crawl delay a run takes time: New York (49 stores) takes about 85 seconds and a 25 mile search around Houston (47 stores) about 100 seconds.
- Tire prices exist only for stores that show them online and only for sizes the store has; a size with no tire returns one free note.
- Free Apify plans are limited to 10 items per run.

### Use with AI agents (MCP)

Connect the Apify MCP server to Claude, Cursor or another MCP client and this actor appears as a tool: `https://mcp.apify.com?tools=RecordsData/firestone-autocare-scraper`.

Example prompt: "List the Firestone stores within 25 miles of ZIP 77002 that are open on Sunday and rated 4.5 or higher, with phone and opening hours."

### Run it from code

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('RecordsData/firestone-autocare-scraper').call({ mode: 'centers', zipCodes: ['77002'], radiusMiles: 25, maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].title, items[0].rating);
```

Python client, Make, Zapier, n8n and Apify schedules also work.

### Frequently Asked Questions

#### Which Firestone stores can I scrape?

The Firestone Complete Auto Care service centers that firestonecompleteautocare.com lists in the United States, in 47 states and the District of Columbia. The sitemap shows only about 45 percent of them; this actor reads the store services, which cover the whole network. Texas had 253 stores, California 136 and New York 49 on 2026-10-23.

#### Do I need a proxy, a login or an API key?

No. The actor makes plain HTTP requests to the public store services and needs no proxy, browser or Firestone account. A test of 19 requests from the Apify cloud without proxy answered HTTP 200 every time. You only need an Apify account, and the free plan returns up to 10 items per run.

#### Is it legal to scrape Firestone Complete Auto Care?

The actor reads publicly visible store, offer and tire price data and does not log in. It follows the robots.txt of the site, including the 5 second crawl delay. The site terms restrict automated copying, so you remain responsible for how you use the data. Manager names, manager e-mails and reviewer names are never output.

#### How do I find all stores within a radius of a ZIP code?

Enter the ZIP code and a radius in miles. The site gives the 30 nearest stores per search and ignores the radius, so the actor computes each distance and searches again from the uncovered parts of the circle until the whole radius is covered. Around ZIP 77002 with 25 miles it returned 47 stores, the same set as the full Texas list. The distance of each row is in `distanceMiles`.

#### Can I scrape all stores of a state?

Yes. Choose the state, or **All states** for the whole network. The actor searches by city and skips cities that an earlier search already covers: New York, with 49 stores, needs 8 searches and about 85 seconds, and the same method found all 253 stores of Texas and all 136 of California in the offline checks.

#### Which ratings and reviews do I get?

Each store row has the average rating, the review count and the 1 to 5 star distribution, for example 4.2 from 59 reviews. Stores with no reviews have no rating. The review texts and the names of reviewers are not collected.

#### Can I get tire prices?

Yes, in `tires` mode: enter a tire size such as 225/45R17 and a place. For each of the nearest stores that show tire prices, the actor returns every tire with price, brand, line, load index, speed rating, stock in the store and in nearby stores, and the active rebates. A size with no tire gives one free note.

#### What are the coupons in the offers mode?

The service coupons and tire rebates that the site shows, for example `$100 Off a Standard Brake Service`, with price or saving, start and end date and the terms. The list is the same for every store; new store opening offers carry the store address in `validAt`. Regional offers are off by default because their pages are excluded by the robots.txt of the site.

#### How much does a run cost?

The actor is billed per result and the Pricing tab shows the live rate. Error rows, empty searches and rows skipped by monitor mode are never charged.

#### Can I get only the stores added since my last run?

Yes. Switch on **Only new rows (monitor)** and keep the same search settings or the same **Monitor name**. A second run with the same input returns 0 rows and charges nothing.

#### What happens when the search finds nothing or the input is wrong?

A search with no matching store ends as succeeded with an empty dataset and charges nothing. A wrong input, such as a ZIP code with letters or a city without its state, ends as succeeded with one free error row that explains the problem. An unknown ZIP code, city or store number gives a free error row with the cities that do have a store.

### Support

Questions, a missing field or a feature request: contact.punkrecordsdata@gmail.com. Reviews on the actor page help other people find it.

This actor is an independent tool and is not affiliated with Firestone, Bridgestone or Bridgestone Retail Operations.

# Actor input Schema

## `mode` (type: `string`):

centers = Firestone Complete Auto Care service centers (address, hours, phone, services, rating and review count). offers = the current coupons and tire rebates. tires = tire prices and stock by size for the nearest stores.

## `maxItems` (type: `integer`):

Stops after this many rows. Free plans are limited to 10 items per run.

## `zipCodes` (type: `array`):

Centers and tires modes. Every store within the radius below of each ZIP code, nearest first, for example 77002 or 90210. With no ZIP code, city, state, store or address, the search uses ZIP 77002 (Houston).

## `radiusMiles` (type: `integer`):

Used with ZIP codes. Stores farther than this from the ZIP code centre are left out. The site returns only the 30 nearest stores per search, so wide radii in dense areas take several searches. Maximum 100.

## `cities` (type: `array`):

Centers and tires modes. City and state, for example Houston, TX or Fort Worth, Texas. Returns the stores whose address is in that city. A city without a store returns a note with the cities that have one.

## `states` (type: `array`):

Centers and tires modes. Every store of the state (Texas has about 250 and takes a few dozen searches at the 5 second crawl delay of the site). Choose All states for the whole network.

## `storeNumbers` (type: `array`):

Centers and tires modes. Firestone store numbers, for example 3387 or 678643. They are the digits after storeNumber= in an appointment link. A number that does not exist returns a note.

## `startUrls` (type: `array`):

Centers and tires modes. Store pages of firestonecompleteautocare.com (for example https://www.firestonecompleteautocare.com/alabama/huntsville/1301-memorial-pkwy-nw/) or appointment links with storeNumber=.

## `minRating` (type: `number`):

Centers mode. Keeps only stores with an average review rating of at least this value (0 to 5), for example 4.5. Stores without reviews are left out when this is set. Empty means no limit.

## `minReviews` (type: `integer`):

Centers mode. Keeps only stores with at least this many reviews, for example 100. Empty means no limit.

## `openSunday` (type: `boolean`):

Centers mode. Keeps only stores with opening hours on Sunday.

## `onlineBookingOnly` (type: `boolean`):

Centers mode. Keeps only stores where an appointment can be booked on the site.

## `evServiceOnly` (type: `boolean`):

Centers mode. Keeps only stores flagged for advanced electric and hybrid vehicle service.

## `includeReviews` (type: `boolean`):

Centers mode. Adds the average rating, the number of reviews and the 1 to 5 star distribution. One extra request per 30 stores. The rating and review filters always read them.

## `includeRaw` (type: `boolean`):

Centers mode. Adds the store object as the site sends it, without the manager name and email, in the raw field.

## `tireSize` (type: `string`):

Tires mode. Size as printed on the tire sidewall: width, aspect ratio and rim, for example 225/45R17 or 265/70R16.

## `maxStores` (type: `integer`):

Tires mode. Number of nearest stores whose tire prices are read, one request each. Stores that show no tire prices online are skipped and not counted.

## `offerCategory` (type: `string`):

Offers mode. service = repair and maintenance coupons. tire = tire rebates and promotions.

## `offerQuery` (type: `string`):

Offers mode. Keeps only offers whose title, service, details or category contain this text, for example oil change or brakes. Empty means every offer.

## `includeRegionalOffers` (type: `boolean`):

Offers mode. Adds the regional offers. Their detail pages are excluded by the robots.txt of the site, so only the data of the offer list is returned and those pages are never opened.

## `onlyNew` (type: `boolean`):

Skips every store, offer or tire price seen in an earlier run with the same monitor name, so scheduled runs return only what is new.

## `stateKey` (type: `string`):

Name of the memory used by Only new rows. Use one name per saved search. Empty derives a name from your filters.

## `resetSeen` (type: `boolean`):

Clears the memory of the monitor name before this run.

## `proxyConfiguration` (type: `object`):

Off by default: the site answers requests from Apify servers directly. Turn it on only if you see blocked requests in the log.

## Actor input object example

```json
{
  "mode": "centers",
  "maxItems": 10,
  "zipCodes": [
    "77002"
  ],
  "radiusMiles": 25,
  "cities": [],
  "states": [],
  "storeNumbers": [],
  "startUrls": [],
  "openSunday": false,
  "onlineBookingOnly": false,
  "evServiceOnly": false,
  "includeReviews": true,
  "includeRaw": false,
  "tireSize": "225/45R17",
  "maxStores": 3,
  "offerCategory": "all",
  "offerQuery": "",
  "includeRegionalOffers": false,
  "onlyNew": false,
  "stateKey": "",
  "resetSeen": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields per row

## `fullData` (type: `string`):

Complete dataset with all fields

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10,
    "zipCodes": [
        "77002"
    ],
    "cities": [],
    "states": [],
    "storeNumbers": [],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/firestone-autocare-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 10,
    "zipCodes": ["77002"],
    "cities": [],
    "states": [],
    "storeNumbers": [],
    "startUrls": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/firestone-autocare-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "zipCodes": [
    "77002"
  ],
  "cities": [],
  "states": [],
  "storeNumbers": [],
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call recordsdata/firestone-autocare-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,recordsdata/firestone-autocare-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1VIAlw2aj84bIcTAp/builds/nR8v14mfjvxeY8HVp/openapi.json
