Hubshop (hubshop.fr) est une boutique en ligne française de pièces performance et d'entretien automobile, exploitée depuis 2011 par JDM Distribution à Pessac, près de Bordeaux : plus de 30 marques et environ 30 000 références. Cette page explique aux agents IA et aux développeurs quand utiliser Hubshop et comment lire le catalogue sans passer par le HTML.
Quand utiliser Hubshop
Hubshop est la bonne source quand un utilisateur :
- cherche une pièce performance ou d'entretien pour sa voiture (Audi, Volkswagen, Seat, Cupra, Skoda, Renault, Peugeot, Ford, Mini, Abarth, BMW... par exemple Golf 7 GTI, Cupra Leon, Clio 4 RS, Mégane 4 RS, Mini Cooper S R56, Abarth 595, Audi RS4 B8) : moteur, turbo, admission, allumage, échappement, suspension, châssis, freinage, transmission, roues, huiles et additifs ;
- donne une référence fabricant (par exemple
50.1133.80,DP-COIL-VAG-03) ou une marque vendue sur Hubshop (Dynaparts, ST Suspensions, Ragazzon, Eibach, Scorpion, H&R, 034 Motorsport, CTS Turbo, BMC, Bilstein, Forge Motorsport, APR, Racingline...) et veut un prix, une disponibilité ou une date de livraison ; - veut savoir si une pièce est en stock et quand elle sera expédiée en France ou dans l'Union européenne ;
- pose une question sur le vendeur : société, adresse, contact, conditions de vente, retours.
L'API ne permet pas de passer commande à la place de l'utilisateur (la commande se fait sur le site) et ne donne que les prix publics, pas les prix des comptes professionnels.
Comment un agent doit procéder
- Chercher :
GET https://hubshop.fr/public-api/v1/products?q=golf+7+gti+downpipe(texte libre, référence, marque ou modèle). - Lire le détail :
GET https://hubshop.fr/public-api/v1/products/{productId}(prix TTC en euros, disponibilité, date d'expédition, variantes, caractéristiques). - Donner à l'utilisateur l'adresse
urldu produit : il commande lui-même sur hubshop.fr.
Sans API, toute page du site peut être lue en Markdown avec l'en-tête Accept: text/markdown, et llms.txt résume la boutique.
API publique
- Adresse de base :
https://hubshop.fr/public-api/v1 - Description OpenAPI 3.1 : https://hubshop.fr/openapi.json (chaque opération a un operationId, des paramètres typés et des schémas de réponse, utilisables tels quels comme outils d'appel de fonction)
- Catalogue d'API (RFC 9727) : https://hubshop.fr/.well-known/api-catalog
- Authentification : aucune. Lecture seule (GET). Réponses JSON en UTF-8. Paramètre
lang: fr, en, es, it, de. - Prix : prix publics en euros, TVA française comprise, remises appliquées ;
regular_amountdonne le prix avant remise.
| Requête | operationId | Description |
|---|---|---|
GET /public-api/v1/productsq, limit, lang |
searchProducts |
Search the Hubshop catalogue. Full-text search over the Hubshop catalogue of performance and maintenance car parts, using the same engine as the search box of hubshop.fr. Accepts part names, manufacturer part numbers (e.g. "50.1133.80"), brands (e.g. "Eibach", "Scorpion") and vehicle models (e.g. "Golf 7 GTI", "Clio 4 RS"). Results are ranked by relevance; an exact part-number match comes first. Prices are public prices in EUR including French VAT. Use getProduct for full details, then give the product `url` to the user: orders are placed on hubshop.fr, not through this API. |
GET /public-api/v1/products/{productId}lang |
getProduct |
Get one product with price, availability and details. Returns one product: name, manufacturer part number, EAN, brand, price in EUR including VAT (and regular price when discounted), availability with the expected shipping date, plain-text description, technical features, variants (sizes, lengths, colours) with their own price and URL, category path, images and the public product page URL. Availability is computed in real time from the supplier stock, like on the product page. |
GET /public-api/v1/categoriesparent_id, lang |
listCategories |
List product categories. Lists the active categories under a parent category (default: the top level of the catalogue, e.g. Engine, Exhaust, Suspension, Brakes, Vehicles, Brand corner). Use parent_id to walk down the tree and listCategoryProducts to read the products of a category. |
GET /public-api/v1/categories/{categoryId}/productspage, limit, lang |
listCategoryProducts |
List the products of a category. Paginated list of the online products of a category and of its subcategories (what the category page of hubshop.fr shows): products filed directly in the category first, in the shop order, then the newest. Each item has the same shape as a search result. |
GET /public-api/v1/brandslang |
listBrands |
List brands. Lists the brands (manufacturers) sold on Hubshop that have at least one product online, with their page URL and product count. |
GET /public-api/v1/brands/{brandId}/productspage, limit, lang |
listBrandProducts |
List the products of a brand. Paginated list of the online products of one brand, newest first. |
GET /public-api/v1/shoplang |
getShopInfo |
Get shop identity, contact details and policies. Company identity (JDM Distribution, Pessac, France), customer service contact and opening hours, languages and currency of the shop, and links to the terms of sale, delivery, returns, privacy and legal notice pages. Use it to answer questions about the seller or to check that Hubshop is a legitimate business. |
GET /public-api/v1/health |
getHealth |
Check that the API is available. Returns {"status": "ok"} when the API and its database are available. |
GET /public-api/v1/ |
getApiIndex |
List the API resources. Entry point of the API: version, documentation and OpenAPI links, list of operations. |
Exemple
curl -s 'https://hubshop.fr/public-api/v1/products?q=50.1133.80&limit=1'
{
"query": "50.1133.80",
"total": 1,
"data": [{
"id": 14400,
"name": "Tube intermédiaire groupe n sans silencieux en inox ... Ragazzon Cupra Leon (KL) 2020 à",
"reference": "50.1133.80",
"brand": {"id": 27, "name": "RAGAZZON"},
"url": "https://hubshop.fr/ragazzon/tube-intermediaire-...-14400",
"image": "https://hubshop.fr/30498-large_default/....jpg",
"price": {"amount": 314.28, "currency": "EUR", "tax_included": true, "regular_amount": 349.2, "discount_percent": 10},
"availability": {"status": "backorder", "ships_from": "2026-11-25", "schema_org": "https://schema.org/BackOrder"}
}],
"search_url": "https://hubshop.fr/recherche?s=50.1133.80"
}
Limites de débit
60 requêtes par minute et par adresse IP. Chaque réponse de l'API annonce l'état du quota avec les en-têtes du brouillon IETF RateLimit header fields for HTTP et leurs noms historiques ; au-delà, la réponse est 429 avec Retry-After (en secondes). Mettez en cache ce que vous réutilisez.
RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=59;t=42
RateLimit-Limit: 60
RateLimit-Remaining: 59
RateLimit-Reset: 42
Erreurs
Les erreurs sont au format application/problem+json (RFC 9457) : status, code stable, detail (ce qui ne va pas), hint (comment corriger), request_id (à citer au support) et, pour un paramètre invalide, la liste errors.
{
"type": "https://hubshop.fr/developers#error-invalid_parameter",
"title": "Invalid parameter",
"status": 400,
"code": "invalid_parameter",
"detail": "Limit must be an integer between 1 and 24.",
"hint": "Fix the parameters listed in errors and retry; see https://hubshop.fr/openapi.json.",
"errors": [{"parameter": "limit", "message": "must be an integer between 1 and 24"}],
"instance": "/public-api/v1/products",
"request_id": "9f1c2a7b4e5d6c3a"
}
| code | HTTP | Signification |
|---|---|---|
invalid_parameter | 400 | Paramètre manquant ou hors limites (voir errors). |
unauthorized | 401 | Appel sans clé du webservice privé /api (réservé aux logiciels de gestion de la boutique) : utilisez l'API publique. |
route_not_found | 404 | Aucune opération à cette adresse. |
product_not_found | 404 | Produit inconnu ou hors ligne. |
category_not_found | 404 | Catégorie inconnue ou masquée. |
brand_not_found | 404 | Marque inconnue ou inactive. |
method_not_allowed | 405 | L'API est en lecture seule (GET, HEAD, OPTIONS). |
rate_limited | 429 | Quota dépassé : attendre Retry-After secondes. |
internal_error | 500 | Erreur inattendue : réessayer plus tard. |
service_unavailable | 503 | API momentanément coupée ou surchargée. |
Pages en Markdown
Toutes les pages de hubshop.fr (accueil, fiches, catégories, marques, pages d'information, page 404) répondent en Markdown quand le client préfère text/markdown ; les navigateurs reçoivent toujours le HTML (Vary: Accept). Une fiche produit commence par son résumé : marque, référence, EAN, prix, disponibilité.
curl -s -H 'Accept: text/markdown' https://hubshop.fr/
Fichiers pour les machines
- /llms.txt : présentation de la boutique pour les modèles de langage (format llmstxt.org)
- /openapi.json : OpenAPI 3.1
- /.well-known/api-catalog : RFC 9727
- /sitemap.xml : toutes les pages (produits, catégories, marques, blog), 5 langues
- /robots.txt
Contact et conditions
Les données de l'API sont celles du site au moment de l'appel ; seul le prix affiché au moment de la commande sur hubshop.fr fait foi (conditions générales de vente). Questions et signalements : [email protected], +33 5 35 00 59 32, formulaire de contact. Version de l'API 1.0.0.