Amayama APIamayama.com ↗
Access genuine OEM car parts data from Amayama.com. Search by part number or keyword, get pricing from multiple warehouses, shipping estimates, and vehicle compatibility.
What is the Amayama API?
The Amayama API exposes 6 endpoints for querying genuine OEM car parts across brands like Toyota, Nissan, Honda, BMW, and Mercedes-Benz. The search_parts endpoint accepts part numbers or keywords and returns paginated results with pricing summaries, while get_part_detail delivers per-warehouse pricing, shipping estimates, delivery dates, weight, and stock status for any specific part number.
curl -X GET 'https://api.parse.bot/scraper/292e08e2-9fca-46a2-899c-462f77396869/search_parts?page=1&query=brake+pad+toyota' \ -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 amayama-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.
"""Amayama Genuine Car Parts API — search parts, check pricing, explore catalogue."""
from parse_apis.amayama_genuine_car_parts_api import Amayama, Brand_, PartNotFound
client = Amayama()
# Search for brake pad parts across the catalogue (limit= caps total items fetched)
for part in client.partsummaries.search(query="brake pad toyota", limit=3):
print(part.name, part.part_number, part.price_from_usd)
# Drill into a single search result to get full warehouse pricing
summary = client.partsummaries.search(query="90999-00174", limit=1).first()
if summary:
detail = summary.details()
print(detail.name, detail.mpn, detail.availability, detail.weight)
for offer in detail.offers:
print(offer.warehouse, offer.price, offer.shipping_price, offer.delivery_date)
# Get a specific part directly by brand and part number
try:
part = client.parts.get(brand=Brand_.TOYOTA, part_number="47121-76010")
print(part.name, part.mpn, part.low_price, part.high_price)
except PartNotFound as exc:
print(f"Part not found: {exc}")
# Alternative: get_detail returns the same data without the source URL
detail = client.parts.get_detail(brand=Brand_.HONDA, part_number="90999-00174")
print(detail.name, detail.mpn, detail.availability)
# Browse the vehicle catalogue: brands → models → frames
for brand in client.brands.list(limit=3):
print(brand.name, brand.slug)
# List models for a specific brand using constructible Brand
toyota = client.brand(slug="toyota")
for model in toyota.models.list(limit=3):
print(model.name, model.slug)
# Get frame/chassis codes for a specific model grouped by market
for market in toyota.list_frames(model="camry", limit=3):
print(market.market, len(market.frames))
print("exercised: partsummaries.search / summary.details / parts.get / parts.get_detail / brands.list / brand.models.list / brand.list_frames")
Full-text search over the Amayama parts catalogue by keyword or part number. For exact part number matches, the site redirects to the part detail page and the response includes exact_match=true with full part information. For keyword searches, returns paginated summaries with pricing. 20 results per page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| queryrequired | string | Search query - part number (e.g. '90999-00174') or keywords (e.g. 'brake pad toyota') |
{
"type": "object",
"fields": {
"page": "integer current page number",
"query": "string the search query echoed back",
"total": "integer total number of matching parts",
"results": "array of part summary objects with part_number, name, url, price_from_usd, available, image_url, brand_slug, part_number_clean",
"exact_match": "boolean present and true when search redirected to a single part detail page",
"total_pages": "integer total number of pages"
},
"sample": {
"data": {
"page": 1,
"query": "brake pad toyota",
"total": 120,
"results": [
{
"url": "https://www.amayama.com/en/part/toyota/4712176010",
"name": "PAD, BRAKE PEDAL",
"available": true,
"image_url": "https://static.amayama.com/schema/toyota-4712176010-1665474089338-big.jpg",
"brand_slug": "toyota",
"part_number": "Toyota 47121-76010",
"price_from_usd": 29.56,
"part_number_clean": "4712176010"
}
],
"total_pages": 6
},
"status": "success"
}
}About the Amayama API
Search and Part Detail
The search_parts endpoint accepts either an exact part number (e.g. 90999-00174) or a keyword string (e.g. brake pad toyota). When an exact part number is provided and the source resolves it to a single part page, the response sets exact_match: true and returns full part information directly. Keyword searches return paginated results, each result carrying part_number, name, price_from_usd, available, and image_url. Use the page parameter to iterate through total_pages.
Per-Part Data
get_part_detail and get_part_info both accept a brand slug and a part_number (dashes optional). Both return an offers array where each entry includes price, shipping_price, delivery_date, and quantity_available — one entry per warehouse carrying the part. get_part_detail adds mpn, sku, images, weight, low_price, high_price, and an availability string (InStock or OutOfStock). get_part_info returns the same core fields plus a url field and a structured compatibility object that lists models and engine codes the part fits.
Catalogue Navigation
Three endpoints let you traverse the parts catalogue hierarchically. list_brands returns every available manufacturer with name, slug, and url. list_models takes a brand slug and returns all model names and slugs for that brand. list_frames takes a brand and model slug and returns all chassis/frame codes grouped by market (Japan, USA, Europe, Asia and Middle East, etc.), each with a code, title, and url. This hierarchy lets you programmatically enumerate the full parts tree for any supported brand.
The Amayama API is a managed, monitored endpoint for amayama.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when amayama.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 amayama.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 an OEM part price tracker that monitors
low_priceandhigh_pricechanges across warehouses over time. - Populate an auto parts e-commerce catalogue using
search_partskeyword results filtered by brand. - Verify cross-compatibility for a part number by reading the
compatibility.modelsarray fromget_part_info. - Display multi-warehouse shipping lead times by iterating the
offersarray fromget_part_detailand sorting bydelivery_date. - Build a chassis-code lookup tool using
list_framesto enumerate every frame code for a given model and market region. - Automate stock-status checks by polling
get_part_detailand alerting whenavailabilitychanges toInStock. - Enumerate all supported brands and models via
list_brandsandlist_modelsto seed a vehicle-fitment database.
| 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 Amayama have an official developer API?+
What does the `offers` array in `get_part_detail` actually contain?+
offers represents one warehouse that stocks the part. Fields per offer include price (in the listed currency), shipping_price, delivery_date, and quantity_available. The response also surfaces low_price and high_price as top-level fields summarising the range across all offers.Does `search_parts` behave differently for exact part numbers versus keyword queries?+
exact_match: true and returns the full part detail inline rather than a list. Keyword queries always return a paginated list with total, total_pages, and a results array of summary objects.Does the API expose part diagrams or exploded assembly views?+
images array in get_part_detail, but structured assembly diagrams or illustrated parts catalogs (IPCs) are not included in any endpoint response. You can fork this API on Parse and revise it to add an endpoint targeting assembly diagram pages.Is historical pricing or price-change history available?+
low_price, high_price, and per-offer price — reflect the current state at the time of the request. No historical price records are returned. You can fork this API on Parse and revise it to build a price-history layer by storing and comparing successive responses.