cfmotousa.com APIwww.cfmotousa.com ↗
Access CFMOTO USA accessories catalogs via API. Browse off-road, on-road, oil/lubricants, and apparel products with vehicle fitment lookup.
curl -X GET 'https://api.parse.bot/scraper/3704dc19-b3f6-4e60-8b28-7ecf90f5ba70/list_catalog_products?page=1&catalog=cfmoto_off_road_accessories' \ -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 cfmotousa-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.
"""Walkthrough: CFMOTO Accessories API — browse catalogs, check fitment, get details."""
from parse_apis.cfmotousa_com_api import CFMoto, Catalog, FitmentCatalog, ProductNotFound
client = CFMoto()
# Discover available vehicle models for 2026 off-road accessories
for level in client.fitment_levels.list(catalog=FitmentCatalog.OFF_ROAD, fit="2026", limit=5):
print(level.id, level.name)
# List off-road accessories for a specific vehicle
for product in client.products.list(catalog=Catalog.OFF_ROAD, vehicle_id="2026_cforce_1000_overland", limit=3):
print(product.title, product.price, product.product_id)
# Browse apparel & gear (no vehicle fitment needed)
item = client.products.list(catalog=Catalog.APPAREL_GEAR, limit=1).first()
if item:
print(item.title, item.price, item.slug)
# Get full product details
try:
detail = client.product_details.get(
product_path="2026_cforce_1000_overland/cfmoto_off_road_accessories/644840bf535f7235e3925d23/bumper-front"
)
print(detail.title, detail.price, detail.item_number)
print("Fits:", len(detail.additional_fitment), "vehicles")
except ProductNotFound as exc:
print(f"Product not found: {exc}")
print("exercised: fitment_levels.list / products.list / product_details.get")
List products from a CFMOTO accessories catalog. Supports 4 catalogs: off-road accessories, on-road accessories, oil/lubricants (crafted), and apparel/gear. Off-road, on-road, and oil catalogs can be filtered by vehicle_id for fitment-specific results. Apparel/gear returns all products without vehicle filtering. Results are auto-iterated across pages (20 products per page).
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| catalogrequired | string | The accessories catalog to browse. |
| vehicle_id | string | Vehicle identifier for fitment-specific results (e.g. '2026_cforce_1000_overland', '2026_ibex_800_e'). Obtain valid values from the get_fitment_levels endpoint. Required for off-road, on-road, and oil catalogs; ignored for apparel/gear. |
{
"type": "object",
"fields": {
"page": "integer",
"catalog": "string",
"products": "array of product objects",
"vehicle_id": "string or null",
"total_pages": "integer",
"product_count": "integer"
},
"sample": {
"data": {
"page": 1,
"catalog": "cfmoto_apparel_gear",
"products": [
{
"url": "/oemcatalogs/p/all/cfmoto_apparel_gear/651af63834354d8f07854cea/beanie",
"slug": "beanie",
"brand": "CFMOTO",
"price": "$19.99",
"title": "Beanie",
"image_url": "/assets/cfmoto/images/noimage.png",
"product_id": "651af63834354d8f07854cea",
"regular_price": null
}
],
"vehicle_id": null,
"total_pages": 2,
"product_count": 20
},
"status": "success"
}
}About the cfmotousa.com API
The CFMOTO USA Accessories API provides 3 endpoints covering the full accessories catalog at cfmotousa.com, including off-road, on-road, oil/lubricants, and apparel/gear. The list_catalog_products endpoint returns paginated product listings filterable by vehicle fitment, while get_product_detail exposes per-product fields including item number, price, color options, images, and compatible vehicle strings. A dedicated get_fitment_levels endpoint lets you discover valid vehicle IDs by year and model.
Catalog and Product Listing
list_catalog_products accepts a required catalog parameter choosing between four catalogs: off-road accessories, on-road accessories, oil/lubricants (crafted), and apparel/gear. Off-road, on-road, and oil catalogs accept an optional vehicle_id string (e.g. 2026_cforce_1000_overland) to narrow results to fitment-compatible products only. Apparel/gear ignores vehicle_id and returns all products regardless. Responses include products, product_count, total_pages, and the page you requested, making it straightforward to page through large catalogs.
Product Detail
get_product_detail takes a product_path extracted from the product URL in list_catalog_products results. The response returns title, price (formatted as an MSRP string like MSRP: $199.99), item_number, description, brand, primary_color, an images array of URLs, and an additional_fitment array listing all compatible vehicle strings for that product. This makes it possible to index full product data or build compatibility matrices.
Fitment Discovery
get_fitment_levels is a two-step lookup for discovering valid vehicle_id values. Call it with just a catalog to receive available model years in the levels array (each entry has an id and name). Then call again with fit set to a year string like 2026 to get the vehicle models available for that year. The level_type field in the response tells you whether you are looking at years, models, or a terminal confirmation. This endpoint only works with fitment-aware catalogs — off-road, on-road, and oil/lubricants.
The cfmotousa.com API is a managed, monitored endpoint for www.cfmotousa.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when www.cfmotousa.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 www.cfmotousa.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 fitment-aware parts finder that filters CFMOTO accessories by specific vehicle model and year using vehicle_id
- Sync CFMOTO accessory SKUs, MSRP prices, and item numbers into an e-commerce or inventory management system
- Generate compatibility matrices by aggregating additional_fitment arrays across all products in a catalog
- Display product image galleries and color options for CFMOTO accessories in a dealer-facing portal
- Track catalog additions over time by comparing product_count and paginated product lists across periodic API calls
- Populate a vehicle configurator with model-year-specific accessory recommendations using get_fitment_levels then list_catalog_products
- Index CFMOTO apparel and gear product descriptions and images for a branded merchandise storefront
| 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 CFMOTO USA provide an official developer API for its accessories catalog?+
How do I find the correct vehicle_id value to filter products for a specific model?+
get_fitment_levels with a fitment-aware catalog (off-road, on-road, or oil/lubricants). First call without the fit parameter to get available years in the levels array, then call again with fit set to a year string like 2026 to get vehicle models with their id values. Those id values are the vehicle_id strings accepted by list_catalog_products.What does the additional_fitment field in get_product_detail contain?+
primary_color field is also per-product and may be null if color information is not specified.