{
  "openapi": "3.0.1",
  "info": {
    "title": "Mobile.de Scraper — German Car Listings, Prices & Dealer Data",
    "description": "Scrape car listings from Mobile.de, Germany's #1 car marketplace with 46M+ monthly visits. Search by keyword, make, model, price range, and more. Extract prices, mileage, specs, dealer info, and photos. No login or cookies required.",
    "version": "0.1",
    "x-build-id": "50zqElI4bLAa2N12V"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/studio-amba~mobile-de-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-studio-amba-mobile-de-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/studio-amba~mobile-de-scraper/runs": {
      "post": {
        "operationId": "runs-sync-studio-amba-mobile-de-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/studio-amba~mobile-de-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-studio-amba-mobile-de-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": {
          "query": {
            "title": "Search Query",
            "type": "string",
            "description": "Search term (e.g. 'bmw', 'audi a4', 'mercedes c-klasse'). Leave empty to browse all listings."
          },
          "make": {
            "title": "Make",
            "type": "string",
            "description": "Optional. Car make as mobile.de writes it (e.g. BMW, Audi, Mercedes-Benz, VW). Uses mobile.de's own make filter. A make mobile.de does not list ends the run with a message and no results. When empty, the make is read from the start of the search query."
          },
          "model": {
            "title": "Model",
            "type": "string",
            "description": "Optional, used together with Make. Model or model group as mobile.de writes it (e.g. X5, A4, C-Klasse, 3er)."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Direct Mobile.de search or detail URLs. Overrides the query field if provided.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "minPrice": {
            "title": "Minimum Price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price filter in euros."
          },
          "maxPrice": {
            "title": "Maximum Price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price filter in euros."
          },
          "minYear": {
            "title": "Minimum Year",
            "minimum": 1900,
            "type": "integer",
            "description": "Minimum first registration year (e.g. 2018)."
          },
          "maxYear": {
            "title": "Maximum Year",
            "minimum": 1900,
            "type": "integer",
            "description": "Maximum first registration year (e.g. 2024)."
          },
          "mileageMin": {
            "title": "Minimum Mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum mileage filter in kilometers."
          },
          "maxMileage": {
            "title": "Maximum Mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum mileage filter in kilometers."
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "dealer",
              "private",
              "company"
            ],
            "type": "string",
            "description": "Uses mobile.de's own seller filter (Anbieter).",
            "default": "any"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of car listings to scrape. Each search page has 20 results. A normal search reads at most 50 pages (1,000 listings); with trackListings on, the whole search is read, and a search over mobile.de's 2,000-listing limit is split into price ranges automatically.",
            "default": 100
          },
          "fetchDetails": {
            "title": "Fetch ad details",
            "type": "boolean",
            "description": "Off by default. When on, the actor opens every ad page and adds firstRegistration, sellerId, dealerName, dealerRating, dealerRatingCount, sellerAddress, vin, hsn, tsn, fuelTypeDetail, previousOwners, exteriorColor, damageCondition, category, priceNet, vatRate, equipment, description, imageCount, adCreatedAt, adModifiedAt, adRenewedAt and detailsError. Without it those fields are not in the output at all. One extra page per listing, so runs take longer. VIN is only there when the seller wrote it in the description.",
            "default": false
          },
          "trackListings": {
            "title": "Track listings between runs",
            "type": "boolean",
            "description": "Off by default. When on, the actor reads every result page of this search, remembers each listing in a key-value store in your account (\"mobile-de-tracking\") and adds firstSeenAt, lastSeenAt, status (new, active), price changes, one row per listing that disappeared since the last run (status removed, with removalClass potential_sold or reposted), and one __SEGMENT_SUMMARY__ row with market days supply. Mobile.de does not say why an ad disappeared, so a removal is a potential sale, never a confirmed one. Set maxResults above the number of listings in the search: listings are only marked removed when the run read every result page. A search over mobile.de's 2,000-listing limit is split into price ranges automatically. Schedule the same input daily.",
            "default": false
          },
          "trackingKey": {
            "title": "Tracking key",
            "type": "string",
            "description": "Name of the tracked segment in the store. Leave empty to derive it from the search filters, so the same filters always continue the same history. Set your own for a readable name (letters, digits, - _ . only). A new key starts a new history."
          },
          "salesWindowDays": {
            "title": "Sales window (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Number of past days counted as potential sales for the market days supply: MDS = active listings / (potential sales in the window / window days). Only used with trackListings.",
            "default": 45
          },
          "priceBands": {
            "title": "Price bands",
            "maxItems": 20,
            "type": "array",
            "description": "Band edges for the price breakdown in the segment summary, in EUR. Default [10000, 20000, 30000, 40000, 50000, 75000, 100000] gives 0-9999, 10000-19999, ... and 100000+. Only used with trackListings.",
            "items": {
              "type": "integer"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration (unused)",
            "type": "object",
            "description": "Kept for backwards compatibility with older input payloads. Mobile.de uses Akamai bot protection that requires Bright Data Web Unlocker — this scraper fetches pages through Bright Data instead of Apify proxies, so this field has no effect."
          },
          "brightDataApiKey": {
            "title": "Bright Data API Key (optional)",
            "type": "string",
            "description": "Optional: your own Bright Data API key for the Web Unlocker zone. Leave empty to use the built-in unlocking service."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}