{
  "openapi": "3.0.1",
  "info": {
    "title": "Luxauto Luxembourg Scraper: Cars, Leasing & Dealers",
    "description": "Scrape luxauto.lu, the Luxembourg vehicle marketplace: used and new cars, leasing and rental offers, motorcycles, vans, tyres, campers and dealers with prices, mileage, photos and equipment. No login, no proxy. Export JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "EgrdA8E039jrUHkyq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~luxauto-lu-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-luxauto-lu-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~luxauto-lu-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-luxauto-lu-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~luxauto-lu-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-luxauto-lu-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 do you want to do?",
            "enum": [
              "search",
              "urls",
              "dealers"
            ],
            "type": "string",
            "description": "search = vehicle ads for the filters below. urls = luxauto.lu links or ad numbers you paste. dealers = the dealer directory. Example: search.",
            "default": "search"
          },
          "listingType": {
            "title": "Offer type",
            "enum": [
              "sale",
              "lease",
              "rent"
            ],
            "type": "string",
            "description": "For sale = vehicles to buy. Leasing = monthly lease offers (the price is per month). Rental = vehicles to rent (the price is per day).",
            "default": "sale"
          },
          "vehicleType": {
            "title": "Vehicle type",
            "enum": [
              "car",
              "motorcycle",
              "van",
              "tyres",
              "quad",
              "buggy",
              "bicycle",
              "caravan",
              "camper",
              "trailer",
              "truck",
              "tractor",
              "accessory",
              "car-accessory",
              "motorcycle-accessory"
            ],
            "type": "string",
            "description": "Which section of the site to read. One type per run.",
            "default": "car"
          },
          "maxItems": {
            "title": "Max rows to return",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows. Free plans are capped at 10 rows per run. Example: 100.",
            "default": 50
          },
          "makes": {
            "title": "Makes (e.g. BMW)",
            "type": "array",
            "description": "One per line, for example BMW, Mercedes-Benz, Volkswagen. Empty means every make.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "models": {
            "title": "Models (e.g. X5)",
            "type": "array",
            "description": "Models of the makes above, for example X5 or Golf. Needs at least one make.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "bodyTypes": {
            "title": "Body types (e.g. SUV)",
            "type": "array",
            "description": "Body or category names of the chosen vehicle type. Cars: 2/3 doors, 4/5 doors, Estate, Convertible, Coupe, Minivan, Pickup, SUV. Motorcycles: Scooter, Sport, Road / Touring, Custom / Chopper and others. An unknown name returns the list of valid ones.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "newest",
              "oldest",
              "price-low",
              "price-high",
              "mileage-low",
              "mileage-high",
              "registration-newest",
              "registration-oldest"
            ],
            "type": "string",
            "description": "Order of the results. Newest first is best for monitoring.",
            "default": "relevance"
          },
          "priceFrom": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Lowest price in euros, for example 10000. For leasing it is per month, for rentals per day. Empty means no limit."
          },
          "priceTo": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Highest price in euros, for example 40000. For leasing it is per month, for rentals per day. Empty means no limit."
          },
          "yearFrom": {
            "title": "Min model year",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Oldest model year, for example 2018. Empty means no limit."
          },
          "yearTo": {
            "title": "Max model year",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Newest model year, for example 2024. Empty means no limit."
          },
          "mileageFrom": {
            "title": "Min mileage (km)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "Lowest odometer reading in km, for example 0. Empty means no limit."
          },
          "mileageTo": {
            "title": "Max mileage (km)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "Highest odometer reading in km, for example 100000. Empty means no limit."
          },
          "publishedWithinDays": {
            "title": "Published within the last (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only ads published in the last N days, for example 7. Useful for daily monitoring together with Only new ads. 0 or empty means any time."
          },
          "engineSizeFrom": {
            "title": "Min engine size (cc)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Only engines of at least this displacement in cubic centimetres, for example 1600. 0 or empty means no limit."
          },
          "engineSizeTo": {
            "title": "Max engine size (cc)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Only engines of at most this displacement in cubic centimetres, for example 2500. 0 or empty means no limit."
          },
          "powerFrom": {
            "title": "Min power (hp)",
            "minimum": 0,
            "maximum": 3000,
            "type": "integer",
            "description": "Only vehicles with at least this power in horsepower. The site has no power filter, so the actor reads ads and keeps the matching ones; ads without a power value are left out. 0 or empty means no limit."
          },
          "powerTo": {
            "title": "Max power (hp)",
            "minimum": 0,
            "maximum": 3000,
            "type": "integer",
            "description": "Only vehicles with at most this power in horsepower. The site has no power filter, so the actor reads ads and keeps the matching ones; ads without a power value are left out. 0 or empty means no limit."
          },
          "fuelTypes": {
            "title": "Fuel type",
            "type": "array",
            "description": "Fuel or drive types to keep. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "petrol",
                "diesel",
                "lpg",
                "electric",
                "hybrid",
                "cng",
                "ethanol",
                "hydrogen"
              ],
              "enumTitles": [
                "Petrol",
                "Diesel",
                "LPG",
                "Electric",
                "Hybrid",
                "CNG (natural gas)",
                "Ethanol",
                "Hydrogen"
              ]
            },
            "default": []
          },
          "transmissions": {
            "title": "Gearbox",
            "type": "array",
            "description": "Gearbox types to keep. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "manual",
                "automatic",
                "semi-automatic"
              ],
              "enumTitles": [
                "Manual",
                "Automatic",
                "Semi-automatic (sequential)"
              ]
            },
            "default": []
          },
          "colors": {
            "title": "Exterior color",
            "type": "array",
            "description": "Exterior colors to keep. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "black",
                "white",
                "grey",
                "light-grey",
                "dark-grey",
                "silver",
                "anthracite",
                "blue",
                "light-blue",
                "dark-blue",
                "red",
                "dark-red",
                "burgundy",
                "green",
                "light-green",
                "dark-green",
                "yellow",
                "orange",
                "brown",
                "beige",
                "bronze",
                "gold",
                "purple"
              ],
              "enumTitles": [
                "Black",
                "White",
                "Grey",
                "Light grey",
                "Dark grey",
                "Silver",
                "Anthracite",
                "Blue",
                "Light blue",
                "Dark blue",
                "Red",
                "Dark red",
                "Burgundy",
                "Green",
                "Light green",
                "Dark green",
                "Yellow",
                "Orange",
                "Brown",
                "Beige",
                "Bronze",
                "Gold",
                "Purple"
              ]
            },
            "default": []
          },
          "seats": {
            "title": "Seats (exact number)",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Only vehicles with this number of seats, for example 5 or 7. 0 or empty means any."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "used",
              "demonstrator"
            ],
            "type": "string",
            "description": "New = new vehicles. Demonstrator = management or demonstration cars. Used = everything else. The site has no such filter, so the actor reads ads and keeps the matching ones.",
            "default": "any"
          },
          "sellerTypes": {
            "title": "Seller type",
            "type": "array",
            "description": "Private sellers, professional dealers, or both when empty.",
            "items": {
              "type": "string",
              "enum": [
                "private",
                "professional"
              ],
              "enumTitles": [
                "Private sellers",
                "Professional dealers"
              ]
            },
            "default": []
          },
          "sellerCountries": {
            "title": "Seller country",
            "type": "array",
            "description": "Country of the seller. luxauto.lu lists sellers from Luxembourg and from the neighbouring regions. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "LU",
                "FR",
                "DE",
                "BE"
              ],
              "enumTitles": [
                "Luxembourg",
                "France",
                "Germany",
                "Belgium"
              ]
            },
            "default": []
          },
          "startUrls": {
            "title": "luxauto.lu page addresses (URLs)",
            "type": "array",
            "description": "urls mode. luxauto.lu addresses in French (https://www.luxauto.lu/fr/...): a search (/fr/vente/voiture/bmw?...), a single ad (/fr/voiture/bmw-x5-...-1234567), a dealer (/fr/garage/name-12345) or the directory (/fr/annuaire-garages).",
            "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 1921097.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "dealerQuery": {
            "title": "Dealer name contains",
            "type": "string",
            "description": "dealers mode. Keeps only dealers whose name contains this text, for example Losch. Empty means every dealer in the directory.",
            "default": ""
          },
          "includeDealerVehicles": {
            "title": "Also read each dealer stock (1 row per ad, charged)",
            "type": "boolean",
            "description": "On: after each dealer row, also read that dealer's current ads (all vehicle types and offer types). Each ad is a separate row and is charged like any other ad.",
            "default": false
          },
          "scrapeDetails": {
            "title": "Add ad details (1 extra request per ad)",
            "type": "boolean",
            "description": "On: one extra request per ad adds description, equipment list, euro standard and dealer address. Off (default): list data only, faster and cheaper.",
            "default": false
          },
          "includeContactDetails": {
            "title": "Add dealer phone and address (professionals only)",
            "type": "boolean",
            "description": "Adds the business phone and street address of professional dealers (needs Add ad details for ads) and keeps phone numbers inside their descriptions. Private sellers never get contact data.",
            "default": false
          },
          "includeRaw": {
            "title": "Add raw source record (debug)",
            "type": "boolean",
            "description": "Adds a raw column with the site's own record (without photos, street, phone and contact person) next to the clean columns.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new ads",
            "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 (optional)",
            "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 previous results before this run",
            "type": "boolean",
            "description": "Clears the memory of the monitor name before this run.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel detail requests",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many ad detail requests run at the same time (1 to 5). Request starts are spaced by the actor anyway.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy (not needed)",
            "type": "object",
            "description": "Leave off: direct requests 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}