{
  "openapi": "3.0.1",
  "info": {
    "title": "Cars.co.ug Scraper: Used & New Cars in Uganda",
    "description": "Scrape cars.co.ug, the Ugandan car marketplace: used and new cars, SUVs, pick-ups and trucks with UGX, USD and EUR price, mileage, fuel, transmission, engine, photos, dealers and price-change monitoring. No login, no proxy. Export JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "UO7LzDcgpPddLfK9u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~cars-ug-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-cars-ug-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~cars-ug-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-cars-ug-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~cars-ug-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-cars-ug-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",
              "dealers"
            ],
            "type": "string",
            "description": "search = vehicle ads for the makes and filters below. urls = listing addresses, listing numbers, search addresses and dealer pages you list. dealers = the car dealer directory with showroom address, map position and stock counts.",
            "default": "search"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows (all record types together). Free plans are limited to 10 items per run. The whole site is about 1,600 vehicles.",
            "default": 50
          },
          "makes": {
            "title": "Makes",
            "type": "array",
            "description": "Car makes as written on the site, for example Toyota, Nissan, Subaru or Mercedes-Benz. Case and spaces do not matter. An unknown make is reported with close suggestions. Empty means every make.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "models": {
            "title": "Models",
            "type": "array",
            "description": "Models of ONE make, for example Land Cruiser, Hilux or Harrier. Needs exactly one entry in Makes. A model that does not exist for the make is reported with examples.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "bodyTypes": {
            "title": "Body types",
            "type": "array",
            "description": "Body styles to keep. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "coupe",
                "hatchback",
                "hybrid",
                "minibus",
                "mpv",
                "old-time",
                "panel-van",
                "pickup-double-cab",
                "pickup-extended-cab",
                "pickup-single-cab",
                "sedan",
                "station-wagon",
                "suv"
              ],
              "enumTitles": [
                "Coupe",
                "Hatchback",
                "Hybrid (body class)",
                "Minibus",
                "MPV",
                "Old Time (classic)",
                "Panel van",
                "Pick-up Double Cab",
                "Pick-up Extended Cab",
                "Pick-up Single Cab",
                "Sedan",
                "Station Wagon",
                "SUV"
              ]
            },
            "default": []
          },
          "fuelTypes": {
            "title": "Fuel types",
            "type": "array",
            "description": "Fuel types to keep. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "petrol",
                "diesel",
                "hybrid"
              ],
              "enumTitles": [
                "Petrol",
                "Diesel",
                "Hybrid"
              ]
            },
            "default": []
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Cities with ads: Kampala (nearly every ad) and Entebbe. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "kampala",
                "entebbe"
              ],
              "enumTitles": [
                "Kampala",
                "Entebbe"
              ]
            },
            "default": []
          },
          "transmission": {
            "title": "Transmission",
            "enum": [
              "any",
              "manual",
              "automatic"
            ],
            "type": "string",
            "description": "Manual keeps manual gearboxes only. Automatic keeps everything that is not manual (automatic, DSG, multitronic and similar), as the site does.",
            "default": "any"
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "used"
            ],
            "type": "string",
            "description": "New or used, as labelled on the ad.",
            "default": "any"
          },
          "yearFrom": {
            "title": "Year from",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Only vehicles of this model year or newer. 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. 0 or empty means no limit."
          },
          "priceFrom": {
            "title": "Minimum price (UGX)",
            "minimum": 0,
            "maximum": 1000000000000,
            "type": "integer",
            "description": "Only ads priced at or above this amount in Ugandan shillings, for example 50000000. 0 or empty means no limit."
          },
          "priceTo": {
            "title": "Maximum price (UGX)",
            "minimum": 0,
            "maximum": 1000000000000,
            "type": "integer",
            "description": "Only ads priced at or below this amount in Ugandan shillings. 0 or empty means no limit."
          },
          "mileageFrom": {
            "title": "Minimum mileage (km)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only vehicles with at least this odometer reading. Ads that do not state a mileage are left out when a mileage limit is set. 0 or empty means no limit."
          },
          "mileageTo": {
            "title": "Maximum mileage (km)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only vehicles with at most this odometer reading. Ads that do not state a mileage are left out when a mileage limit is set. 0 or empty means no limit."
          },
          "engineFrom": {
            "title": "Engine size from (cc)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only engines of at least this size in cubic centimetres, for example 2000. 0 or empty means no limit."
          },
          "engineTo": {
            "title": "Engine size to (cc)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only engines of at most this size in cubic centimetres, for example 3000. 0 or empty means no limit."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "price-asc",
              "price-desc",
              "mileage-asc",
              "mileage-desc",
              "year-desc",
              "year-asc"
            ],
            "type": "string",
            "description": "Order of the results. Newest first is best for monitoring and is the fastest.",
            "default": "newest"
          },
          "startUrls": {
            "title": "Addresses",
            "type": "array",
            "description": "urls mode. cars.co.ug listing pages, search result pages with filters, make or model pages (for example /Toyota/Land-Cruiser), body-type pages, one dealer page or the private sellers page. Listing numbers can go in the next field.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Listing numbers",
            "type": "array",
            "description": "urls mode. The number at the end of a listing address, for example 41316. Four to nine digits.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "dealerQuery": {
            "title": "Dealer name contains",
            "type": "string",
            "description": "dealers mode. Keeps only dealers whose name contains this text. Empty means every dealer.",
            "default": ""
          },
          "includeDealerVehicles": {
            "title": "Include the vehicles of each dealer",
            "type": "boolean",
            "description": "On: after each dealer record, also read that dealer's vehicle listings (each one is a vehicle record).",
            "default": false
          },
          "fetchDetails": {
            "title": "Read every listing page (full detail)",
            "type": "boolean",
            "description": "Off: one row per ad from the result list (price, year, mileage, fuel, transmission, city, photo). On: also opens each ad page for body type, drive, power, features, all photos, description, dealer address and map position, and the exact US dollar and euro price. Slower and billed as a detail record.",
            "default": false
          },
          "includeContactDetails": {
            "title": "Include dealer contact details",
            "type": "boolean",
            "description": "Adds the business phone of dealerships and keeps phone numbers inside their descriptions. Private seller names, phones and emails are never output.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new listings (monitor)",
            "type": "boolean",
            "description": "Skips every listing seen in an earlier run with the same monitor name, so scheduled runs return only what is new.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Report price changes",
            "type": "boolean",
            "description": "Needs Only new listings. A listing seen before with a price at least 2 percent different comes back as a price-change-record with the previous price and the change in percent.",
            "default": false
          },
          "resetSeen": {
            "title": "Forget seen listings",
            "type": "boolean",
            "description": "Clears the memory of the monitor name before this run.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the memory used by Only new listings. Use one name per saved search. Empty derives a name from your filters.",
            "default": ""
          },
          "maxConcurrency": {
            "title": "Parallel page reads",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many listing pages are read at the same time (1 to 5). Requests are paced to about two per second in total, so a higher value adds little.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Empty means direct requests, which work. Add a proxy only if your own network needs one."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}