{
  "openapi": "3.0.1",
  "info": {
    "title": "Craigslist Vehicle Scraper + Instant Private Listing Results",
    "description": "Scrape Craigslist vehicles by make, model, year, price, and mileage. Features exact listing dates, smart age filtering, and deduplication. Optimized for lowest cost per run using advanced extraction techniques. Get instant vehicle results with filtering for private listings only.",
    "version": "0.0",
    "x-build-id": "ZWCj7JYuEo9IIDrFZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/raidr-api~craigslist-vehicle-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-raidr-api-craigslist-vehicle-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/raidr-api~craigslist-vehicle-scraper/runs": {
      "post": {
        "operationId": "runs-sync-raidr-api-craigslist-vehicle-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/raidr-api~craigslist-vehicle-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-raidr-api-craigslist-vehicle-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": {
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "City and state/province, e.g. `Los Angeles, California`, `Dallas, Texas`, `Toronto, Ontario`. Automatically resolved to the nearest craigslist region. This is the easiest way to target an area — leave the advanced Search Path below empty when you use it. (Defaults to Los Angeles if both this and Search Path are empty.)"
          },
          "searchPath": {
            "title": "🔎 Search Path (advanced override)",
            "type": "string",
            "description": "Advanced: raw region + category path, used only when Location is empty. Format `{region}-{state}/{categoryAbbr}`, e.g. `los-angeles-ca/cta` (cars+trucks all), `los-angeles-ca/cto` (by owner), `los-angeles-ca/ctd` (by dealer), `newyork-ny/cta`, `chicago-il/cta`.\n\nCategory codes:\n- `cta` = cars+trucks all\n- `cto` = cars+trucks by owner\n- `ctd` = cars+trucks by dealer"
          },
          "searchDistance": {
            "title": "🎯 Search radius (miles)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Optional. Search radius in miles around the resolved location. When set, craigslist also pulls in listings from neighboring areas (e.g. SD, IE, OC) within this radius. Leave empty to get just the single metro."
          },
          "minPrice": {
            "title": "💲 Min price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in dollars (server-side filter). 0 or empty = no minimum.",
            "default": 0
          },
          "maxPrice": {
            "title": "💲 Max price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in dollars (server-side filter). 0 or empty = no maximum.",
            "default": 0
          },
          "purveyor": {
            "title": "👤 Purveyor",
            "enum": [
              "owner",
              "dealer",
              "all"
            ],
            "type": "string",
            "description": "Filter on owner-listed vs dealer-listed.",
            "default": "owner"
          },
          "bundleDuplicates": {
            "title": "🪞 Hide duplicate reposts",
            "type": "boolean",
            "description": "Hide listings that are reposts of others (server-side). Saves ~5% bandwidth and reduces noise.",
            "default": true
          },
          "query": {
            "title": "🔤 Free-text query",
            "type": "string",
            "description": "Optional keyword filter (e.g. `Tesla`, `low miles`, `manual`). Matches against the title."
          },
          "autoMakeModel": {
            "title": "🚗 Make and model filter",
            "type": "string",
            "description": "Server-side make/model filter (e.g. `Tesla Model S`, `Honda Civic`)."
          },
          "minYear": {
            "title": "📅 Min model year",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Server-side filter on model year."
          },
          "maxYear": {
            "title": "📅 Max model year",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Server-side filter on model year."
          },
          "enrichDetails": {
            "title": "🔬 Enrichment mode",
            "enum": [
              "never",
              "new-only",
              "always"
            ],
            "type": "string",
            "description": "When to fetch the per-posting HTML detail page.",
            "default": "new-only"
          },
          "maxNewListingsPerRun": {
            "title": "🔢 Max enrichments per run",
            "minimum": 0,
            "maximum": 360,
            "type": "integer",
            "description": "Hard cap on detail-page fetches per scraper run. Protects against bandwidth blowups on cold-start.",
            "default": 100
          },
          "useDeduplication": {
            "title": "🔄 Skip previously seen listings",
            "type": "boolean",
            "description": "Remember pids from previous runs in the actor's KV store and skip them. Required for sensible Discord notifications and detail-enrichment cost control on a polling schedule.",
            "default": true
          },
          "discordWebhookUrl": {
            "title": "🔗 Webhook URL",
            "type": "string",
            "description": "Discord webhook URL. Server Settings → Integrations → Webhooks → New Webhook → Copy URL. Leave empty to disable."
          },
          "discordNotifyOnlyNew": {
            "title": "🆕 Notify only on new",
            "type": "boolean",
            "description": "Send a notification only for listings that weren't seen in a previous run.",
            "default": true
          },
          "discordImageDisplay": {
            "title": "🖼️ Image style",
            "enum": [
              "thumbnail",
              "full",
              "none"
            ],
            "type": "string",
            "description": "How to display the listing image in Discord.",
            "default": "thumbnail"
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "Apify proxy or custom proxy settings.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}