Bénéficiez de la livraison STANDARD gratuite dès 250,00 € d'achat, ou en point relais pour les petits colis de 10 g à 250 g dès 13 € !*

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

  1. Chercher : GET https://hubshop.fr/public-api/v1/products?q=golf+7+gti+downpipe (texte libre, référence, marque ou modèle).
  2. 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).
  3. Donner à l'utilisateur l'adresse url du 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_amount donne le prix avant remise.
RequêteoperationIdDescription
GET /public-api/v1/products
q, 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/categories
parent_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}/products
page, 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/brands
lang
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}/products
page, limit, lang
listBrandProducts List the products of a brand. Paginated list of the online products of one brand, newest first.
GET /public-api/v1/shop
lang
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"
}
codeHTTPSignification
invalid_parameter400Paramètre manquant ou hors limites (voir errors).
unauthorized401Appel sans clé du webservice privé /api (réservé aux logiciels de gestion de la boutique) : utilisez l'API publique.
route_not_found404Aucune opération à cette adresse.
product_not_found404Produit inconnu ou hors ligne.
category_not_found404Catégorie inconnue ou masquée.
brand_not_found404Marque inconnue ou inactive.
method_not_allowed405L'API est en lecture seule (GET, HEAD, OPTIONS).
rate_limited429Quota dépassé : attendre Retry-After secondes.
internal_error500Erreur inattendue : réessayer plus tard.
service_unavailable503API 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

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.