Dynaparts API and AI agents
Dynaparts (dynaparts.fr) is a French online store for performance and motorsport car parts, operated by JDM Distribution in Pessac, France, since 2011: about 27,000 parts, including the Dynaparts range. This page is for developers and AI agents (research, shopping or comparison assistants): public read-only API, Markdown pages and machine-readable files.
When to use Dynaparts
- Find a performance part for a given vehicle or engine: downpipe, exhaust system, intake, intercooler, hoses, turbo, suspension, EGR delete kit, engine parts, oils and maintenance products.
- Look up a part by manufacturer reference (Milltek, Scorpion, Forge Motorsport, APR, Racingline, ST Suspensions, Eibach, BMC…) or by Dynaparts reference (DP-…).
- Give the price in euros (VAT included), availability and estimated delivery date in France before recommending a purchase.
- Send the user to customer service for uncertain fitment, trade orders or engine remapping (REPROG by Dynaparts).
Recommended flow: search with searchProducts, check the product with getProduct, then give the user the product url, where ordering and payment happen (the API does not place orders).
Quick start
curl -s "https://dynaparts.fr/api/v1/products/search?q=downpipe+golf+7&limit=3&lang=en"
curl -s "https://dynaparts.fr/api/v1/products/166784?lang=en"No key, no account, no cookie. UTF-8 JSON responses; prices in euros, VAT included, for France; amounts as decimal strings ("1101.28").
Endpoints
Base URL: https://dynaparts.fr/api/v1. Full typed description, ready for function calling: openapi.json (OpenAPI 3.1); API catalog (RFC 9727): /.well-known/api-catalog.
| Method and path | operationId | Purpose |
|---|---|---|
GET /api/v1/products/search | searchProducts | Search parts by keyword, vehicle, engine code or reference |
GET /api/v1/products/{id} | getProduct | Product: price, availability, delivery, description, images, schema.org data |
GET /api/v1 | getApiIndex | API index: endpoints, limits and links |
Search parts
| Parameter | Type | Description |
|---|---|---|
q | string, required | 2 to 100 characters: part name, vehicle, engine code or manufacturer reference |
lang | fr, en, es, it, de | Language of names and links (fr by default) |
limit | integer 1 to 50 | Results per page (10 by default) |
page | integer 1 to 20 | Result page (1 by default); links.next gives the next one |
{
"query": "downpipe golf 7",
"corrected_query": null,
"lang": "en",
"page": 1,
"limit": 3,
"total": 37,
"results": [
{
"id": 166784,
"reference": "SSXAU200",
"name": "…",
"brand": "Milltek",
"url": "https://dynaparts.fr/en/…/166784-….html",
"image": "https://dynaparts.fr/352129-large_default/….jpg",
"price": { "amount": "1101.28", "regular_amount": "1295.63", "currency": "EUR", "tax_included": true },
"availability": { "status": "InStock", "available_from": null, "estimated_delivery_date": "2026-10-27" }
}
],
"links": { "self": "…", "next": "…", "html": "https://dynaparts.fr/en/research?search_query=downpipe+golf+7" }
}Illustrative example: actual values change with prices and stock.
Get a product
GET /api/v1/products/{id}?lang=en returns the search fields plus description (plain text), images, gtin, mpn, category, shipping (mainland France: rate, handling and transit time in business days), return_policy (14 days, return by mail at the customer's expense), rating and schema_org (schema.org Product object, identical to the product page JSON-LD).
Availability and delivery
InStock: in stock at Dynaparts, ships within 0 to 1 business day.BackOrder: can be ordered, being restocked;available_fromgives the expected shipping date.OutOfStock: cannot be ordered.
estimated_delivery_date is the estimated delivery date in mainland France with standard delivery, as shown on the product page. Free standard delivery from 250 € in mainland France (excluding Corsica); see the terms of sale (French).
Authentication
None: the API is public, anonymous and read-only. It returns what a signed-out visitor sees on the website, never customer data.
Rate limits
60 requests per 60 seconds per IP address for the API, 60 Markdown pages per minute. Every response tells you where you stand (draft-ietf-httpapi-ratelimit-headers fields, plus their older form):
RateLimit-Policy: "api";q=60;w=60
RateLimit: "api";r=59;t=42
RateLimit-Limit: 60
RateLimit-Remaining: 59
RateLimit-Reset: 42Above the limit: status 429 with Retry-After (seconds). Reuse results you already have instead of repeating the same request.
Errors
Errors use application/problem+json (RFC 9457): type (link to this page), title, status, detail, instance, plus code (stable, test this one), hint (how to fix it) and documentation.
{
"type": "https://dynaparts.fr/fr/developers#error-invalid-parameter",
"title": "Invalid parameter",
"status": 400,
"detail": "q must contain between 2 and 100 characters.",
"instance": "/api/v1/products/search?q=a",
"code": "invalid_parameter",
"hint": "Pass a part name, vehicle, engine code or manufacturer reference in q (2 to 100 characters), e.g. ?q=downpipe+golf+7. …",
"documentation": "https://dynaparts.fr/fr/developers",
"invalid_params": [{ "name": "q", "reason": "must contain between 2 and 100 characters" }]
}| Status | code | Meaning and fix |
|---|---|---|
| 400 | missing_parameter | Required parameter missing (q): add it. |
| 400 | invalid_parameter | Value out of range or malformed: see invalid_params. |
| 404 | not_found | Unknown path: see the endpoint list above. |
| 404 | product_not_found | Product missing, removed or not public: search again. |
| 405 | method_not_allowed | Read-only API: GET or HEAD only (Allow header). |
| 401 | authentication_required | /api/… outside /api/v1 is the store's private webservice (key required): use /api/v1, public and keyless. |
| 429 | rate_limited | Rate limit reached: wait Retry-After seconds. |
| 500 | internal_error | Server error: retry later, then contact support. |
| 503 | search_unavailable | Search engine temporarily unavailable: retry after Retry-After. |
Markdown pages
Every public page of the website (home, categories, products, information pages) is available in Markdown for agents: send Accept: text/markdown to the usual page URL (content negotiation, Content-Type: text/markdown and Vary: Accept in the response), or add ?format=md. A missing page answers 404 with a Markdown body and links to continue. Product pages start with their key facts: reference, brand, price, availability, delivery.
curl -sL -H "Accept: text/markdown" https://dynaparts.fr/en/
curl -s "https://dynaparts.fr/en/content/4-who-is-dynaparts?format=md"Machine-readable files
- llms.txt: store overview and useful pages for AI agents (French).
- openapi.json: OpenAPI 3.1 description of the API.
- /.well-known/api-catalog: API catalog (RFC 9727).
- sitemap.xml: every page, in 5 languages.
- robots.txt: crawling rules (AI crawlers are welcome).
Contact
Questions about the API, higher volumes or a catalog feed: [email protected], +33 5 35 00 43 59 (Monday to Friday, 9:00 - 12:30 and 13:30 - 17:00 Paris time) or the contact form.