AutoTrader APIautotrader.com.au ↗
Search and retrieve Australian car listings from AutoTrader via API. Filter by make, model, price, location, and radius. Get specs, pricing, photos, and dealer info.
What is the AutoTrader API?
The AutoTrader Australia API provides 4 endpoints for searching and retrieving car listings from autotrader.com.au. Use search_listings to query the full inventory with filters across make, model, price range, state, and postcode radius, then call get_listing_detail to pull complete vehicle specifications, pricing objects, dealer contact details, and photo arrays for any individual listing by its ID.
curl -X GET 'https://api.parse.bot/scraper/a1d5a83e-deca-4025-883c-34aca18c40d8/search_listings?make=Toyota&page=1&model=HiLux&radius=50&sortBy=price&orderBy=asc&priceTo=20000&location=NSW&paginate=5&postcode=2000&condition=Used&priceFrom=5000' \ -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 autotrader-com-au-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: AutoTrader Australia SDK — search listings, browse makes/models, get details."""
from parse_apis.AutoTrader_Australia_API import AutoTrader, SortBy, OrderBy, Condition, ListingNotFound
client = AutoTrader()
# Browse available makes and their listing counts
for make in client.makes.list(limit=5):
print(make.key, make.doc_count)
# Drill into a specific make's models via constructible Make
toyota = client.make("Toyota")
for model in toyota.models(limit=3):
print(model.key, model.doc_count)
# Search listings with filters — bounded iteration
for listing in client.listing_summaries.search(
make="Toyota",
sortBy=SortBy.PRICE,
orderBy=OrderBy.ASC,
condition=Condition.USED,
limit=3,
):
print(listing.id, listing.make, listing.model, listing.manu_year, listing.price.advertised_price)
# Get full details for a single listing
first = client.listing_summaries.search(make="Mazda", limit=1).first()
if first:
try:
detail = first.details()
print(detail.id, detail.make, detail.model, detail.vehicle.body_type, detail.dealer.trading_name)
except ListingNotFound as exc:
print(f"listing gone: {exc}")
print("exercised: makes.list / make.models / listing_summaries.search / listing.details")
Search for car listings with various filters. Returns a paginated list of listings sorted by the specified criteria. Each listing includes full vehicle details, pricing, photos, dealer info, and location. Pagination via integer page counter; default sort is by price ascending.
| Param | Type | Description |
|---|---|---|
| make | string | Car make to filter by (e.g. 'Toyota', 'Ford', 'Mazda'). Values available from get_available_makes endpoint. |
| page | integer | Page number for pagination (1-based). |
| model | string | Car model to filter by (e.g. 'Corolla', 'RAV4'). Values available from get_models_for_make endpoint. |
| radius | integer | Search radius in km from postcode location. |
| sortBy | string | Field to sort results by. |
| orderBy | string | Sort order. |
| priceTo | integer | Maximum price filter. |
| location | string | Australian state abbreviation (e.g. 'NSW', 'VIC', 'QLD', 'WA', 'SA', 'TAS', 'ACT', 'NT'). |
| paginate | integer | Number of results per page. |
| postcode | string | Australian postcode for location-based search (4-digit string, e.g. '2000'). |
| condition | string | Vehicle condition filter. |
| priceFrom | integer | Minimum price filter. |
{
"type": "object",
"fields": {
"data": "array of listing objects with full vehicle details",
"total": "integer, total number of matching listings",
"last_page": "integer, total number of pages",
"current_page": "integer, current page number"
},
"sample": {
"data": {
"data": [
{
"id": 14849483,
"make": "Toyota",
"model": "Corolla",
"price": {
"driveaway_price": 0,
"advertised_price": 1000
},
"dealer": {
"city": "Gladstone",
"state": "QLD",
"trading_name": "David Grant Car Sales"
},
"photos": [
{
"position": 1,
"image_path": "inventory/2026-01-22/23805654609671/14849483/2001_toyota_corolla_Used_1.jpg"
}
],
"vehicle": {
"doors": 5,
"seats": 5,
"body_type": "Liftback",
"fuel_type": "Unleaded",
"engine_size": "1.80",
"transmission_type": "Manual"
},
"odometer": 214789,
"condition": "Used",
"manu_year": 2001,
"location_city": "Gladstone",
"location_state": "QLD"
}
],
"total": 2185,
"last_page": 437,
"current_page": 1
},
"status": "success"
}
}About the AutoTrader API
Search and Filter Listings
The search_listings endpoint accepts optional parameters including make, model, priceTo, location (Australian state abbreviation such as NSW or VIC), and radius in kilometres from a postcode. Results are paginated via the page parameter. Each response includes total (matching listing count), last_page, current_page, and a data array where each element contains a _source object with full vehicle and pricing details. The sortBy and orderBy params control result ordering.
Listing Detail
Calling get_listing_detail with a listing_id (obtained from data[*]._source.id in search results) returns a single listing record. The response includes a price object with both advertised_price and driveaway_price, a vehicle object covering body_type, transmission_type, fuel_type, engine_size, seats, and doors, an odometer reading in kilometres, condition (Used or New), manu_year, a photos array with image_path values, and a dealer object containing trading_name, city, state, and phone_lead.
Discover Valid Filter Values
Two utility endpoints support filter discovery. get_available_makes returns every car make present in the index along with its doc_count (number of active listings), so callers can enumerate valid make values before searching. get_models_for_make takes a make string and returns all models for that make with their respective listing counts — useful for building cascading make/model selectors or checking inventory depth before issuing a full search.
The AutoTrader API is a managed, monitored endpoint for autotrader.com.au — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when autotrader.com.au 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 autotrader.com.au 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 used-car inventory from autotrader.com.au filtered by state and price ceiling for a comparison tool
- Build a make/model selector UI populated dynamically from get_available_makes and get_models_for_make listing counts
- Monitor driveaway_price and advertised_price fields on specific listings to track price changes over time
- Pull dealer phone_lead, city, and state from get_listing_detail to create a regional dealer directory
- Fetch odometer, manu_year, and fuel_type for a fleet of listings to feed a depreciation or valuation model
- Search new-condition listings by body_type and transmission_type to surface in-stock new-car inventory
| 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 AutoTrader Australia have an official developer API?+
What does the price object in get_listing_detail contain?+
price object returns two fields: advertised_price (the listed asking price) and driveaway_price (the on-road price inclusive of registration and other charges). Both are at the top level of the listing detail response alongside odometer, condition, and manu_year.Can I filter search_listings by postcode rather than by state?+
location parameter accepts an Australian state abbreviation (e.g. NSW, QLD). For narrower geographic filtering, the radius parameter sets a kilometre radius, but it operates in conjunction with a postcode value rather than replacing the state field. State-level and radius-based filtering are the two location mechanisms currently exposed.Does the API return seller reviews or vehicle history reports?+
How does pagination work in search_listings?+
page integer parameter. Each response includes current_page, last_page, and total so callers can determine how many pages exist and iterate through them. There is no cursor-based pagination; incrementing page from 1 through last_page covers the full result set.