{
  "openapi": "3.0.1",
  "info": {
    "title": "SGCarMart Used Car Scraper — Prices, COE/OMV/ARF & Dealer Leads",
    "description": "Scrape SGCarMart used-car listings: price, depreciation, COE left, OMV, ARF, PARF/dereg value, road tax, mileage, specs and the full photo gallery — plus dealer name, phone and address as leads. Filter by vehicle type or paste any search URL. Monitor mode returns only new & changed cars.",
    "version": "0.1",
    "x-build-id": "4JrbXBpCabJEKIRtP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~sgcarmart-used-car-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-sgcarmart-used-car-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/scrapesage~sgcarmart-used-car-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-sgcarmart-used-car-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/scrapesage~sgcarmart-used-car-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-sgcarmart-used-car-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": {
          "searchUrls": {
            "title": "Search / listing URLs",
            "type": "array",
            "description": "Paste one or more SGCarMart used-car listing or search URLs (e.g. `https://www.sgcarmart.com/used-cars/listing?vts[]=9`). Configure any filters you like on sgcarmart.com — make, model, price, depreciation, COE, sorting — then copy the URL here; the scraper paginates through all results. Leave blank to use the filters below or scrape the newest listings.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Individual car URLs",
            "type": "array",
            "description": "Optional. Paste specific car detail-page URLs (e.g. `https://www.sgcarmart.com/used-cars/info/toyota-corolla-altis-16a-1234567/`) to scrape only those cars.",
            "items": {
              "type": "string"
            }
          },
          "vehicleTypes": {
            "title": "Vehicle types",
            "type": "array",
            "description": "Restrict results to one or more body/vehicle types. Applies only when building the search from filters (i.e. when no Search URLs are pasted).",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "12",
                "13",
                "9",
                "10",
                "11",
                "8",
                "7",
                "6",
                "16",
                "15",
                "1",
                "4",
                "5",
                "14",
                "3"
              ],
              "enumTitles": [
                "All Passenger Cars",
                "Luxury Sedan",
                "Mid-Sized Sedan",
                "SUV",
                "MPV",
                "Hatchback",
                "Sports",
                "Stationwagon",
                "Hybrid Cars",
                "Electric Cars",
                "Diesel Cars",
                "All Commercial Vehicles",
                "Van",
                "Truck",
                "Bus/Mini Bus",
                "Others"
              ]
            },
            "default": []
          },
          "availability": {
            "title": "Availability",
            "enum": [
              "available",
              "sold",
              "all"
            ],
            "type": "string",
            "description": "Which listings to include when building the search from filters.",
            "default": "available"
          },
          "dealerCode": {
            "title": "Dealer code (optional)",
            "type": "integer",
            "description": "Scrape only the inventory of a single dealer, by SGCarMart dealer code (the `dl=` value in a dealer's listing URL). Great for monitoring a specific dealer."
          },
          "maxItems": {
            "title": "Max cars",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of cars to scrape. Use 0 for no limit (scrape every result that matches — can be 15,000+).",
            "default": 100
          },
          "scrapeDetails": {
            "title": "Scrape full detail pages",
            "type": "boolean",
            "description": "Open each car's detail page to enrich it with OMV, ARF, deregistration/PARF value, road tax, COE expiry date, power, curb weight, the full photo gallery, and the dealer's phone, address and profile. Turn off for a fast, cheap listing-only run (price, depreciation, mileage, COE, make/model, dealer name).",
            "default": true
          },
          "monitorMode": {
            "title": "Monitor mode (only new & changed)",
            "type": "boolean",
            "description": "Only output listings that are new or have changed (e.g. price drops) since the previous run for the same input. State persists across runs, so this pairs perfectly with Apify Schedules to track a market, model, or dealer over time without re-pulling unchanged cars. Leave off to always return every match.",
            "default": false
          },
          "monitorTrackPriceChanges": {
            "title": "Flag price changes",
            "type": "boolean",
            "description": "When monitor mode is on, re-emit a listing when its price changes and tag it `price_drop` / `price_increase` with the previous price. Turn off to treat only brand-new listings as changes.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Maximum number of pages fetched in parallel.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "SGCarMart is protected by Cloudflare and is Singapore-geofenced, so Singapore residential proxies are required and used by default. Keep this setting unless you know what you're doing.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "SG"
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}