{"openapi":"3.1.0","info":{"title":"Old Cars Data API","version":"1.0.0","description":"Search and analyze 100,000+ classic and collector car auction results from Bring a Trailer, Cars & Bids, Hagerty, PCAR Market, All Collector Cars, Gooding & Co, and RM Sotheby's. Data from 2018 to present, updated daily. Use this API to find what a specific car sold for, get pricing statistics, track market trends, and compare auction results across platforms.","contact":{"email":"support@oldcarsdata.com","url":"https://oldcarsdata.com"},"termsOfService":"https://oldcarsdata.com/terms-of-service"},"servers":[{"url":"https://api.oldcarsdata.com","description":"Production"}],"security":[{"bearerAuth":[]}],"paths":{"/makes":{"get":{"operationId":"listMakes","summary":"List all vehicle makes","description":"List all vehicle makes in the database. Public endpoint, no authentication required. Does not count toward plan query limits. Use these exact strings as the `make` query parameter on GET /auctions. Covers 100+ makes across Bring a Trailer, Cars & Bids, Hagerty, PCAR Market, All Collector Cars, Gooding & Co, and RM Sotheby's.","security":[],"responses":{"200":{"description":"List of makes","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"string"},"description":"Make names sorted alphabetically"}}}}}}}}},"/models":{"get":{"operationId":"listModels","summary":"List models for a make","description":"List all models for a given vehicle make. Public endpoint, no authentication required. Does not count toward plan query limits. Use these exact strings as the `model` query parameter on GET /auctions together with a `make` from GET /makes.","security":[],"parameters":[{"name":"make","in":"query","required":true,"schema":{"type":"string","minLength":1},"description":"Vehicle make (e.g. \"Porsche\", \"BMW\", \"Toyota\")"}],"responses":{"200":{"description":"List of models","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"string"},"description":"Model names sorted alphabetically"}}}}}},"400":{"$ref":"#/components/responses/ValidationError"}}}},"/auctions":{"get":{"operationId":"searchAuctions","summary":"Search auction results","description":"Search completed classic and collector car auction results. Counts toward plan query limits. All filters are optional. Use `make` and `model` for normalized vehicle filtering, `vin` for exact raw VIN lookup, `seller_username` for exact seller lookup, or combine other filters such as `status`, `source`, `keyword`, year bounds, and price bounds.","parameters":[{"name":"make","in":"query","required":false,"schema":{"type":"string","minLength":1},"description":"Exact make name from GET /makes (e.g. \"Toyota\"). Optional."},{"name":"vin","in":"query","required":false,"schema":{"type":"string","minLength":1},"description":"Exact VIN match (raw string, case-sensitive as stored). When set, `make` is not required."},{"name":"seller_username","in":"query","required":false,"schema":{"type":"string","minLength":1},"description":"Exact seller username match. When set alone or with `vin`, `make` is not required."},{"name":"model","in":"query","schema":{"type":"string"},"description":"Exact model name as returned by GET /models for this make (e.g. \"Land Cruiser\")"},{"name":"year_min","in":"query","schema":{"type":"integer"},"description":"Minimum model year (inclusive)"},{"name":"year_max","in":"query","schema":{"type":"integer"},"description":"Maximum model year (inclusive)"},{"name":"price_min","in":"query","schema":{"type":"integer"},"description":"Minimum sale price (inclusive)"},{"name":"price_max","in":"query","schema":{"type":"integer"},"description":"Maximum sale price (inclusive)"},{"name":"status","in":"query","schema":{"type":"string","enum":["sold","bid to","reserve not met","canceled","unknown","withdrawn"]},"description":"Auction outcome status"},{"name":"source","in":"query","schema":{"type":"string"},"description":"Source platform (e.g. \"bringatrailer\")"},{"name":"keyword","in":"query","schema":{"type":"string"},"description":"Search in title and description (case-insensitive)"},{"name":"sort","in":"query","schema":{"type":"string","enum":["date","price","year","bids"],"default":"date"},"description":"Sort field"},{"name":"direction","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"description":"Sort direction"},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Page number"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Results per page"}],"responses":{"200":{"description":"Paginated auction results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuctionsResponse"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/auctions/live":{"get":{"operationId":"listLiveAuctions","summary":"List live auctions","description":"List currently active collector car auctions. No filters are required. Optional filters can narrow by make, model, VIN, seller, source, keyword, year/price bounds, auction ending window, or records updated since a timestamp. Counts toward plan query limits.","parameters":[{"name":"make","in":"query","required":false,"schema":{"type":"string","minLength":1},"description":"Exact normalized make name from GET /makes."},{"name":"model","in":"query","schema":{"type":"string"},"description":"Exact normalized model name from GET /models."},{"name":"vin","in":"query","required":false,"schema":{"type":"string","minLength":1},"description":"Exact VIN match."},{"name":"seller_username","in":"query","required":false,"schema":{"type":"string","minLength":1},"description":"Exact seller username match."},{"name":"year_min","in":"query","schema":{"type":"integer"},"description":"Minimum model year (inclusive)"},{"name":"year_max","in":"query","schema":{"type":"integer"},"description":"Maximum model year (inclusive)"},{"name":"price_min","in":"query","schema":{"type":"integer"},"description":"Minimum current bid or listed price (inclusive)"},{"name":"price_max","in":"query","schema":{"type":"integer"},"description":"Maximum current bid or listed price (inclusive)"},{"name":"source","in":"query","schema":{"type":"string"},"description":"Source platform (e.g. \"bringatrailer\")"},{"name":"keyword","in":"query","schema":{"type":"string"},"description":"Search in title and description (case-insensitive)"},{"name":"ending_after","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only include auctions ending at or after this time."},{"name":"ending_before","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only include auctions ending at or before this time."},{"name":"updated_since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only include auctions updated at or after this timestamp. Useful for polling."},{"name":"sort","in":"query","schema":{"type":"string","enum":["ending","created","updated","price","year","bids"],"default":"ending"},"description":"Sort field"},{"name":"direction","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"description":"Sort direction"},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Page number"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Results per page"}],"responses":{"200":{"description":"Paginated live auction results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveAuctionsResponse"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/auctions/{auction_id}/bids":{"get":{"operationId":"listAuctionBids","summary":"List auction bid history","description":"List the bid history for a live or completed auction. Use the `id` returned by GET /auctions or GET /auctions/live as `auction_id`. Counts toward plan query limits.","parameters":[{"name":"auction_id","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Auction ID returned by the auctions endpoints."},{"name":"bid_after","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only include bids placed at or after this time."},{"name":"bid_before","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only include bids placed at or before this time."},{"name":"sort","in":"query","schema":{"type":"string","enum":["bid_at","amount","created"],"default":"bid_at"},"description":"Sort field"},{"name":"direction","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"description":"Sort direction"},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Page number"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"description":"Results per page"}],"responses":{"200":{"description":"Paginated auction bid history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuctionBidsResponse"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/stats":{"get":{"operationId":"getStats","summary":"Get pricing statistics and market trends","description":"Get pricing statistics and 12-month market trends for a vehicle make or make/model. Includes average, median, low/high prices, sell-through rate, and monthly trend data. Requires a paid plan.","parameters":[{"name":"make","in":"query","required":true,"schema":{"type":"string","minLength":1},"description":"Vehicle make (e.g. \"Porsche\")"},{"name":"model","in":"query","schema":{"type":"string"},"description":"Optional vehicle model (e.g. \"911\")"},{"name":"year_min","in":"query","schema":{"type":"integer"},"description":"Minimum model year (inclusive)"},{"name":"year_max","in":"query","schema":{"type":"integer"},"description":"Maximum model year (inclusive)"}],"responses":{"200":{"description":"Pricing statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Paid plan required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Forbidden","message":"The stats endpoint is not available on the free plan. Please upgrade to access this feature."}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key as Bearer token. Get one at https://oldcarsdata.com/login"}},"schemas":{"Auction":{"type":"object","properties":{"id":{"type":"integer","nullable":true},"source":{"type":"string","nullable":true,"description":"Platform: \"bringatrailer\", \"carsandbids\", \"hagerty\", \"pcarmarket\", \"allcollectorcars\", \"gooding\", \"rmsothebys\""},"url":{"type":"string","nullable":true,"description":"Link to original listing"},"title":{"type":"string","nullable":true},"auction_status":{"type":"string","nullable":true,"enum":["sold","bid to","reserve not met","canceled","unknown","withdrawn"]},"price":{"type":"number","nullable":true,"description":"Final sale price or highest bid amount"},"currency":{"type":"string","nullable":true,"description":"ISO 4217 currency code (e.g. \"USD\", \"CAD\", \"EUR\")"},"auction_end_date":{"type":"string","nullable":true,"description":"YYYY-MM-DD"},"auction_end_at":{"type":"string","nullable":true,"description":"ISO 8601 ending timestamp when available"},"mileage":{"type":"number","nullable":true},"vin":{"type":"string","nullable":true},"title_status":{"type":"string","nullable":true,"description":"e.g. \"clean\", \"salvage\""},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"zip":{"type":"string","nullable":true},"seller_username":{"type":"string","nullable":true},"year":{"type":"integer","nullable":true},"has_reserve":{"type":"boolean","nullable":true},"listing_make":{"type":"string","nullable":true},"listing_model":{"type":"string","nullable":true},"ocd_make_name":{"type":"string","nullable":true,"description":"Normalized make name"},"ocd_model_name":{"type":"string","nullable":true,"description":"Normalized model name"},"engine":{"type":"string","nullable":true},"drivetrain":{"type":"string","nullable":true},"transmission":{"type":"string","nullable":true},"body_style":{"type":"string","nullable":true},"exterior_color":{"type":"string","nullable":true},"standard_exterior_color":{"type":"string","nullable":true},"interior_color":{"type":"string","nullable":true},"standard_interior_color":{"type":"string","nullable":true},"seller_type":{"type":"string","nullable":true,"description":"\"private\" or \"dealer\""},"description":{"type":"string","nullable":true},"ownership_history":{"type":"string","nullable":true},"modifications":{"type":"array","items":{"type":"string"}},"known_flaws":{"type":"array","items":{"type":"string"}},"recent_service_history":{"type":"array","items":{"type":"string"}},"listing_details":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string","nullable":true,"description":"ISO 8601 timestamp"},"featured_image_url":{"type":"string","nullable":true},"stats":{"type":"object","properties":{"views":{"type":"integer","nullable":true},"watches":{"type":"integer","nullable":true},"likes":{"type":"integer","nullable":true},"bids":{"type":"integer","nullable":true},"unique_bidder_count":{"type":"integer","nullable":true,"description":"Number of distinct bidders observed for the auction"}}}}},"AuctionsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Auction"}},"meta":{"type":"object","properties":{"total":{"type":"integer"},"page":{"type":"integer"},"limit":{"type":"integer"},"total_pages":{"type":"integer"}}}}},"LiveAuction":{"allOf":[{"$ref":"#/components/schemas/Auction"},{"type":"object","properties":{"image_url":{"type":"string","nullable":true},"updated_at":{"type":"string","nullable":true,"description":"ISO 8601 timestamp"}}}]},"LiveAuctionsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LiveAuction"}},"meta":{"type":"object","properties":{"total":{"type":"integer"},"page":{"type":"integer"},"limit":{"type":"integer"},"total_pages":{"type":"integer"}}}}},"Bid":{"type":"object","properties":{"id":{"type":"integer","nullable":true},"auction_id":{"type":"integer","nullable":true,"description":"Auction ID from GET /auctions or GET /auctions/live"},"bidder_name":{"type":"string","nullable":true},"amount":{"type":"integer","nullable":true,"description":"Bid amount"},"currency":{"type":"string","nullable":true,"description":"ISO 4217 currency code (e.g. \"USD\", \"CAD\", \"EUR\")"},"bid_at":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when available"},"created_at":{"type":"string","nullable":true,"description":"ISO 8601 timestamp"}}},"AuctionBidsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Bid"}},"meta":{"type":"object","properties":{"total":{"type":"integer"},"page":{"type":"integer"},"limit":{"type":"integer"},"total_pages":{"type":"integer"}}}}},"StatsResponse":{"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code for all price values"},"total_sales":{"type":"integer","description":"Total sold auctions"},"average_price":{"type":"number","description":"Average sale price"},"median_price":{"type":"number","description":"Median sale price"},"lowest_price":{"type":"number"},"highest_price":{"type":"number"},"sell_through_rate":{"type":"number","description":"Ratio of sold to total auctions (0.0-1.0)"},"price_trend":{"type":"array","description":"Monthly data for the last 12 months","items":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM"},"avg_price":{"type":"number"},"volume":{"type":"integer"}}}}}},"Error":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","description":"Field-level validation errors (400 only)"}}}},"responses":{"ValidationError":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Validation Error","message":"limit: Number must be less than or equal to 100","details":{"limit":["Number must be less than or equal to 100"]}}}}},"Unauthorized":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Unauthorized","message":"API key is required. Provide it via Authorization: Bearer <key> header"}}}},"RateLimited":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Rate Limit Exceeded","message":"You have exceeded your plan limit of 1000 requests."}}}}}}}