{
  "openapi": "3.0.1",
  "info": {
    "title": "Bolha Autos Scraper: Slovenia Cars, Motorcycles, Parts, Tyres",
    "description": "Scrape bolha.com Avto-moto, the Slovenian vehicle classifieds: used and new cars, damaged cars, oldtimers, motorcycles, commercial vehicles, caravans, spare parts, accessories, tuning, tyres and rims with prices, mileage, power, photos and seller type. No login, no proxy. Export JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "I6aHRWWBtsdOjtSmr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~bolha-autos-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-bolha-autos-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~bolha-autos-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-bolha-autos-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~bolha-autos-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-bolha-autos-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": [
              "search",
              "urls"
            ],
            "type": "string",
            "description": "search = ads of the sections, makes and filters below. urls = bolha.com category pages, make pages, ad addresses or ad numbers.",
            "default": "search"
          },
          "sections": {
            "title": "Sections",
            "type": "array",
            "description": "Which parts of bolha.com Avto-moto to read. Each section is searched on its own, and every row says which section it came from. Vehicles are charged as vehicle rows, spare parts, accessories and tuning as part rows, tyres and rims as tyre rows.",
            "items": {
              "type": "string",
              "enum": [
                "used-cars",
                "new-cars",
                "damaged-cars",
                "oldtimers",
                "motorcycles",
                "commercial",
                "caravans-trailers",
                "parts",
                "accessories",
                "tuning",
                "tyres",
                "rims"
              ],
              "enumTitles": [
                "Used cars",
                "New cars",
                "Damaged cars and cars for parts",
                "Oldtimers",
                "Motorcycles, mopeds and quads",
                "Commercial vehicles, trucks and forklifts",
                "Motorhomes, caravans and trailers",
                "Spare parts",
                "Accessories",
                "Tuning",
                "Tyres",
                "Rims and wheels"
              ]
            },
            "default": [
              "used-cars"
            ]
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows (all sections together). 0 means no limit. Free plans are limited to 10 rows per run.",
            "default": 50
          },
          "makes": {
            "title": "Makes",
            "type": "array",
            "description": "Makes as the site lists them, for example BMW, Audi, Mercedes-Benz, Volkswagen. Works in the three car sections and in motorcycles. Not case sensitive. A make the site does not list gives a clear error with suggestions. Sections without a make filter (such as commercial vehicles) are skipped when you set this; use Keywords there.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "models": {
            "title": "Models",
            "type": "array",
            "description": "Models of the makes above, for example 320, A4, Golf. Car sections need the make. In commercial vehicles it is the model name text of the ad (for example Sprinter). A model the make does not have gives a clear error with suggestions.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Sub-categories of the section, as the site names them, for example Mopedi, Dostavna vozila, Viličarji, 16-colne pnevmatike. Used by oldtimers, motorcycles, commercial vehicles, caravans, parts, accessories, tuning, tyres and rims. A name the section does not list gives a clear error with suggestions.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Words that must appear in the ad. Motorcycles and commercial vehicles search the site for them; other sections keep the ads whose title contains every word.",
            "default": ""
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Statistical regions of Slovenia where the vehicle is located. Croatia is the bucket the site uses for ads located in Croatia. Leave empty for everywhere.",
            "items": {
              "type": "string",
              "enum": [
                "gorenjska",
                "goriska",
                "jugovzhodna-slovenija",
                "koroska",
                "obalno-kraska",
                "osrednjeslovenska",
                "podravska",
                "pomurska",
                "posavska",
                "primorsko-notranjska",
                "savinjska",
                "zasavska",
                "croatia"
              ],
              "enumTitles": [
                "Gorenjska",
                "Goriška",
                "Jugovzhodna Slovenija",
                "Koroška",
                "Obalno-kraška",
                "Osrednjeslovenska (Ljubljana area)",
                "Podravska (Maribor, Ptuj)",
                "Pomurska",
                "Posavska",
                "Primorsko-notranjska",
                "Savinjska (Celje)",
                "Zasavska",
                "Croatia"
              ]
            },
            "default": []
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "private",
              "business"
            ],
            "type": "string",
            "description": "Private sellers, businesses (dealers and shops), or both. The site has no such filter, so the actor reads ads and keeps the matching ones (up to 3,000 ads read per search).",
            "default": "any"
          },
          "onlyWithPhotos": {
            "title": "Only ads with photos",
            "type": "boolean",
            "description": "Skips ads that have no photo.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "Order of the results. Newest first is best for monitoring.",
            "default": "newest"
          },
          "priceFrom": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Only ads priced at or above this amount in euros. 0 or empty means no limit."
          },
          "priceTo": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Only ads priced at or below this amount in euros. 0 or empty means no limit."
          },
          "yearFrom": {
            "title": "Year from",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Only vehicles of this model year or newer. Cars, motorcycles and commercial vehicles. 0 or empty means no limit."
          },
          "yearTo": {
            "title": "Year to",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Only vehicles of this model year or older. Cars, motorcycles and commercial vehicles. 0 or empty means no limit."
          },
          "mileageFrom": {
            "title": "Minimum mileage (km)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "Only vehicles with at least this odometer reading. Used and damaged cars, motorcycles, commercial vehicles. 0 or empty means no limit."
          },
          "mileageTo": {
            "title": "Maximum mileage (km)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "Only vehicles with at most this odometer reading. Used and damaged cars, motorcycles, commercial vehicles. 0 or empty means no limit."
          },
          "engineSizeFrom": {
            "title": "Engine size from (cc)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Only engines of at least this displacement in cubic centimetres, for example 1600. Cars, motorcycles, commercial vehicles. 0 or empty means no limit."
          },
          "engineSizeTo": {
            "title": "Engine size to (cc)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Only engines of at most this displacement in cubic centimetres, for example 2500. Cars, motorcycles, commercial vehicles. 0 or empty means no limit."
          },
          "powerFrom": {
            "title": "Power from (kW)",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Only vehicles with at least this power in kilowatts (the unit of the site; 1 kW is about 1.36 hp). Cars, motorcycles, commercial vehicles. 0 or empty means no limit."
          },
          "powerTo": {
            "title": "Power to (kW)",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Only vehicles with at most this power in kilowatts. Cars, motorcycles, commercial vehicles. 0 or empty means no limit."
          },
          "fuelTypes": {
            "title": "Fuel or engine types",
            "type": "array",
            "description": "Cars: petrol, diesel, hybrid, electric. Commercial vehicles: also gas, petrol-and-gas, diesel-and-gas. Motorcycles: two-stroke, four-stroke, electric. A value a section does not offer is ignored for it. The site filters one value at a time, so several values run as several searches. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "petrol",
                "diesel",
                "hybrid",
                "electric",
                "gas",
                "petrol-and-gas",
                "diesel-and-gas",
                "two-stroke",
                "four-stroke"
              ],
              "enumTitles": [
                "Petrol",
                "Diesel",
                "Hybrid",
                "Electric",
                "Gas",
                "Petrol and gas",
                "Diesel and gas",
                "Two-stroke (motorcycles)",
                "Four-stroke (motorcycles)"
              ]
            },
            "default": []
          },
          "bodyTypes": {
            "title": "Body types",
            "type": "array",
            "description": "Body types of new and used cars. The site filters one value at a time, so several values run as several searches. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "sedan",
                "estate",
                "minivan",
                "coupe",
                "convertible",
                "suv",
                "minibus",
                "hatchback"
              ],
              "enumTitles": [
                "Sedan",
                "Estate",
                "Minivan",
                "Coupe",
                "Convertible",
                "SUV",
                "Minibus",
                "Hatchback"
              ]
            },
            "default": []
          },
          "driveTypes": {
            "title": "Drive types",
            "type": "array",
            "description": "Drive wheels of new and used cars. Several values run as several searches. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "front",
                "rear",
                "all-wheel"
              ],
              "enumTitles": [
                "Front-wheel drive",
                "Rear-wheel drive",
                "All-wheel drive"
              ]
            },
            "default": []
          },
          "transmissions": {
            "title": "Transmission",
            "type": "array",
            "description": "Gearbox types of cars. Damaged cars accept one value. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "manual",
                "automatic",
                "automatic-sequential",
                "sequential"
              ],
              "enumTitles": [
                "Manual",
                "Automatic",
                "Automatic sequential",
                "Sequential"
              ]
            },
            "default": []
          },
          "colors": {
            "title": "Exterior colours",
            "type": "array",
            "description": "Exterior colours of cars. Several values run as several searches. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "beige",
                "white",
                "black",
                "red",
                "burgundy",
                "pink",
                "orange",
                "blue",
                "light-blue",
                "dark-blue",
                "grey",
                "light-grey",
                "dark-grey",
                "brown",
                "silver",
                "green",
                "light-green",
                "dark-green",
                "gold",
                "yellow",
                "other"
              ],
              "enumTitles": [
                "Beige",
                "White",
                "Black",
                "Red",
                "Burgundy",
                "Pink",
                "Orange",
                "Blue",
                "Light blue",
                "Dark blue",
                "Grey",
                "Light grey",
                "Dark grey",
                "Brown",
                "Silver",
                "Green",
                "Light green",
                "Dark green",
                "Gold",
                "Yellow",
                "Other"
              ]
            },
            "default": []
          },
          "doors": {
            "title": "Doors",
            "type": "array",
            "description": "Number of doors of new and used cars. Several values run as several searches. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4",
                "5",
                "6"
              ],
              "enumTitles": [
                "2 doors",
                "3 doors",
                "4 doors",
                "5 doors",
                "6 doors"
              ]
            },
            "default": []
          },
          "seats": {
            "title": "Seats",
            "type": "array",
            "description": "Number of seats of new and used cars. Several values run as several searches. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8",
                "9"
              ],
              "enumTitles": [
                "1 seat",
                "2 seats",
                "3 seats",
                "4 seats",
                "5 seats",
                "6 seats",
                "7 seats",
                "8 seats",
                "9 seats"
              ]
            },
            "default": []
          },
          "owners": {
            "title": "Number of owners",
            "type": "array",
            "description": "Owners so far, for used cars. Several values run as several searches. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "first",
                "second",
                "third-or-more"
              ],
              "enumTitles": [
                "First owner",
                "Second owner",
                "Third owner or more"
              ]
            },
            "default": []
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "Condition of the vehicle or part. Which values exist depends on the section (new cars are always new, used cars are used or demo). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "new",
                "used",
                "demo",
                "defective",
                "repairable",
                "for-parts"
              ],
              "enumTitles": [
                "New",
                "Used",
                "Demo (test vehicle)",
                "Defective",
                "Repairable (damaged cars)",
                "Only for parts (damaged cars)"
              ]
            },
            "default": []
          },
          "startUrls": {
            "title": "Addresses",
            "type": "array",
            "description": "urls mode. bolha.com addresses: a section, make, model or category page (for example https://www.bolha.com/rabljeni-avtomobili/bmw?yearManufactured[min]=2018) or a single ad. Search addresses (/search) are not accepted because the site blocks them for robots.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Ad numbers",
            "type": "array",
            "description": "urls mode. The number at the end of an ad address, for example 16018745.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "scrapeDetails": {
            "title": "Add ad details",
            "type": "boolean",
            "description": "On: one extra request per ad adds the full description, the equipment list, every photo, the video, the seller store and the exact map point of businesses. Vehicle rows then count as detail rows.",
            "default": false
          },
          "includeContactDetails": {
            "title": "Include business contact details",
            "type": "boolean",
            "description": "Adds the website and street address of business sellers (needs Add ad details) and keeps phone numbers inside their descriptions. Private sellers never get contact data.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new ads (monitor)",
            "type": "boolean",
            "description": "Skips every ad seen in an earlier run with the same monitor name and the same search, and does not charge for them. Schedule the actor to get only new ads.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the memory used by Only new ads. Use one name per saved search. Empty uses the filters themselves.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget seen ads",
            "type": "boolean",
            "description": "Clears the memory of the monitor name before this run.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel detail reads",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many ad page requests run at the same time (1 to 8). Request starts are spaced by the actor anyway.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Empty means direct requests, which work. Add a proxy only if the site starts refusing your runs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}