Rexel APIrexel.fr ↗
Access Rexel France's professional electrical supply catalog via API. Search products, fetch full SKU details, and browse the hierarchical category tree.
What is the Rexel API?
The Rexel France API exposes 3 endpoints covering the full professional electrical supply catalog at rexel.fr. Use search_products to run full-text queries across thousands of SKUs — returning brand, stock status, and image URL per result — then drill into any item with get_product for detailed classification, quantity constraints, markers, and channel availability. A third endpoint delivers the complete hierarchical category tree.
curl -X GET 'https://api.parse.bot/scraper/b87182a0-0ccb-4d0a-ada5-ba3e0aaa64cf/search_products?page=1&size=10&sort=relevance&query=disjoncteur' \ -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 rexel-fr-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: Rexel France electrical supply catalog — search, detail, categories."""
from parse_apis.rexel_fr_api import Rexel, Sort, ProductNotFound
client = Rexel()
# Search for circuit breakers, sorted by relevance
for product in client.products.search(query="disjoncteur", sort=Sort.RELEVANCE, limit=3):
print(product.name, "|", product.brand_name, "| SKU:", product.sku)
# Drill into the first result for full details
hit = client.products.search(query="cable electrique", limit=1).first()
if hit:
detail = client.products.get(sku=hit.sku)
print(detail.name, "—", detail.description_short)
print("Brand:", detail.brand_name, "| In stock:", detail.usually_in_stock)
for marker in detail.markers:
print(" Marker:", marker.code, marker.label)
# Browse the category tree
for cat in client.categories.list(depth=2, limit=5):
print(cat.code, cat.name)
# Handle a missing product gracefully
try:
client.products.get(sku="0000000000")
except ProductNotFound as exc:
print(f"Product not found: {exc}")
print("exercised: products.search / products.get / categories.list")
Full-text search across Rexel France's catalog of professional electrical products. Results are auto-iterated across pages. Each product includes SKU, brand, description, stock status, and image URL.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for results (1-based). |
| size | integer | Number of products per page (max 50). |
| sort | string | Sort order for results. |
| queryrequired | string | Search query text (product name, reference, EAN, keyword). |
{
"type": "object",
"fields": {
"size": "integer",
"total": "integer",
"products": "array of product summaries",
"last_page": "integer",
"current_page": "integer"
},
"sample": {
"data": {
"size": 5,
"total": 42973,
"products": [
{
"sku": "71941447",
"upc": "3606481381323",
"name": "Acti9 iDT40T - Disjoncteur modulaire - 1P+N - 10A - Courbe C - 4500A/6kA",
"status": "ACTIVE",
"qty_min": 1,
"image_url": "https://rexelws.proplanet.nl/mediaservice.svc/getmedia/71941447/THUMBNAIL",
"brand_name": "Schneider Electric",
"category_url": "/Marketing-Rexel/...",
"qty_multiple": 1,
"qty_unit_name": "Pièce",
"usually_in_stock": true,
"description_short": "Ce disjoncteur modulaire de la gamme Acti9 iDT40T est dédié aux applications tertiaires.",
"manufacturer_name": "Schneider Electric",
"rexel_part_number": "SCHA9P22610",
"manufacturer_product_id": "A9P22610"
}
],
"last_page": 8595,
"current_page": 1
},
"status": "success"
}
}About the Rexel API
Search and Product Data
The search_products endpoint accepts a required query parameter (product name, reference, EAN, or keyword) and returns paginated results with up to 50 items per page. Each result in the products array includes the SKU, brand, description, stock status, and image URL. The total and last_page fields let you iterate through the full result set programmatically. Optional sort and size parameters give you control over ordering and page density.
Full Product Detail
Once you have a SKU from search results, get_product returns the complete record for that item. Response fields include sku, upc, name, brand_name, brand_code, status, types, channels, webshop_url, and a markers array of objects with code and label — used by Rexel to flag product characteristics such as hazardous material designations or energy classifications. This endpoint is the right place to retrieve quantity constraints and product classification before building a procurement or quoting workflow.
Category Tree
The get_categories endpoint returns Rexel France's full product taxonomy as a nested structure. Each category object carries a code, name, category_url, position, and a children array for subcategories. The optional depth parameter (1–3) limits how many levels of nesting are returned, which is useful when you only need top-level families versus a full deep tree for navigation or faceted filtering.
The Rexel API is a managed, monitored endpoint for rexel.fr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rexel.fr 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 rexel.fr 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 procurement tool that searches Rexel's catalog by EAN or reference and retrieves live stock status.
- Sync Rexel product data — including brand, UPC, and images — into an internal product information system.
- Generate a category-mapped navigation UI for electrical supply products using the hierarchical category tree.
- Monitor marker flags (e.g. hazardous material codes) across a defined set of SKUs for compliance tracking.
- Cross-reference Rexel SKUs with your own inventory using the
upcfield returned byget_product. - Build a quoting tool that checks product status and channel availability before adding items to an order.
- Index Rexel's category structure to drive faceted search or product classification in a B2B purchasing app.
| 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 Rexel France have an official public developer API?+
What does the `markers` field in `get_product` contain?+
markers field is an array of objects, each with a code and a label. Rexel uses markers to flag product-level attributes such as energy class designations, hazardous material indicators, or promotional tags. The specific markers present vary by product.Does the API return pricing or net customer prices?+
Is the catalog limited to a specific region or Rexel branch?+
How does pagination work in `search_products`?+
page (1-based) and size (max 50) parameters. The response includes total, current_page, and last_page fields so you can iterate through the full result set by incrementing page until you reach last_page.