Datasets API endpoint
Returns one vehicle listing from the dataset by `id`, formatted `<source>:<source_listing_id>`, such as `carmax:28187774`. The record has VIN, year, make, model, trim, mileage, price and previous price, colours, drivetrain, seller, location and first and last seen times. An unknown id returns 404.
/datasets/vehicle-listings/items/{id}Returns one crawled vehicle listing by id from dataset id enum value vehicle-listings.
Path parameters:
id — required, formatted <source>:<source_listing_id> (e.g. carmax:28187774).Returns the full listing record (see the search endpoint's example response for the field shape). A 404 is returned if the id is not found in the dataset. See the price-history endpoint for this listing's recorded price-change events.
| Field | In the sample | Value in the sample |
|---|---|---|
| id | Has a value | |
| source | Has a value | |
| source_listing_id | Has a value | |
| vin | Has a value | |
| year | Has a value | 2,024 |
| make | Has a value | |
| model | Has a value | |
| trim | Has a value | |
| body_style | Has a value | |
| mileage | Has a value | 41,406 |
| exterior_color | Has a value | |
| interior_color | Has a value | |
| engine | Has a value | |
| transmission | Has a value | |
| drive_type | Has a value | |
| fuel_type | Has a value | |
| price | Has a value | 43,998 |
| is_price_reduced | Has a value | false |
| seller_type | Has a value | |
| seller_name | Has a value | |
| city | Has a value | |
| state | Has a value | |
| image_url | Has a value | img2.carmax.com |
| url | Has a value | carmax.com |
| first_seen_at | Has a value | 2026-09-06 |
| last_seen_at | Has a value | 2026-09-06 |
| run_id | Has a value | |
| crawled_at | Has a value | 2026-09-06 |
| schema_version | Has a value |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Vehicle listing id, formatted <source>:<source_listing_id> (e.g. carmax:28187774) | carmax:28187774 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/vehicle-listings/items/carmax%3A28187774" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "carmax:28187774",
"source": "carmax",
"source_listing_id": "28187774",
"vin": "1FMJK1K89REA27006",
"year": 2024,
"make": "Ford",
"model": "Expedition Max",
"trim": "Limited",
"body_style": "4D Sport Utility",
"mileage": 41406,
"exterior_color": "Black",
"transmission": "Automatic",
"drive_type": "Rear Wheel Drive",
"fuel_type": "Gas",
"price": 45998,
"is_price_reduced": false,
"seller_type": "retailer",
"seller_name": "Canoga Park",
"city": "Los Angeles",
"state": "CA",
"url": "https://www.carmax.com/car/28187774",
"first_seen_at": "2026-08-20T00:00:00Z",
"last_seen_at": "2026-08-20T00:00:00Z",
"schema_version": 1
}
}Request schema
No body schema
Response schema
#/definitions/datasets.vehicleListingResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | es.VehicleListingRecord | No | ||||
| data.accident_count | integer | No | AccidentCount/OwnerCount come from a source's vehicle-history detail (CarMax's own /vehicle/{stock_number} History block as of 2026-08-20; reserved for other sources with an equivalent field). Pointers, not plain ints: 0 is a real, safety-relevant claim ("confirmed zero accidents") distinct from "we haven't enriched this listing yet". Populated only for a bounded number of newly-discovered listings per crawl pass, not backfilled for the whole catalog at once. | |||
| data.body_style | string | No | ||||
| data.city | string | No | ||||
| data.crawled_at | string | No | ||||
| data.drive_type | string | No | ||||
| data.engine | string | No | ||||
| data.exterior_color | string | No | ||||
| data.first_seen_at | string | No | FirstSeenAt/LastSeenAt are our own crawl-observed dates, not upstream fields -- see the type doc comment. Both are RFC3339. | |||
| data.fuel_type | string | No | ||||
| data.id | string | No | ||||
| data.image_url | string | No | ||||
| data.interior_color | string | No | ||||
| data.is_price_reduced | boolean | No | ||||
| data.last_seen_at | string | No | ||||
| data.latitude | number | No | ||||
| data.longitude | number | No | ||||
| data.make | string | No | ||||
| data.mileage | integer | No | ||||
| data.model | string | No | ||||
| data.owner_count | integer | No | ||||
| data.previous_price | number | No | ||||
| data.price | number | No | ||||
| data.run_id | string | No | ||||
| data.schema_version | integer | No | ||||
| data.seller_name | string | No | ||||
| data.seller_type | string | No | SellerType is "retailer" for CarMax (its own inventory, not a dealer network) and reserved "dealer"/"private" values for future sources that aggregate third-party sellers (Autotrader, Cars.com). | |||
| data.source | string | No | ||||
| data.source_listing_id | string | No | ||||
| data.state | string | No | ||||
| data.transmission | string | No | ||||
| data.trim | string | No | ||||
| data.url | string | No | ||||
| data.vin | string | No | ||||
| data.year | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/vehicle-listings/items/carmax%3A28187774" \
-H "x-api-key: $CRAWLORA_API_KEY"