HollanderParts APIhollanderparts.com ↗
Browse salvage yard listings on HollanderParts.com via API. Search by year, make, model, and part type. Get prices, seller contacts, VINs, and images.
What is the HollanderParts API?
The HollanderParts.com API exposes 3 endpoints that cover the full vehicle-to-part search flow: walking the year/make/model/category/part-type/fitment hierarchy, listing matched used-part listings from salvage yards, and fetching a single listing's complete details. The get_part_details endpoint alone returns over a dozen seller-recorded fields including donor VIN, mileage, body code, condition, and shipping availability.
curl -X GET 'https://api.parse.bot/scraper/70cd6b7b-bec1-43d0-aeaf-6af4fa6c6beb/list_search_options?make=toyota&year=2014&model=camry&category=engine&part_type=300-engine' \ -H 'X-API-Key: $PARSE_API_KEY'
Walks the site's search hierarchy one level at a time. Given a year returns the makes; given year+make the models; year+make+model the part categories; adding category the part types; adding part_type the engine/fitment options. Each option carries the site label and the slug to pass to the next level (or to search_parts). One page request per call. Parameters are positional: a later parameter is ignored unless every earlier one is supplied. The site returns the same fixed category list for any model slug (even an unknown one), so an unrecognized make/model is not rejected at that level; an unknown part_type yields an empty options list. The returned 'level' names the level the options belong to.
| Param | Type | Description |
|---|---|---|
| make | string | Make slug from list_search_options.options[*].slug at the make level (e.g. toyota). |
| yearrequired | string | 4-digit model year of the vehicle being searched, e.g. 2014. |
| model | string | Model slug from list_search_options.options[*].slug at the model level (e.g. camry). |
| category | string | Part category slug from list_search_options.options[*].slug at the category level (e.g. engine). |
| part_type | string | Part type slug from list_search_options.options[*].slug at the part_type level; these carry a numeric prefix and may contain spaces (e.g. 300-engine, 308-timing cover). |
{
"type": "object",
"fields": {
"level": "which hierarchy level the options belong to: make | model | category | part_type | fitment",
"options": "array of {label, slug}; slug is the value accepted by the next level and by search_parts",
"selection": "object echoing the slugs supplied (year, make, model, category, part_type)"
},
"sample": {
"data": {
"level": "fitment",
"options": [
{
"slug": "300-10946-2.5l,-vin-f-(5th-digit,-2arfe-engine,-4-cylinder,-without-hybrid),-pzev",
"label": "2.5L, VIN F (5Th Digit, 2ARFE Engine, 4 Cylinder, Without Hybrid), PZEV"
},
{
"slug": "300.to1j14-alternate-engine",
"label": "Alternate Engine"
}
],
"selection": {
"make": "toyota",
"year": "2014",
"model": "camry",
"category": "engine",
"part_type": "300-engine"
}
},
"status": "success"
}
}About the HollanderParts API
Navigating the Vehicle Hierarchy
list_search_options walks HollanderParts.com's search tree one level at a time. Supply a year to get available makes; add make to get models; continue with model, category, and part_type to drill down to engine and fitment options. Each response includes a level field identifying which tier the results belong to (make, model, category, part_type, or fitment) and an options array of {label, slug} pairs. The slug from each level feeds directly into the next call, and ultimately into search_parts.
Searching for Parts
search_parts requires all six hierarchy slugs — year, make, model, category, part_type, and fitment — and returns up to 100 listings. Each listing in the parts array carries a part_key, ref_number, price (numeric or null), price_text, and a free_shipping boolean. The site does not paginate beyond 100 results for any given fitment, so the sort parameter — including a nearest option that uses a postal_code input as origin — is the main tool for controlling which listings surface. The selection object in the response echoes back all six slugs for verification.
Part Listing Details
get_part_details takes a part_key from search_parts and returns the full listing record. Seller-recorded fields include mileage, vin, body_code, location, notes, and the seller object containing name, address, phone, and nullable email. The shipping object breaks out in_store_pickup, domestic, and international availability text; all three fields are null when no price is published. The images array contains listing photo URLs and may be empty if the seller uploaded none.
The HollanderParts API is a managed, monitored endpoint for hollanderparts.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hollanderparts.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 hollanderparts.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 used-parts price comparison tool across salvage yards for a specific vehicle fitment.
- Aggregate seller contact data and locations to map nearby yards stocking a target part.
- Monitor price changes on a specific part type across model years by polling search_parts.
- Filter listings by free_shipping to surface parts that ship without additional cost.
- Populate an inventory database with donor VINs, mileage, and body codes from get_part_details.
- Drive a vehicle-aware part-finder UI using the list_search_options hierarchy responses.
- Sort listings by nearest yard using the postal_code parameter to minimize shipping distance.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does HollanderParts.com have an official developer API?+
What does search_parts return when no listings are found for a fitment?+
parts array will be empty and count will be 0. The selection object still echoes back the six slugs you supplied, so you can confirm the query parameters were accepted correctly.How does the search_parts pagination work — can I retrieve more than 100 listings?+
Does the API return part condition grades or grading scale details?+
notes in get_part_details. You can fork this API on Parse and revise it to add a dedicated condition field if that data appears in listing records.