{
  "openapi": "3.0.1",
  "info": {
    "title": "Firestone Complete Auto Care Scraper - Stores and Tire Prices",
    "description": "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.",
    "version": "0.1",
    "x-build-id": "nR8v14mfjvxeY8HVp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~firestone-autocare-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-firestone-autocare-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/recordsdata~firestone-autocare-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-firestone-autocare-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/recordsdata~firestone-autocare-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-firestone-autocare-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "centers",
              "offers",
              "tires"
            ],
            "type": "string",
            "description": "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.",
            "default": "centers"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows. Free plans are limited to 10 items per run.",
            "default": 50
          },
          "zipCodes": {
            "title": "ZIP codes",
            "type": "array",
            "description": "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).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "radiusMiles": {
            "title": "Radius (miles)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "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.",
            "default": 25
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "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.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "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.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "AL",
                "AR",
                "AZ",
                "CA",
                "CO",
                "CT",
                "DC",
                "DE",
                "FL",
                "GA",
                "HI",
                "IA",
                "ID",
                "IL",
                "IN",
                "KS",
                "KY",
                "LA",
                "MA",
                "MD",
                "ME",
                "MI",
                "MN",
                "MO",
                "MS",
                "MT",
                "NC",
                "ND",
                "NE",
                "NH",
                "NJ",
                "NM",
                "NV",
                "NY",
                "OH",
                "OK",
                "OR",
                "PA",
                "RI",
                "SC",
                "SD",
                "TN",
                "TX",
                "VA",
                "WA",
                "WI",
                "WV",
                "WY"
              ],
              "enumTitles": [
                "All states (one search per city name, takes long)",
                "Alabama (AL)",
                "Arkansas (AR)",
                "Arizona (AZ)",
                "California (CA)",
                "Colorado (CO)",
                "Connecticut (CT)",
                "District of Columbia (DC)",
                "Delaware (DE)",
                "Florida (FL)",
                "Georgia (GA)",
                "Hawaii (HI)",
                "Iowa (IA)",
                "Idaho (ID)",
                "Illinois (IL)",
                "Indiana (IN)",
                "Kansas (KS)",
                "Kentucky (KY)",
                "Louisiana (LA)",
                "Massachusetts (MA)",
                "Maryland (MD)",
                "Maine (ME)",
                "Michigan (MI)",
                "Minnesota (MN)",
                "Missouri (MO)",
                "Mississippi (MS)",
                "Montana (MT)",
                "North Carolina (NC)",
                "North Dakota (ND)",
                "Nebraska (NE)",
                "New Hampshire (NH)",
                "New Jersey (NJ)",
                "New Mexico (NM)",
                "Nevada (NV)",
                "New York (NY)",
                "Ohio (OH)",
                "Oklahoma (OK)",
                "Oregon (OR)",
                "Pennsylvania (PA)",
                "Rhode Island (RI)",
                "South Carolina (SC)",
                "South Dakota (SD)",
                "Tennessee (TN)",
                "Texas (TX)",
                "Virginia (VA)",
                "Washington (WA)",
                "Wisconsin (WI)",
                "West Virginia (WV)",
                "Wyoming (WY)"
              ]
            },
            "default": []
          },
          "storeNumbers": {
            "title": "Store numbers",
            "type": "array",
            "description": "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.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Store page addresses",
            "type": "array",
            "description": "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=.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "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": {
            "title": "Minimum review count",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Centers mode. Keeps only stores with at least this many reviews, for example 100. Empty means no limit."
          },
          "openSunday": {
            "title": "Open on Sunday only",
            "type": "boolean",
            "description": "Centers mode. Keeps only stores with opening hours on Sunday.",
            "default": false
          },
          "onlineBookingOnly": {
            "title": "Online booking only",
            "type": "boolean",
            "description": "Centers mode. Keeps only stores where an appointment can be booked on the site.",
            "default": false
          },
          "evServiceOnly": {
            "title": "Electric vehicle service only",
            "type": "boolean",
            "description": "Centers mode. Keeps only stores flagged for advanced electric and hybrid vehicle service.",
            "default": false
          },
          "includeReviews": {
            "title": "Add rating and review count",
            "type": "boolean",
            "description": "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.",
            "default": true
          },
          "includeRaw": {
            "title": "Add the unprocessed store record",
            "type": "boolean",
            "description": "Centers mode. Adds the store object as the site sends it, without the manager name and email, in the raw field.",
            "default": false
          },
          "tireSize": {
            "title": "Tire size",
            "type": "string",
            "description": "Tires mode. Size as printed on the tire sidewall: width, aspect ratio and rim, for example 225/45R17 or 265/70R16.",
            "default": "225/45R17"
          },
          "maxStores": {
            "title": "Stores to price (tires mode)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "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.",
            "default": 3
          },
          "offerCategory": {
            "title": "Offer type",
            "enum": [
              "all",
              "service",
              "tire"
            ],
            "type": "string",
            "description": "Offers mode. service = repair and maintenance coupons. tire = tire rebates and promotions.",
            "default": "all"
          },
          "offerQuery": {
            "title": "Offer text",
            "type": "string",
            "description": "Offers mode. Keeps only offers whose title, service, details or category contain this text, for example oil change or brakes. Empty means every offer.",
            "default": ""
          },
          "includeRegionalOffers": {
            "title": "Include regional offers",
            "type": "boolean",
            "description": "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.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new rows (monitor)",
            "type": "boolean",
            "description": "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.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the memory used by Only new rows. Use one name per saved search. Empty derives a name from your filters.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget seen rows",
            "type": "boolean",
            "description": "Clears the memory of the monitor name before this run.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default: the site answers requests from Apify servers directly. Turn it on only if you see blocked requests in the log.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}