Approfitti della spedizione STANDARD gratuita a partire da 250,00 € di acquisto, o in punto di ritiro per i piccoli pacchi da 10 g a 250 g a partire da 13 €!*

Hubshop (hubshop.fr) is a French online store for performance and maintenance car parts, run since 2011 by JDM Distribution in Pessac, near Bordeaux: more than 30 brands and about 30,000 parts. This page tells AI agents and developers when to use Hubshop and how to read the catalogue without parsing HTML.

When to use Hubshop

Hubshop is the right source when a user:

  • looks for a performance or maintenance part for their car (Audi, Volkswagen, Seat, Cupra, Skoda, Renault, Peugeot, Ford, Mini, Abarth, BMW... for example Golf 7 GTI, Cupra Leon, Clio 4 RS, Megane 4 RS, Mini Cooper S R56, Abarth 595, Audi RS4 B8): engine, turbo, intake, ignition, exhaust, suspension, chassis, brakes, drivetrain, wheels, oils and additives;
  • gives a manufacturer part number (for example 50.1133.80, DP-COIL-VAG-03) or a brand sold on Hubshop (Dynaparts, ST Suspensions, Ragazzon, Eibach, Scorpion, H&R, 034 Motorsport, CTS Turbo, BMC, Bilstein, Forge Motorsport, APR, Racingline...) and wants a price, availability or delivery date;
  • wants to know whether a part is in stock and when it will ship to France or the European Union;
  • asks about the seller: company, address, contact, terms of sale, returns.

The API cannot place an order on the user's behalf (orders are placed on the website) and only returns public prices, not the prices of trade accounts.

How an agent should proceed

  1. Search: GET https://hubshop.fr/public-api/v1/products?q=golf+7+gti+downpipe&lang=en (free text, part number, brand or model).
  2. Read the details: GET https://hubshop.fr/public-api/v1/products/{productId}?lang=en (price in EUR incl. VAT, availability, shipping date, variants, features).
  3. Give the product url to the user, who orders on hubshop.fr.

Without the API, every page of the website can be read as Markdown with the header Accept: text/markdown, and llms.txt summarises the shop.

Public API

  • Base URL : https://hubshop.fr/public-api/v1
  • OpenAPI 3.1 description : https://hubshop.fr/openapi.json (every operation has an operationId, typed parameters and response schemas, usable as function-calling tools as is)
  • API catalog (RFC 9727) : https://hubshop.fr/.well-known/api-catalog
  • Authentication: none. Read-only (GET). JSON responses in UTF-8. lang parameter: fr, en, es, it, de.
  • Prices: public prices in euros, French VAT included, discounts applied; regular_amount is the price before discount.
RequestoperationIdDescription
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.

Example

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"
}

Rate limits

60 requests per minute and per IP address. Every API response announces the quota with the headers of the IETF draft RateLimit header fields for HTTP and their older names; beyond it the response is 429 with Retry-After (seconds). Cache what you reuse.

RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=59;t=42
RateLimit-Limit: 60
RateLimit-Remaining: 59
RateLimit-Reset: 42

Errors

Errors use application/problem+json (RFC 9457): status, a stable code, detail (what is wrong), hint (how to fix it), request_id (to quote to support) and, for an invalid parameter, the errors list.

{
  "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"
}
codeHTTPMeaning
invalid_parameter400Missing or out-of-range parameter (see errors).
unauthorized401Call to the private /api webservice (reserved for the shop's back-office software) without a key: use the public API.
route_not_found404No operation at this address.
product_not_found404Unknown or offline product.
category_not_found404Unknown or hidden category.
brand_not_found404Unknown or inactive brand.
method_not_allowed405The API is read-only (GET, HEAD, OPTIONS).
rate_limited429Quota exceeded: wait Retry-After seconds.
internal_error500Unexpected error: retry later.
service_unavailable503API temporarily disabled or overloaded.

Markdown pages

Every page of hubshop.fr (home, products, categories, brands, information pages, 404 page) answers in Markdown when the client prefers text/markdown; browsers always get HTML (Vary: Accept). A product page starts with its summary: brand, part number, EAN, price, availability.

curl -s -H 'Accept: text/markdown' https://hubshop.fr/

Machine-readable files

Contact and terms

API data is the website data at the time of the call; only the price shown when ordering on hubshop.fr is binding (terms of sale). Questions and reports : [email protected], +33 5 35 00 59 32, contact form. API version 1.0.0.