TractorData APItractordata.com ↗
Access tractor specs, engine data, dimensions, photos, and events from TractorData.com. Covers farm and lawn tractors across hundreds of brands and models.
What is the TractorData API?
The TractorData.com API exposes 14 endpoints covering farm and lawn tractor specifications, brand catalogs, engine and transmission data, photos, attachments, and upcoming shows. Starting with get_farm_tractor_brands or get_lawn_tractor_brands, you can enumerate every manufacturer on the site — complete with tractor count, year range, and horsepower range — then drill into individual models for granular spec data including displacement, bore/stroke, gear counts, and tire dimensions.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/b526f435-3f65-49d6-80c0-8c3d850fdaa1/get_farm_tractor_brands' \ -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 tractordata-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.
"""TractorData API walkthrough — browse brands, drill into model specs, search."""
from parse_apis.tractordata_api import TractorData, TractorType, TractorNotFound
client = TractorData()
# List farm tractor brands — single-page, cap total items fetched.
for brand in client.brands.list_farm(limit=5):
print(brand.brand, brand.count, brand.hp)
# Drill into a brand's models via constructible Brand.
jd = client.brand("johndeere")
model = jd.models.list(type=TractorType.FARM, limit=1).first()
if model:
print(model.model, model.power, model.years)
# Get detailed specs from the model instance.
overview = model.overview()
print(overview.categories)
# Photos for this model.
for photo in model.photos(limit=3):
print(photo.url, photo.alt)
# Series siblings.
for sibling in model.series(limit=3):
print(sibling.model, sibling.path)
# Search across all brands by model number.
result = client.searchresults.search(query="4020", limit=3).first()
if result:
print(result.model, result.id, result.manufacturer)
# Typed error handling.
try:
bad_model = client.model("/farm-tractors/000/0/0/99999-fake.html")
bad_model.overview()
except TractorNotFound as exc:
print(f"Not found: {exc.path}")
# Upcoming shows.
for show in client.shows.list(limit=3):
print(show.name, show.date, show.location)
print("Exercised: brands.list_farm, brand.models.list, model.overview, model.photos, model.series, searchresults.search, shows.list")
List all farm tractor brands/manufacturers available on TractorData.com. Returns brand name, slug, tractor count, year range, and horsepower range for each brand. No pagination; returns the complete list in one call.
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of brand objects with brand name, slug, count, year range, and horsepower range"
},
"sample": {
"data": {
"items": [
{
"hp": "22-425 hp",
"slug": "agco",
"brand": "AGCO",
"count": "59 tractors",
"years": "1995-2011"
},
{
"hp": "9-620 hp",
"slug": "johndeere",
"brand": "John Deere",
"count": "692 tractors",
"years": "1918-2027"
}
]
},
"status": "success"
}
}About the TractorData API
Brand and Model Discovery
get_farm_tractor_brands and get_lawn_tractor_brands each return a complete list of manufacturers with no pagination. Each brand object carries a slug, count, year_range, and horsepower_range. Pass a brand slug to get_brand_models with an optional type parameter ('farm' or 'lawn') to retrieve all models for that brand. Each model object includes a path field — a relative URL string like /farm-tractors/000/0/6/64-john-deere-4020.html — that feeds directly into every spec and detail endpoint.
Specification Endpoints
All detail endpoints accept a single path parameter. get_tractor_overview returns a nested object keyed by category — Production, Mechanical, Hydraulics, Hitch, PTO, Electrical, and others depending on the model. get_tractor_engine_specs exposes displacement, bore/stroke, compression ratio, RPM, and fluid capacities, keyed by engine variant when multiple configurations exist. get_tractor_transmission_specs covers transmission type, gear count, oil capacity, and speed data. get_tractor_dimensions returns tire specs, physical measurements, and weight figures, though coverage varies by model.
Photos, Attachments, Tests, and Series
get_tractor_photos returns an array of photo objects with url and alt text; it returns an empty array for models with no images. get_tractor_attachments surfaces loader and implement data where available. get_tractor_tests delivers official test results such as Nebraska Tractor Test figures. get_tractor_series lists sibling, predecessor, and successor models in the same product line, each with a path you can pass back to any spec endpoint.
Search and Editorial Content
search_tractors queries across the TractorData compare database by model name or number — for example '4020' or 'L3400' — and returns up to 50 results with model_name, numeric_id, and manufacturer. Note that it matches model names, not brand names. get_articles_news lists technical resources, book reviews, and news articles with titles and page paths. get_tractor_shows returns upcoming shows with name, date, and US state location.
The TractorData API is a managed, monitored endpoint for tractordata.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tractordata.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 tractordata.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?+
- Build a tractor specification lookup tool that compares engine displacement and horsepower across models from multiple brands.
- Populate a farm equipment database with production year ranges and mechanical specs pulled from
get_tractor_overview. - Create an equipment-matching app that surfaces compatible attachments using
get_tractor_attachmentsfor a given model path. - Generate side-by-side transmission comparisons using gear counts and speed data from
get_tractor_transmission_specs. - Build a show calendar widget for agriculture platforms using name, date, and state fields from
get_tractor_shows. - Implement a model search feature using
search_tractorsto let users find tractors by number (e.g. '4020', 'DT160'). - Track predecessor and successor relationships across product lines using
get_tractor_seriesto build model history pages.
| 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 TractorData.com have an official developer API?+
What does `get_tractor_overview` return, and how does it differ from the engine and transmission endpoints?+
get_tractor_overview returns a broad set of categories — Production, Mechanical, Hydraulics, Hitch, PTO, Dimensions, Electrical, and Serial Numbers — as nested key-value pairs. The available categories vary by model. get_tractor_engine_specs and get_tractor_transmission_specs are dedicated endpoints that return deeper detail on those subsystems, including bore/stroke, compression ratio, gear count, and fluid capacities that the overview may abbreviate or omit.Do all tractor models have photos, test data, and attachment data?+
get_tractor_photos returns an empty array when no images exist for a model. get_tractor_tests and get_tractor_attachments return an empty object when data is unavailable. Nebraska Tractor Test results, in particular, exist only for models that were formally submitted for testing. Coverage is best for widely-sold North American models.Does the API support filtering models by horsepower, year, or engine type?+
get_brand_models returns all models for a brand without filter parameters, and search_tractors matches on model name or number only. You can fork this API on Parse and revise it to add server-side filtering by horsepower range or production year.