{
  "openapi": "3.0.1",
  "info": {
    "title": "Mobile.bg Scraper - Bulgarian Car Marketplace",
    "description": "Scrape car listings from Mobile.bg, Bulgaria's largest vehicle marketplace with 3M+ monthly visits. Extract prices, specs, mileage, fuel type, transmission, power, seller info, and images. Filter by make, model, year, price range. No login required.",
    "version": "0.1",
    "x-build-id": "HCMIyDdoC5zZKrxAf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/studio-amba~mobile-bg-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-studio-amba-mobile-bg-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-bg-scraper/runs": {
      "post": {
        "operationId": "runs-sync-studio-amba-mobile-bg-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-bg-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-studio-amba-mobile-bg-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": {
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Free text search for car listings (e.g., 'BMW', 'Audi A4', 'Golf'). Leave empty to browse all listings with other filters."
          },
          "make": {
            "title": "Make (Brand)",
            "type": "string",
            "description": "Car manufacturer as used on Mobile.bg (e.g., bmw, audi, mercedes-benz, volkswagen, opel, toyota, renault, peugeot, ford, honda)."
          },
          "model": {
            "title": "Model",
            "type": "string",
            "description": "Car model as used on Mobile.bg (e.g., 3-seriya, golf, a4, clio). Use Bulgarian transliteration as shown in URLs."
          },
          "yearFrom": {
            "title": "Year From",
            "minimum": 1950,
            "maximum": 2030,
            "type": "integer",
            "description": "Minimum registration year (e.g., 2015)."
          },
          "yearTo": {
            "title": "Year To",
            "minimum": 1950,
            "maximum": 2030,
            "type": "integer",
            "description": "Maximum registration year (e.g., 2024)."
          },
          "priceFrom": {
            "title": "Price From (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in EUR."
          },
          "priceTo": {
            "title": "Price To (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in EUR."
          },
          "mileageMax": {
            "title": "Max Mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum mileage in kilometers."
          },
          "mileageMin": {
            "title": "Min Mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum mileage in kilometers. Mobile.bg has no minimum-mileage filter, so the actor reads the results and drops listings below this value."
          },
          "fuelType": {
            "title": "Fuel Type",
            "enum": [
              "",
              "benzin",
              "dizel",
              "gaz",
              "elektro",
              "hibrid",
              "plug-in-hibrid",
              "vodorod"
            ],
            "type": "string",
            "description": "Filter by fuel type, using Mobile.bg's own fuel filter."
          },
          "transmission": {
            "title": "Transmission",
            "enum": [
              "",
              "manual",
              "automatic",
              "semi-automatic"
            ],
            "type": "string",
            "description": "Filter by gearbox, using Mobile.bg's own transmission filter. Leave empty for any."
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "dealer",
              "private"
            ],
            "type": "string",
            "description": "Uses Mobile.bg's own seller filter (registered dealers or private sellers).",
            "default": "any"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of car listings to return.",
            "default": 100
          },
          "fetchDetails": {
            "title": "Fetch ad details",
            "type": "boolean",
            "description": "Off by default. When on, the actor opens every ad page and adds views, editedAt (last edit, or publication time if never edited), photosCount, vin, productionDate, description, dealerName and dealerUrl. 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 entered it.",
            "default": false
          },
          "trackListings": {
            "title": "Track listings between runs",
            "type": "boolean",
            "description": "Off by default. When on, the actor remembers every listing of this search in a key-value store in your account (\"mobile-bg-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.bg 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. 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).",
            "default": 45
          },
          "priceBands": {
            "title": "Price bands",
            "maxItems": 20,
            "type": "array",
            "description": "Band edges for the price breakdown in the segment summary, in the listing currency (EUR). Default [5000, 10000, 15000, 20000, 30000, 50000] gives 0-4999, 5000-9999, ... and 50000+.",
            "items": {
              "type": "integer"
            }
          },
          "wholeMarket": {
            "title": "Whole market (every make)",
            "type": "boolean",
            "description": "Off by default. When on, the actor reads every car listing on Mobile.bg with trackListings on, and ignores the search and filter fields. Mobile.bg shows at most 3,000 listings per search, so the market is read as one search per make, and per year range for the big makes (about 190 searches, about 140,000 listings). Each search runs as its own run of this actor in your account and keeps its own tracked segment \"<trackingKey>-<make>-<from>-<to>\" (x = open end). The listings are in each search's run dataset; this run's dataset has one row per search (run id, dataset id, listings, removed, mdsDays) and the run store has MARKET_READ_SUMMARY. A search that has grown past 3,000 listings is split by year and starts a new segment. You pay the normal per-result price for every listing read, so a whole-market read is about 140,000 results.",
            "default": false
          },
          "wholeMarketConcurrency": {
            "title": "Whole market: searches at a time",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "How many searches run at the same time in whole-market mode. Each search run uses 4 GB of memory, so 6 needs 24 GB free in your account. More than 6 caused page timeouts in our tests.",
            "default": 6
          },
          "wholeMarketMaxUsageUsd": {
            "title": "Whole market: platform usage cap (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional hard cap for whole-market mode. No new search is started once the finished search runs plus the running ones would pass this amount of platform usage. Searches not started are listed in MARKET_READ_SUMMARY."
          },
          "wholeMarketMakes": {
            "title": "Whole market: only these makes",
            "type": "array",
            "description": "Optional. Mobile.bg make slugs as in the site's URLs (e.g. \"bmw\", \"mercedes-benz\", \"vw\"). Empty = every make on the site.",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings. Residential proxies recommended for reliable access to Mobile.bg.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}