Com APItoyota.com.my ↗
Access Toyota Malaysia's full vehicle catalog via API. Fetch model listings, variant specs, gallery images, regional pricing, and side-by-side comparisons.
What is the Com API?
The Toyota Malaysia API covers 4 endpoints that return the complete Toyota.com.my vehicle lineup, including model listings, detailed per-model pages with galleries and color options, full variant-level specifications organized by category, and side-by-side variant comparisons. The get_variant_specs endpoint alone returns spec data across sections like Engine, Chassis, Dimensions, Safety, and Security as structured key-value pairs, ready for direct consumption without any HTML parsing.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/9b96e366-dd39-48a3-80b1-cdaf2ea02cf7/list_models' \ -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 toyota-com-my-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.
"""Walkthrough: Toyota Malaysia SDK — browse models, inspect details, compare variants."""
from parse_apis.toyota_malaysia_api import ToyotaMalaysia, BodyType, ResourceNotFound
client = ToyotaMalaysia()
# List all models in the catalog — limit= caps total items fetched.
for model in client.models.list(limit=5):
print(model.name, model.body_type, model.starting_price)
# Get full detail for one model by slug.
detail = client.modeldetails.get(model_slug="fortuner")
print(detail.name, detail.tagline, detail.starting_price)
# Walk variants and their regional prices from the detail page.
for variant in detail.variants[:3]:
print(variant.name, variant.fuel_class, variant.starting_price)
for rp in variant.prices_by_region:
print(" ", rp.state, rp.price)
# Drill into a variant's full specs (pins variant_slug from the instance).
specs = detail.variants[0].specs(model_slug="fortuner")
print(specs.variant_name, specs.header)
for section_name, pairs in specs.specifications.items():
print(f" {section_name}: {len(pairs)} specs")
# Compare variants for this model using the BodyType enum (instance method on ModelDetail).
for cv in detail.compare(body_type=BodyType.SUV, limit=3):
print(cv.name, cv.summary.get("price", ""), cv.safety.get("srsairbags", ""))
# Typed error handling: catch a not-found model gracefully.
try:
client.modeldetails.get(model_slug="nonexistent-model-xyz")
except ResourceNotFound as exc:
print(f"Not found: {exc}")
print("exercised: models.list / modeldetails.get / variant.specs / detail.compare")List all available Toyota Malaysia models with basic info including name, body type, category, starting price, image URL, and available grades/variants. Returns the complete catalog extracted from the global navigation model list. No parameters required.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer - total number of models",
"models": "array of model objects with id, name, body_type, category, starting_price, image_url, model_page_url, is_new, new_label, promotion, grades[]"
},
"sample": {
"data": {
"total": 34,
"models": [
{
"id": "gr-supra",
"name": "GR SUPRA TRACK EDITION",
"grades": [
{
"id": "gr-supra-at",
"url": "https://www.toyota.com.my/en/models/gr-supra/gr-supra-at.html",
"label": "",
"promotion": "PROMOTION AVAILABLE"
}
],
"is_new": false,
"category": "GR & GR-S",
"body_type": "coupe",
"image_url": "https://www.toyota.com.my/content/dam/malaysia/models/gr-supra/explore-thumbnail/gr-supra-navi-v3.png",
"new_label": "",
"promotion": "PROMOTION AVAILABLE",
"model_page_url": "https://www.toyota.com.my/en/models/gr-supra.html",
"starting_price": ""
},
{
"id": "fortuner",
"name": "FORTUNER",
"grades": [
{
"id": "fortuner-2-8-vrz-at-4wd",
"url": "https://www.toyota.com.my/en/models/fortuner/fortuner-2-8-vrz-at-4wd.html",
"label": "",
"promotion": "PROMOTION AVAILABLE"
}
],
"is_new": false,
"category": "SUV",
"body_type": "suv",
"image_url": "https://www.toyota.com.my/content/dam/malaysia/models/fortuner/explore-thumbnails/fortuner-navi-v2.png",
"new_label": "",
"promotion": "PROMOTION AVAILABLE",
"model_page_url": "https://www.toyota.com.my/en/models/fortuner.html",
"starting_price": "From RM195,880.00"
}
]
},
"status": "success"
}
}About the Com API
Model Catalog and Details
The list_models endpoint returns the full Toyota Malaysia catalog as an array of model objects. Each entry includes id, name, body_type, category, starting_price, image_url, model_page_url, and flags like is_new and promotion. No parameters are required — a single call returns every currently listed model.
For deeper data on any single model, get_model_details accepts a model_slug (e.g., 'fortuner', 'corolla-cross-hybrid-ev') and returns the hero image, tagline, overview description, MP4 or YouTube video_url, a gallery_images array with category/alt-text metadata, an array of colors with swatch and car images, a variants array with prices_by_region breakdowns, and features organized into named sections.
Variant Specifications and Comparisons
get_variant_specs takes both a model_slug and a variant_slug (e.g., 'fortuner-2-8-vrz-at-4wd') and returns a specifications object whose top-level keys are section names — Engine, Transmission, Chassis, Dimensions, Exterior Features, Interior Features, Safety, Security, Optional — each containing flat key-value spec pairs. This makes it straightforward to render a full spec sheet or diff two variants programmatically.
The compare_variants endpoint accepts optional filters for model_slug, body_type, or a comma-separated variant_slugs string. The response includes a variants array with per-variant engine, measurements, in_vehicle_*, and summary fields, plus a spec_labels object that maps field keys to human-readable labels. filter_applied echoes back which filters were active, and total_variants gives the count. If no filters are passed, all variants across the full catalog are returned.
The Com API is a managed, monitored endpoint for toyota.com.my — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when toyota.com.my 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 toyota.com.my 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 Toyota Malaysia model comparison tool using
compare_variantsfiltered bymodel_slug - Populate a car-buying guide with starting prices, body types, and promotional flags from
list_models - Render a full spec sheet for any variant using the structured section data from
get_variant_specs - Display regional price differences for a model by reading
prices_by_regionfromget_model_details - Build a color picker UI using the
colorsarray with swatch and car images fromget_model_details - Aggregate gallery content for a specific model by iterating
gallery_imageswithcategoryandalt_textfields - Filter the full catalog by
body_typeviacompare_variantsto surface all SUV or sedan variants at once
| 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 Toyota Malaysia provide an official public developer API?+
What does `get_variant_specs` return, and how granular is the spec data?+
specifications object with section names as keys — Engine, Transmission, Chassis, Dimensions, Exterior Features, Interior Features, Safety, Security, and Optional. Each section contains flat key-value pairs (e.g., displacement, torque, wheelbase). You need both model_slug and variant_slug to call it; variant slugs are available in the variants array returned by get_model_details.Does the API include dealer inventory, stock availability, or booking data?+
How do filters work in `compare_variants`, and can I compare across different models?+
compare_variants accepts model_slug, body_type, and variant_slugs as independent optional filters. You can pass a comma-separated variant_slugs string mixing variants from different models to compare them side-by-side. If no filter is provided, the endpoint returns all variants across the entire catalog along with the spec_labels mapping.