Deere APIshop.deere.com ↗
Search and browse the John Deere parts catalog. Access part details, pricing, availability, equipment model lookups, categories, and related part recommendations.
What is the Deere API?
The shop.deere.com API provides structured access to the John Deere parts catalog across 9 endpoints, covering part search, category browsing, equipment model lookups, pricing, and related product recommendations. The get_part_details endpoint returns real-time pricing fields including ecommPrice, regularPrice, and customerPrice alongside fulfillment details and frequentlyBoughtTogether recommendations — making it practical for building parts lookup tools, inventory integrations, or fleet maintenance workflows.
curl -X GET 'https://api.parse.bot/scraper/4211ceff-b33b-4e00-ae8f-4fb172d44b93/search_parts?page=1&size=5&sort=RELEVANCE&query=oil+filter' \ -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 shop-deere-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.john_deere_parts_shop_api import JohnDeere, Sort, PartNotFound
client = JohnDeere()
# Search for oil filters sorted alphabetically
for part in client.parts.search(query="oil filter", sort=Sort.NAME_A_TO_Z, limit=5):
print(part.code, part.name, part.brand)
if part.pricing and part.pricing.ecomm_price:
print(" Price:", part.pricing.ecomm_price.amount, part.pricing.ecomm_price.currency)
# Fetch a specific part by code and explore recommendations
oil_filter = client.parts.get(code="AM125424")
print(oil_filter.name, oil_filter.description)
for rec in oil_filter.related():
print(" Related:", rec.product_code, rec.product_name, rec.confidence)
# Browse parts in the Filters category
filters_category = client.category(slug="Filters")
for facet in filters_category.facets():
print(facet.name, facet.code)
for fv in facet.facet_values:
print(" ", fv.name, fv.count)
for part in filters_category.browse(size=10, limit=10):
print(part.code, part.name)
# Look up catalogs for a specific equipment model and search its parts
z445 = client.equipmentmodel(model="Z445")
for catalog in z445.catalogs():
print(catalog.pc_number, catalog.title)
for part in z445.search_parts(query="filter", limit=5):
print(part.code, part.name)
# List all categories
for cat in client.categories.list():
print(cat.name, cat.slug)
# Browse maintenance kits
for kit in client.parts.maintenance_kits(limit=3):
print(kit.code, kit.name)
if kit.pricing and kit.pricing.availability:
print(" Availability:", kit.pricing.availability)
Full-text search across the John Deere parts catalog by keyword or part number. Returns paginated products with pricing, facets for filtering (models, categories, tiers), and total result count. Pagination via integer page counter; facets describe the result set for client-side narrowing.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number. |
| size | integer | Results per page. |
| sort | string | Sort order. |
| queryrequired | string | Search keyword or part number. |
{
"type": "object",
"fields": {
"facets": "array of facet objects for filtering (models, categories, sub-categories)",
"products": "array of product objects with code, name, description, assets, categories, pricing",
"totalResults": "integer total number of matching products"
},
"sample": {
"data": {
"facets": [
{
"code": "productTierLabel",
"name": "Parts Tier",
"facetValues": [
{
"name": "Original",
"count": 4239
}
]
}
],
"products": [
{
"code": "AM125424",
"name": "AM125424: Engine Oil Filter",
"brand": "John Deere",
"assets": [
{
"url": "https://johndeere.widen.net/content/xoqnizp1uj/webp/AM125424_iso1.webp",
"type": "Image",
"resolution": "original"
}
],
"pricing": {
"ecommPrice": {
"amount": "10.42",
"currency": "USD"
},
"availability": "InStock"
},
"categories": [
"Filters/EngineOilFilters"
],
"description": "Oil Filter",
"productType": "PARTS",
"productTierLabel": "Original"
}
],
"totalResults": 7926
},
"status": "success"
}
}About the Deere API
Searching and Browsing Parts
The search_parts endpoint accepts a query string (keyword or part number) and returns paginated products arrays with code, name, description, assets, categories, and pricing objects. Results can be sorted by RELEVANCE, NAME_A_TO_Z, or NAME_Z_TO_A and filtered using the facets array returned alongside results — facets include model, category, and sub-category dimensions. get_parts_by_category provides the same response shape when browsing a known category slug, discoverable via get_parts_categories, which lists every top-level category with its name and slug.
Part Details and Pricing
get_part_details takes a part_number (e.g. AM125424) and returns the full part record: pricing.availability, pricing.ecommPrice, pricing.regularPrice, pricing.customerPrice, fulfillment details, category path strings, and a frequentlyBoughtTogether array of related product objects. If you only need recommendation data without the full detail payload, get_related_parts returns a relatedProducts array where each entry includes productCode, productName, productAssets, and a confidence score.
Equipment Model and Maintenance Lookups
get_parts_by_equipment_model accepts a model number (e.g. Z445) and returns a catalogs array — each entry has a pcNumber and title that identify the relevant parts catalog for that machine. search_parts_by_model takes the same model param plus an optional query keyword to narrow results to parts associated with that specific equipment. get_maintenance_kits is a dedicated endpoint for the maintenance kits category, returning paginated kit products with code, name, description, assets, and pricing.
Subcategory Discovery
get_subcategories accepts a category_id and returns the full facets array for that category — including name, code, and facetValues — useful for populating filter UIs or enumerating valid filter parameters before passing them to get_parts_by_category.
The Deere API is a managed, monitored endpoint for shop.deere.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when shop.deere.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 shop.deere.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 parts lookup tool that resolves a part number to current
ecommPriceandcustomerPriceviaget_part_details. - Populate a compatible-parts page by calling
get_parts_by_equipment_modelwith a machine model to retrieve associated catalogpcNumberreferences. - Generate upsell recommendations in a checkout flow using
frequentlyBoughtTogetherfromget_part_detailsor theconfidence-scoredrelatedProductsfromget_related_parts. - Sync a third-party inventory system with John Deere filter parts by paginating
get_parts_by_categorywith theFilterscategory slug. - Surface maintenance kit options for a given machine by combining
search_parts_by_model(model param) withget_maintenance_kitsfor category-level browsing. - Enumerate all top-level categories and their sub-facets using
get_parts_categoriesfollowed byget_subcategoriesto build a navigable parts catalog tree. - Monitor price changes for a watchlist of part numbers by periodically calling
get_part_detailsand comparingregularPriceagainstecommPrice.
| 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 shop.deere.com have an official developer API?+
What pricing fields does `get_part_details` return, and how do they differ?+
get_part_details returns three price fields: regularPrice (the standard list price), ecommPrice (the online store price), and customerPrice (a potentially account-specific or promotional price). The pricing object also includes availability status and fulfillment details. get_related_parts and search_parts also include pricing objects within their product arrays.Can I filter `search_parts` results by equipment model or category?+
search_parts endpoint returns a facets array containing model, category, and sub-category dimensions alongside results. However, the endpoint inputs currently accept query, page, size, and sort — facet-based filtering is not a direct input parameter. You can use get_parts_by_category with a category slug, or search_parts_by_model to scope results to a specific model.Does the API expose dealer location or in-store stock availability by ZIP code or region?+
pricing.availability and fulfillment from get_part_details) but does not include dealer locator or per-store inventory by geography. You can fork the API on Parse and revise it to add that endpoint if dealer-level stock data is accessible on the site.Are parts catalog PDFs or diagram images returned by any endpoint?+
assets array on product objects contains image and media asset references for parts. Full illustrated parts diagram PDFs (the type found in printed John Deere PC-numbered catalogs) are not currently returned — the get_parts_by_equipment_model endpoint returns catalog pcNumber and title references but not diagram content. You can fork the API on Parse and revise it to add an endpoint that retrieves diagram assets if they are accessible via catalog PC numbers.