{
  "openapi": "3.0.1",
  "info": {
    "title": "Car Dealer Reviews & Reputation Monitor (DealerRater)",
    "description": "Pull every DealerRater review for any car dealership by name (a city is fine), URL, or state and make. Get ratings broken down by price transparency, trade-in, finance and service time, plus the salesperson each review names. Monitor mode returns only new reviews, so a schedule is an alert feed.",
    "version": "0.1",
    "x-build-id": "PKrFF7XctTOhcnzUX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fayoussef~dealer-reputation-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fayoussef-dealer-reputation-monitor",
        "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/fayoussef~dealer-reputation-monitor/runs": {
      "post": {
        "operationId": "runs-sync-fayoussef-dealer-reputation-monitor",
        "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/fayoussef~dealer-reputation-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-fayoussef-dealer-reputation-monitor",
        "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": {
          "dealers": {
            "title": "Dealerships",
            "type": "array",
            "description": "The dealerships to read, one per line. Type the dealership name, for example \"Hendrick Honda\", and it is looked up for you. A city on the end is fine (\"Hendrick Honda Charlotte\"): the search is shortened until the dealer is found and then narrowed to that city. Paste a DealerRater dealer URL instead to go straight to one exact store. Leave empty if you list dealerships by State and Vehicle make below.",
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerDealer": {
            "title": "Maximum reviews per dealership",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many reviews from each dealership, newest first.",
            "default": 100
          },
          "maxDealersPerSearch": {
            "title": "Dealerships per name searched",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "When a name matches several stores, how many of them to read. A chain name like \"Hendrick Honda\" matches more than one rooftop, so raise this to cover a whole group in one run.",
            "default": 1
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "List every dealership DealerRater has in these US states, for the Vehicle makes below. Use this to cover a market without knowing any names, for example Oregon. Needs at least one make.",
            "items": {
              "type": "string"
            }
          },
          "makes": {
            "title": "Vehicle makes",
            "type": "array",
            "description": "Brands to list, for example Toyota, Volkswagen or Land Rover. Each state is combined with each make. Needs at least one state.",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City filter",
            "type": "string",
            "description": "Keep only dealerships in this city, for example \"Beaverton\". Applies to the State and Vehicle make listing."
          },
          "maxDealersPerDirectory": {
            "title": "Dealerships per state and make",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many dealerships to keep for each state and make combination, in DealerRater's own listing order. Raise it to cover a whole market.",
            "default": 30
          },
          "minDealerRating": {
            "title": "Minimum dealership rating",
            "minimum": 1,
            "maximum": 5,
            "type": "number",
            "description": "Keep only listed dealerships rated at or above this, out of 5. Dealerships without a rating yet are dropped. Leave empty for all."
          },
          "minDealerReviews": {
            "title": "Minimum dealership reviews",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only listed dealerships with at least this many reviews. Leave empty for all."
          },
          "reviewsSince": {
            "title": "Reviews since",
            "type": "string",
            "description": "Only return reviews posted on or after this date, as YYYY-MM-DD. Leave empty for no date limit. Reviews are read newest first, so this also stops the run early instead of paging through years of history."
          },
          "onlyNewSinceLastRun": {
            "title": "Only reviews new since the last run",
            "type": "boolean",
            "description": "Return only reviews that were not returned by a previous run. Turn this on and schedule the Actor to get an alert feed of incoming reviews instead of re-downloading the same history every time.",
            "default": false
          },
          "watchlistName": {
            "title": "Watchlist name",
            "type": "string",
            "description": "Names the memory of which reviews have already been returned. Keep it the same across runs to keep watching the same dealerships, or use a different name for a second, separate watchlist.",
            "default": "dealer-reviews"
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Drop reviews rated below this, out of 5. Leave empty for all of them."
          },
          "maxRating": {
            "title": "Maximum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Drop reviews rated above this, out of 5. Set it to 2 to pull only the complaints."
          },
          "includeDealerSummary": {
            "title": "Include a summary row per dealership",
            "type": "boolean",
            "description": "Add one row per dealership carrying its overall rating, lifetime review count, address and phone, alongside the individual review rows. With \"Only reviews new since the last run\" on, it also shows how the rating moved since the previous run.",
            "default": true
          },
          "ratingChangeThreshold": {
            "title": "Rating change that counts",
            "minimum": 0.01,
            "maximum": 4,
            "type": "number",
            "description": "Monitor mode only. A dealership's overall rating moving by at least this much since the previous run is marked rating-up or rating-down on its summary row. Smaller moves are marked unchanged. Default 0.1.",
            "default": 0.1
          },
          "onlyRatingChanges": {
            "title": "Summary rows only when the rating moves",
            "type": "boolean",
            "description": "Monitor mode only. Return a dealership summary row only when its rating rose or fell by the amount above. Schedule the Actor daily with this on to get an alert feed of reputation shifts. A dealership's first run has nothing to compare with, so it returns no summary row.",
            "default": false
          },
          "includeEmployeeSummary": {
            "title": "Include a row per salesperson",
            "type": "boolean",
            "description": "Add one row per employee named in the reviews returned, with how many reviews name them, their average rating, how many were 1 or 2 stars and their latest review date. It covers the reviews of this run only, not their whole history. Useful for coaching and recruiting.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Defaults to Apify Proxy residential with a US exit, which is what these US sites require: a non-US address is refused with HTTP 403. Change it only if you know you need a different proxy or country.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}