Exotic Car Trader APIexoticcartrader.com ↗
Access exotic, collector, and classic car listings from Exotic Car Trader. Search by make, category, or lot number. Get specs, VIN, photos, reviews, and blog posts.
What is the Exotic Car Trader API?
The Exotic Car Trader API exposes 11 endpoints covering the full listing catalog at exoticcartrader.com — a marketplace for exotic, collector, and classic vehicles. The get_listing_details endpoint returns structured fields including VIN, make, model, year, asking price, and a specs object with engine and transmission data. Additional endpoints cover photo retrieval by lot number, make/category filtering, featured listings, customer reviews, and blog posts.
curl -X GET 'https://api.parse.bot/scraper/1df9ad9a-4159-4f27-8425-dcf404c8e1c8/search_listings?page=1&query=Ferrari' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace exoticcartrader-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Exotic Car Trader SDK — search, drill-down, photos, reviews."""
from parse_apis.exotic_car_trader_api import ExoticCarTrader, Listing, ListingNotFound
client = ExoticCarTrader()
# Search for Ferrari listings, capped at 5 total items
for listing in client.listings.search(query="Ferrari", limit=5):
print(listing.title, listing.price, listing.slug)
# Drill into the first result's full detail via lot number
listing = client.listings.search(query="Porsche", limit=1).first()
if listing:
detail = client.listingdetails.get(lot_number=listing.lot_number)
print(detail.title, detail.vin, detail.price, detail.make, detail.model)
# Browse photos for a constructible listing
car = Listing(_api=client, slug="2015-ferrari-458-spider-260454990", lot_number="260454990")
for photo in car.photos.list(limit=3):
print(photo.url)
# Typed error handling on a non-existent lot number
try:
client.listingdetails.get(lot_number="000000000")
except ListingNotFound as exc:
print(f"Not found: lot {exc.lot_number}")
# Browse featured homepage listings
for featured in client.featuredlistings.list(limit=3):
print(featured.title, featured.category)
# Read customer reviews
for review in client.reviews.list(limit=3):
print(review.reviewer, review.rating, review.text[:60])
print("exercised: listings.search / listingdetails.get / photos.list / featuredlistings.list / reviews.list")
Search for car listings on Exotic Car Trader. Returns the first page of results from the inventory, optionally filtered by a text query matching title or slug. Results are limited to listings visible on a single page (up to ~24). Pagination advances via the page parameter.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search keyword to filter by (matches against title and slug, e.g. 'Ferrari', 'Mustang'). |
{
"type": "object",
"fields": {
"page": "string indicating the current page number",
"items": "array of listing objects with title, price, slug, lot_number, category, thumbnail, and url"
},
"sample": {
"data": {
"page": "1",
"items": [
{
"url": "https://www.exoticcartrader.com/listing/2015-ferrari-458-spider-260454990",
"slug": "2015-ferrari-458-spider-260454990",
"price": "ASK: $274,999",
"title": "2015 Ferrari 458 Spider",
"category": "Exotic Car",
"thumbnail": "https://listingcontent.exoticcartrader.com/1775165623364x616992624589807000/passenger-white",
"lot_number": "260454990"
}
]
},
"status": "success"
}
}About the Exotic Car Trader API
Listing Search and Filtering
The search_listings endpoint accepts a query string and an optional page parameter, returning an array of listing objects each containing title, price, slug, lot_number, category, thumbnail, and url. For more targeted browsing, get_listings_by_make filters by make name (e.g. Ferrari, Porsche) and get_listings_by_category filters by category (e.g. Exotic, Classic, Muscle Car). Note that category filter values differ from the tag labels shown on listings — use get_available_categories to retrieve the correct filter strings, and get_available_makes to get the full sorted list of available makes.
Listing Details and Photos
get_listing_details takes a slug from search results and returns the full record: vin, make, model, year, price, status (Live or Sold), a specs object with key-value pairs for engine, transmission, colors, and other vehicle attributes, plus an internal bubble_id. If you have only a lot number, get_listing_by_lot_number resolves the listing URL and returns the same detail structure — it works for both live and sold listings. Photo URLs are handled separately via get_listing_photos, which takes a lot_number and returns an array of full-resolution image URLs.
Supporting Data: Featured Listings, Reviews, and Blog
get_featured_listings retrieves the homepage's featured vehicles with title, price, and url. get_reviews returns customer testimonials with reviewer, text, rating, and tag fields. get_blog_posts returns recent articles and buyer guides with title, url, and optionally description and category. These endpoints require no input parameters.
The Exotic Car Trader API is a managed, monitored endpoint for exoticcartrader.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when exoticcartrader.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official exoticcartrader.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate exotic and classic car inventory by make to build a Ferrari or Lamborghini-specific listing feed using
get_listings_by_make - Track listing status changes (Live vs. Sold) for specific lot numbers using
get_listing_by_lot_number - Pull full vehicle specs, VIN, and asking price into a collector car valuation tool via
get_listing_details - Build a photo gallery application for high-end vehicles using the photo URL arrays returned by
get_listing_photos - Monitor the featured listings section for new inventory additions with
get_featured_listings - Populate a car research portal with buyer guides and editorial content from
get_blog_posts - Display verified buyer testimonials with ratings and tags in a dealer trust widget using
get_reviews
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Exotic Car Trader offer an official developer API?+
What does `get_listing_details` return beyond basic listing info?+
get_listing_details returns a specs object with engine, transmission, color, and other vehicle-specific key-value pairs alongside top-level fields like vin, make, model, year, price, and status. The status field distinguishes live from sold listings. It also returns a bubble_id used internally by the site's CMS.How does filtering by category work, and are the filter values the same as what's shown on listings?+
Exotic matches listings tagged Exotic Car. Use get_available_categories to retrieve the correct filter strings before calling get_listings_by_category.Does the API support pagination across all listing endpoints?+
page parameter is available on search_listings, which returns results page by page. The make-filter (get_listings_by_make) and category-filter (get_listings_by_category) endpoints do not expose a pagination parameter in the current version. You can fork the API on Parse and revise it to add paginated support for those endpoints.