{
  "openapi": "3.0.1",
  "info": {
    "title": "Vehicle Data Normalizer — Australian Inventory",
    "description": "Normalize user-owned Australian vehicle inventory exports from CSV, JSON, JSONL, or HTML. Returns stable records for analytics, CRM imports, price comparison, and AI agents. Does not scrape Carsales or bypass access controls. Charged $0.005 per normalized record.",
    "version": "1.2",
    "x-build-id": "T8Lki6bjUrfbujqZh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/muhammadafzal~normalize-australian-vehicle-data/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-muhammadafzal-normalize-australian-vehicle-data",
        "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/muhammadafzal~normalize-australian-vehicle-data/runs": {
      "post": {
        "operationId": "runs-sync-muhammadafzal-normalize-australian-vehicle-data",
        "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/muhammadafzal~normalize-australian-vehicle-data/run-sync": {
      "post": {
        "operationId": "run-sync-muhammadafzal-normalize-australian-vehicle-data",
        "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": {
          "sourceUrls": {
            "title": "Source file URLs",
            "maxItems": 20,
            "type": "array",
            "description": "Use this when lawful vehicle inventory files are available over HTTP or HTTPS. Enter direct CSV, JSON, JSONL, or HTML file URLs such as 'https://dealer.example/inventory.csv'. Defaults to no remote files and accepts at most 20 URLs. This is not a marketplace crawler and Carsales URLs are rejected.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "inlineData": {
            "title": "Inline inventory data",
            "type": "string",
            "description": "Use this when pasting a small CSV, JSON, JSONL, or HTML export directly into the run. For example, paste '[{\"make\":\"Toyota\",\"model\":\"Corolla\",\"price\":26900}]'. A working sample is supplied by default for health checks. This field is not JavaScript and is never executed.",
            "default": "[{\"listingId\":\"DEMO-001\",\"title\":\"2021 Toyota Corolla Ascent Sport\",\"year\":2021,\"make\":\"Toyota\",\"model\":\"Corolla\",\"variant\":\"Ascent Sport\",\"price\":26689,\"currency\":\"AUD\",\"odometerKm\":62817,\"state\":\"NSW\",\"sellerType\":\"dealer\"}]"
          },
          "sourceFormat": {
            "title": "Source format",
            "enum": [
              "auto",
              "csv",
              "json",
              "jsonl",
              "html"
            ],
            "type": "string",
            "description": "Use this when the file extension or content type is missing or misleading. Choose 'auto' to detect JSON, JSONL, CSV, or HTML from the content; for example, choose 'csv' for an extensionless CSV endpoint. Defaults to 'auto'. This setting does not transform PDFs, spreadsheets, or images.",
            "default": "auto"
          },
          "sourceLabel": {
            "title": "Source label",
            "maxLength": 120,
            "type": "string",
            "description": "Use this to identify the inventory owner or export in every result. Enter a short label such as 'Sydney dealer feed'. Defaults to 'user-provided inventory' and is limited to 120 characters. This is provenance metadata, not a URL or seller name override.",
            "default": "user-provided inventory"
          },
          "defaultCurrency": {
            "title": "Default currency",
            "pattern": "^[A-Za-z]{3}$",
            "type": "string",
            "description": "Use this when source prices omit their ISO 4217 currency. Enter a three-letter code such as 'AUD'. Defaults to 'AUD' and is used only when no currency can be inferred. This does not convert values between currencies.",
            "default": "AUD"
          },
          "maxResults": {
            "title": "Maximum normalized records",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Use this to cap output size and the maximum PPE charge. Enter an integer such as 100; accepted values are 1 through 10000. Defaults to 100, making the maximum record charge $0.50. This is not a source-row limit because invalid and duplicate rows are excluded.",
            "default": 100
          },
          "duplicateStrategy": {
            "title": "Duplicate handling",
            "enum": [
              "prefer-complete",
              "first",
              "last"
            ],
            "type": "string",
            "description": "Use this to choose which record survives when listing ID, VIN, URL, or a composite identity repeats. For example, 'prefer-complete' keeps the row with more populated fields. Defaults to 'prefer-complete'. This does not merge different vehicles that merely share the same price.",
            "default": "prefer-complete"
          },
          "previousDatasetId": {
            "title": "Previous Apify dataset ID",
            "type": "string",
            "description": "Use this to compare normalized prices with an earlier dataset from this actor. Enter an accessible dataset ID such as 'a1b2c3d4e5f6'. Defaults to empty, which disables price-change comparison. This is not a dataset URL and the run token must have read access.",
            "default": ""
          },
          "responseFormat": {
            "title": "Response detail",
            "enum": [
              "concise",
              "detailed"
            ],
            "type": "string",
            "description": "Use this to control whether a compact copy of each source row is retained. Choose 'detailed' for debugging field mappings or 'concise' for smaller AI-agent output. Defaults to 'concise'. Both modes return the same stable normalized vehicle fields.",
            "default": "concise"
          },
          "includeInvalidRecords": {
            "title": "Include invalid rows",
            "type": "boolean",
            "description": "Use this when data-quality auditing requires rows that lack a usable vehicle identity. Enable it to emit schema-valid records with validation warnings; for example, a row containing only a price. Defaults to false. Invalid rows still count as normalized output when emitted.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}