{
  "openapi": "3.0.1",
  "info": {
    "title": "La Centrale Scraper",
    "description": "Scrape used-car listings from lacentrale.fr: make, model, version, year, mileage, price, gearbox, fuel, colour, seller and decoded phone. Detail mode adds full specs, warranty, price-drop history, dealer Google reviews, equipment and photos. Search by URL or filters. JSON/CSV/Excel",
    "version": "0.0",
    "x-build-id": "gqvePMCK0nRrwYlHV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~lacentrale-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-lacentrale-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/memo23~lacentrale-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-lacentrale-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/memo23~lacentrale-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-lacentrale-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "La Centrale URLs to scrape. Accepts listing/search pages (e.g. https://www.lacentrale.fr/listing?makesModelsCommercialNames=RENAULT) and direct classified pages (e.g. https://www.lacentrale.fr/auto-occasion-annonce-69118639004.html). When set, the search filters below are ignored.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "make": {
            "title": "Make",
            "type": "string",
            "description": "Vehicle make to search, e.g. RENAULT, PEUGEOT, BMW, VOLKSWAGEN. Used only when no Start URLs are provided."
          },
          "model": {
            "title": "Model",
            "type": "string",
            "description": "Vehicle model, e.g. CLIO, 308, GOLF. Requires a Make. Used only when no Start URLs are provided."
          },
          "energies": {
            "title": "Fuel types",
            "type": "array",
            "description": "Restrict to these fuel types.",
            "items": {
              "type": "string",
              "enum": [
                "DIESEL",
                "ESSENCE",
                "ELECTRIC",
                "HYBRID",
                "PLUGIN_HYBRID",
                "BIO_ESSENCE_GPL",
                "BICARBURATION_ESSENCE_GNV"
              ],
              "enumTitles": [
                "Diesel",
                "Petrol (Essence)",
                "Electric",
                "Hybrid",
                "Plug-in hybrid",
                "Petrol + LPG",
                "Petrol + CNG"
              ]
            }
          },
          "categories": {
            "title": "Body types",
            "type": "array",
            "description": "Restrict to these body/vehicle categories.",
            "items": {
              "type": "string",
              "enum": [
                "CITADINE",
                "COMPACTE",
                "BERLINE",
                "BREAK",
                "SUV_4X4_CROSSOVER",
                "MONOSPACE",
                "COUPE",
                "CABRIOLET",
                "ROUTIERE",
                "PICK_UP",
                "BUS_ET_MINIBUS",
                "FOURGONNETTE"
              ],
              "enumTitles": [
                "City car",
                "Compact",
                "Saloon",
                "Estate",
                "SUV / 4x4 / Crossover",
                "Minivan",
                "Coupe",
                "Convertible",
                "Executive",
                "Pick-up",
                "Bus / Minibus",
                "Small van"
              ]
            }
          },
          "gearbox": {
            "title": "Transmission",
            "enum": [
              "MANUAL",
              "AUTO"
            ],
            "type": "string",
            "description": "Restrict to a transmission type."
          },
          "regions": {
            "title": "Department codes",
            "type": "array",
            "description": "French department codes to restrict to, e.g. 75, 13, 69. Used only when no Start URLs are provided.",
            "items": {
              "type": "string"
            }
          },
          "priceMin": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in euros."
          },
          "priceMax": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in euros."
          },
          "yearMin": {
            "title": "Min year",
            "type": "integer",
            "description": "Earliest registration year."
          },
          "yearMax": {
            "title": "Max year",
            "type": "integer",
            "description": "Latest registration year."
          },
          "mileageMin": {
            "title": "Min mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum mileage in kilometres. Used only when no Start URLs are provided."
          },
          "mileageMax": {
            "title": "Max mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum mileage in kilometres."
          },
          "sortPreset": {
            "title": "Sort order",
            "enum": [
              "newestListings",
              "oldestListings",
              "newestModelYear",
              "oldestModelYear",
              "lowestMileage",
              "lowestPrice",
              "highestPrice"
            ],
            "type": "string",
            "description": "How listings are ordered before pagination. Used only when no Start URLs are provided (a pasted URL's own sortBy is honoured instead)."
          },
          "onlyWithPhotos": {
            "title": "Only listings with photos",
            "type": "boolean",
            "description": "When ON, only listings that include at least one photo are collected. Used only when no Start URLs are provided.",
            "default": false
          },
          "scrapeDetailPages": {
            "title": "Scrape full detail pages",
            "type": "boolean",
            "description": "When ON, each car's detail page is fetched to return the FULL record (complete specs, warranty, price-drop history, seller Google reviews, equipment list, all image URLs). Deeper but slower and costs more. When OFF (default), rich card data (make, model, version, year, mileage, price, gearbox, energy, colour, seller, phone, photo) is read straight from search results — much cheaper.",
            "default": false
          },
          "maxItems": {
            "title": "Max vehicles",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of cars to return.",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Detail-page concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many detail pages to fetch in parallel (only used when 'Scrape full detail pages' is on).",
            "default": 6
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave this empty on any plan — the actor routes every run through its own French residential proxy at no extra cost to you, on the free plan too. Set it only to force your OWN proxy URLs. Apify Proxy is ignored whatever groups and country you pick: lacentrale.fr is protected by DataDome, the solved cookie is tied to the IP that solved it, and the captcha solver has to reach that proxy from outside Apify — which Apify allows only on a paid plan."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}