Equipment Trader APIequipmenttrader.com ↗
Search and retrieve industrial machinery listings from Equipment Trader. Get pricing, specs, hours, seller contacts, and location data via 2 endpoints.
What is the Equipment Trader API?
The Equipment Trader API provides access to machinery inventory across Equipment Trader's marketplace through 2 endpoints. Use search_listings to query listings by make, model, keyword, zip code, and radius, or call get_listing_details with a specific ad ID to retrieve full specs, hours, price, and seller contact information including phone numbers and dealer website.
curl -X GET 'https://api.parse.bot/scraper/0813e3f4-48e4-4fd7-b93b-2a1a6517c470/search_listings?page=1&keyword=excavator&zip=90210&make=CATERPILLAR&sort=relevance%3Adesc&model=320&radius=100' \ -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 equipmenttrader-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.
from parse_apis.equipment_trader_api import EquipmentTrader, Sort, Listing
client = EquipmentTrader()
# Search for excavators sorted by lowest price first
results = client.listings.search(keyword="excavator", sort=Sort.PRICE_ASC, limit=5)
for listing in results:
print(listing.title, listing.price, listing.condition, listing.location.state)
Search for industrial machinery listings on Equipment Trader. Returns paginated results with listing summaries including pricing, location, and seller information. Paginates via integer page counter. Without any filters, returns a broad set of listings across all categories.
| Param | Type | Description |
|---|---|---|
| zip | string | 5-digit US ZIP code for location-based search |
| make | string | Filter by manufacturer make (e.g., CATERPILLAR, KUBOTA, JOHN DEERE, BOBCAT) |
| page | integer | Page number for pagination (1-based) |
| sort | string | Sort order for results |
| model | string | Filter by model name |
| radius | integer | Search radius in miles from the zip code |
| keyword | string | Search keyword (e.g., excavator, forklift, bulldozer) |
{
"type": "object",
"fields": {
"page": "integer current page number",
"listings": "array of listing objects with id, title, year, make, model, category, class, price, description, hours, condition, location, seller, url, stock_number, serial_number",
"total_pages": "integer total number of pages",
"total_results": "integer total count of matching listings"
},
"sample": {
"data": {
"page": 1,
"listings": [
{
"id": 5032636118,
"url": "https://www.equipmenttrader.com/listing/2024-BOBCAT-E20-5032636118",
"make": "BOBCAT",
"year": 2024,
"class": "EARTHMOVING",
"hours": 245,
"model": "E20",
"price": 37799,
"title": "2024 BOBCAT E20",
"seller": {
"name": "Flagstaff Equipment Co. Inc.",
"phones": [
{
"type": "",
"number": "9287741969"
}
],
"website": "https://flagequip.com/",
"dealer_id": "5000003114"
},
"category": [
"Excavators"
],
"location": {
"zip": "86004",
"city": "flagstaff",
"state": "AZ",
"latitude": "35.18200",
"longitude": "-111.26490"
},
"condition": "Used",
"description": "Used 2024 Bobcat E20 Compact Excavator Only 204 Hours",
"stock_number": "3792709",
"serial_number": "B5VG12775"
}
],
"total_pages": 4,
"total_results": 116
},
"status": "success"
}
}About the Equipment Trader API
Searching Machinery Inventory
The search_listings endpoint accepts up to seven optional parameters. You can filter by make (e.g., CATERPILLAR, JOHN DEERE, KUBOTA), model, and keyword to narrow by equipment type such as excavator or forklift. Location filtering uses zip and radius (in miles). Results are paginated; the response includes total_results, total_pages, and the current page number alongside an array of listing objects. Each listing summary contains id, title, year, make, model, category, class, price, description, hours, condition, location, and seller information.
Listing Detail Fields
The get_listing_details endpoint takes a single required parameter, ad_id, and returns the full record for that listing. Response fields include id, url, make, model, year, class, hours, price, and a constructed title. The seller object includes name, dealer_id, website, and a phones array, making it straightforward to surface contact information alongside equipment specs.
Sorting and Pagination
Search results can be ordered using the sort parameter, which accepts relevance:desc, price:asc, price:desc, year:desc, and year:asc. Pagination is handled by passing an integer page value; the response always echoes back total_pages so you can iterate through large result sets programmatically.
The Equipment Trader API is a managed, monitored endpoint for equipmenttrader.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when equipmenttrader.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 equipmenttrader.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 machinery pricing data by make and model for market valuation benchmarks
- Build a fleet procurement tool that queries listings by zip and radius to surface nearby equipment
- Monitor used equipment hours and condition fields to flag low-hour units as they appear
- Enrich a dealer directory with seller names, phone numbers, and websites from listing detail responses
- Compare new vs. used pricing across categories using the condition field in search results
- Track year-over-year price trends for specific makes by sorting results with price:asc and year:desc
| 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 Equipment Trader have an official developer API?+
What seller information does get_listing_details return?+
seller object includes the dealer name, a dealer_id, the dealer's website URL, and a phones array. It does not include an email address or a direct messaging endpoint. The API covers search and detail retrieval; you can fork it on Parse and revise to add any additional contact fields if they become available.Can I filter search results by equipment category or condition?+
search_listings endpoint currently accepts make, model, keyword, zip, radius, sort, and page as filter parameters. Category and condition are returned as fields in each listing object but are not exposed as direct filter inputs. You can fork the API on Parse and revise it to add category or condition as filterable parameters.Does the API return images for listings?+
search_listings or get_listing_details response schemas. The API covers pricing, specs, hours, location, and seller contact data. You can fork it on Parse and revise to add image fields if that data is needed.How fresh is the listing data, and can inactive listings cause errors?+
ad_id that was valid in a prior search may return an empty or error response if the listing has since been taken down.