{
  "openapi": "3.0.1",
  "info": {
    "title": "otomoto, Standvirtual & Autovit Monitor: New Cars, Price Drops",
    "description": "For car dealers, flippers and import brokers: new used-car listings and price drops (with the old price) from otomoto.pl, standvirtual.com and autovit.ro, plus removed cars on otomoto.pl and standvirtual.com. By make, model, price and year. Schedule hourly or daily. JSON, CSV, Excel.",
    "version": "0.1",
    "x-build-id": "B12zPFD4BXj9bauBB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~otomoto-standvirtual-autovit-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-otomoto-standvirtual-autovit-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/neverempty~otomoto-standvirtual-autovit-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-otomoto-standvirtual-autovit-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/neverempty~otomoto-standvirtual-autovit-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-otomoto-standvirtual-autovit-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": {
          "makeModels": {
            "title": "Make / model",
            "type": "array",
            "description": "Schedule it hourly or daily with Monitor mode on to get only new listings and price drops. Write make/model as in the site's search address, for example bmw, bmw/seria-3 or audi/a4; each one is searched on each site, and make names such as volkswagen and vw are matched to each site. Model words can differ between the sites: if a model is not found, paste that site's search address into Search URLs. Leave this and Search URLs empty to run the example bmw on otomoto.pl.",
            "items": {
              "type": "string"
            }
          },
          "sites": {
            "title": "Sites",
            "type": "array",
            "description": "Which sites to search with the makes and models above. Empty = otomoto.pl (Poland).",
            "items": {
              "type": "string",
              "enum": [
                "pl",
                "pt",
                "ro"
              ],
              "enumTitles": [
                "Poland (otomoto.pl, prices in PLN)",
                "Portugal (standvirtual.com, prices in EUR)",
                "Romania (autovit.ro, prices in EUR)"
              ]
            }
          },
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Optional. Paste a car search address from otomoto.pl, standvirtual.com or autovit.ro with your filters already set on the site, for example https://www.otomoto.pl/osobowe/bmw/seria-3?search[filter_float_year:from]=2018. On otomoto.pl and standvirtual.com the list is read newest first. The filters below do not change a pasted URL.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "region": {
            "title": "Region or city",
            "type": "string",
            "description": "Optional. A region or city as it appears in the site's search address, for example mazowieckie or warszawa (otomoto.pl), lisboa (standvirtual.com), bucuresti (autovit.ro). Empty = the whole country."
          },
          "priceFrom": {
            "title": "Price from",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Lowest price in the site's currency: PLN on otomoto.pl, EUR on standvirtual.com and autovit.ro."
          },
          "priceTo": {
            "title": "Price up to",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Highest price in the site's currency: PLN on otomoto.pl, EUR on standvirtual.com and autovit.ro."
          },
          "yearFrom": {
            "title": "Year from",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Optional. Earliest production year (otomoto.pl, autovit.ro) or first registration year (standvirtual.com), for example 2018."
          },
          "yearTo": {
            "title": "Year up to",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Optional. Latest production or first registration year."
          },
          "mileageFrom": {
            "title": "Mileage from (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Lowest mileage in kilometres."
          },
          "mileageTo": {
            "title": "Mileage up to (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Highest mileage in kilometres, for example 150000."
          },
          "fuelTypes": {
            "title": "Fuel",
            "type": "array",
            "description": "Optional. Only cars with these fuels. Empty = all fuels.",
            "items": {
              "type": "string",
              "enum": [
                "petrol",
                "diesel",
                "electric",
                "hybrid",
                "plugin-hybrid",
                "lpg",
                "cng",
                "hydrogen"
              ],
              "enumTitles": [
                "Petrol",
                "Diesel",
                "Electric",
                "Hybrid",
                "Plug-in hybrid",
                "LPG",
                "CNG",
                "Hydrogen"
              ]
            }
          },
          "bodyTypes": {
            "title": "Body type",
            "type": "array",
            "description": "Optional. Only these body types. Empty = all body types.",
            "items": {
              "type": "string",
              "enum": [
                "mini",
                "city-car",
                "coupe",
                "cabrio",
                "combi",
                "compact",
                "sedan",
                "suv",
                "minivan"
              ],
              "enumTitles": [
                "Mini",
                "City car",
                "Coupe",
                "Convertible",
                "Estate / combi",
                "Compact",
                "Sedan",
                "SUV",
                "Minivan"
              ]
            }
          },
          "transmission": {
            "title": "Transmission",
            "enum": [
              "automatic",
              "manual"
            ],
            "type": "string",
            "description": "Optional. Only automatic or only manual cars. Empty = both."
          },
          "sellerType": {
            "title": "Seller",
            "enum": [
              "dealer",
              "private"
            ],
            "type": "string",
            "description": "Optional. Only dealers or only private sellers. Empty = both."
          },
          "maxResultsPerSearch": {
            "title": "Max cars per search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many cars to return per search (empty = 50). On otomoto.pl and standvirtual.com these are the newest cars. In Monitor mode this is the most new cars returned per search and run; price changes and removed cars are always returned."
          },
          "monitorMode": {
            "title": "Monitor mode: only new cars, price drops and removed cars",
            "type": "boolean",
            "description": "Schedule it hourly or daily and get only what changed. On: the first run returns the current cars (changeType new, isFirstCheck true) as the starting point; every later run returns only new cars, price drops and rises (price_drop / price_up, with previousPrice) and removed cars. When nothing changed, one free row says so."
          },
          "includePriceChanges": {
            "title": "Monitor mode: return price drops and rises",
            "type": "boolean",
            "description": "On (default): also return cars returned before whose price changed since the previous check, with previousPrice and priceChange. Off: no price change rows.",
            "default": true
          },
          "includeRemoved": {
            "title": "Monitor mode: return removed cars",
            "type": "boolean",
            "description": "On (default): also return cars returned before that are gone from the part of the list this watch reads (sold, withdrawn or no longer matching the search), with their last known title, link and price. Not on autovit.ro, whose list changes order between pages. Off: no removed rows.",
            "default": true
          },
          "includeUnchanged": {
            "title": "Monitor mode: also return unchanged cars",
            "type": "boolean",
            "description": "Off (default): cars that did not change are not returned. On: return them too, with changeType unchanged (each is a charged row).",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. Keeps separate memories for Monitor mode, for example one per client (letters, digits, dot, dash, underscore; up to 40). Runs with the same watch name share what has already been returned."
          },
          "resetMonitoringState": {
            "title": "Start the watch again",
            "type": "boolean",
            "description": "On: forget what this watch has seen for these searches before running, so this run is a first check again."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}