Reichelt APIreichelt.com ↗
Search the reichelt.com electronics catalogue by keyword, brand, price range, or country site. Returns product IDs, prices incl. VAT, availability, and manufacturer facets.
What is the Reichelt API?
The Reichelt.com API exposes 4 endpoints for searching the reichelt.com electronics catalogue, covering article numbers, prices including country-specific VAT, availability status, and technical properties. The search_products endpoint returns up to 16 products per page with fields such as article_number, manufacturer, price, image_url, and a price_range summary. Filters for brand, price band, and country site are each exposed as dedicated endpoints.
curl -X GET 'https://api.parse.bot/scraper/073651ee-1094-433a-a4ac-053b35dc1984/search_products?query=led+5mm' \ -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 reichelt-com-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: reichelt elektronik SDK — search electronics, filter by brand and price."""
from parse_apis.reichelt_com_api import Reichelt, SortOrder, Language, InputFormatInvalid
client = Reichelt()
# Browse the full search metadata to discover manufacturers and price range.
result = client.search_results.search(query="led 5mm")
print(f"{result.matched_count} products, price €{result.price_range.min}–€{result.price_range.max}")
for mfr in result.manufacturers[:3]:
print(f" {mfr.name}: {mfr.product_count} products")
# Auto-paginate products sorted by price, capped at 5 items.
for product in client.products.search(query="led 5mm", sort=SortOrder.PRICE_ASC, limit=5):
print(f"{product.name} €{product.price} [{product.availability}]")
# Narrow by a manufacturer discovered above.
top_brand = result.manufacturers[0].name
branded = client.products.search_by_brand(query="led 5mm", brand=top_brand, limit=3)
first_hit = branded.first()
if first_hit is not None:
print(f"{first_hit.name} by {first_hit.manufacturer} — {first_hit.article_number}")
print(f" {first_hit.url}")
for key, val in first_hit.properties.items():
print(f" {key}: {val}")
# Filter by price range on the Swiss site (different VAT).
for product in client.products.search_by_price(
query="led 5mm", min_price=1, max_price=5, country="ch", language=Language.DE, limit=3
):
print(f"{product.name} €{product.price} {product.currency}")
# Same query on the Swiss country site via location search.
ch_result = client.search_results.search_by_location(query="led 5mm", country="ch", language=Language.DE)
print(f"Swiss site: {ch_result.matched_count} matches, {ch_result.country}/{ch_result.language}")
# Demonstrate typed error handling for an invalid price filter.
try:
client.search_results.search_by_price(query="led 5mm", min_price=-1)
except InputFormatInvalid as e:
print(f"Caught invalid input: {e.message}")
print("exercised: products.search / search_results.search / products.search_by_brand / products.search_by_price / search_results.search_by_location")
Keyword search over the reichelt.com catalogue. Returns one page of up to 16 product summaries (fixed page size; `page` selects the 1-based page, omitted = first page) with the article number, name, manufacturer, product URL, image, price (incl. VAT of the selected country, EUR), availability text/status code and the technical properties the site lists for the product. Also returns `manufacturers` facets (manufacturer name and product count across the whole result set) and `price_range` (min/max price across the result set, null when nothing matched). `matched_count` is the number of products in the result set; `total_count` is the unfiltered count for the keyword (equal here, differs on the filtered variants). Search terms are matched in the chosen `language`, so Dutch terms on the nl site and German terms on the de site give the best results. A keyword that matches nothing returns an empty `products` array. Property labels and availability text are in the selected language.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based result page; each page holds 16 products. Maximum 500. |
| sort | string | Result ordering. |
| queryrequired | string | Free-text search keyword(s) or article number, e.g. one shape is 'led 5mm'. |
| country | string | 2-letter lower-case ISO country code of the reichelt country site (e.g. nl, de, ch). Determines VAT rate and price shown. Confirmed values: nl, de, ch, us. |
| language | string | Site language for names, property labels and availability text. |
{
"type": "object",
"fields": {
"page": "1-based page returned",
"sort": "ordering applied",
"query": "echo of the search keyword",
"country": "country site actually used (2-letter code, from the site response)",
"has_more": "true when a further page exists in the result set",
"language": "language actually used (2-letter code, from the site response)",
"products": "array of product summaries: product_id (site numeric id), article_number, name, manufacturer, url, image_url, price (number, incl. VAT), currency, price_note (VAT/shipping wording), availability (text), availability_status (site numeric status code, 1 = in stock), properties (object of label -> value technical attributes)",
"page_size": "products per page (always 16)",
"price_range": "object {min, max} of prices across the result set in EUR, or null when nothing matched",
"total_count": "number of products matching the keyword before any brand/price filter",
"manufacturers": "array of {manufacturer, product_count} facets across the result set",
"matched_count": "number of products in the (filtered) result set"
},
"sample": {
"data": {
"page": 1,
"sort": "relevance",
"query": "led 5mm",
"country": "nl",
"has_more": true,
"language": "nl",
"products": [
{
"url": "https://www.reichelt.com/nl/nl/shop/product/led_5_mm_bedraad_groen_100_mcd_15_-361910",
"name": "LED 5 mm, bedraad, groen, 100 mcd, 15°",
"price": 0.06,
"currency": "EUR",
"image_url": "https://cdn-reichelt.de/resize/130%2F-/web/artikel_ws/C700%2F5003G6CBHAP.jpg?type=Product&resize=130%252F-&",
"price_note": "incl. 21% wettelijke btw excl. verzendkosten",
"product_id": "361910",
"properties": {
"Type": "LED",
"Kleur": "groen",
"Golflengte": "575 nm",
"Lichtsterkte": "100 mcd"
},
"availability": "op voorraad, Levertijd 2 - 3 werkdagen",
"manufacturer": "HUIYUAN OPTO-ELECTRONIC",
"article_number": "5003G6C-BHA-P",
"availability_status": 1
}
],
"page_size": 16,
"price_range": {
"max": 221,
"min": 0.04
},
"total_count": 559,
"manufacturers": [
{
"manufacturer": "HUIYUAN OPTO-ELECTRONIC",
"product_count": 139
},
{
"manufacturer": "KINGBRIGHT",
"product_count": 77
}
],
"matched_count": 559
},
"status": "success"
}
}About the Reichelt API
What the API covers
All four endpoints query the reichelt.com product catalogue by free-text keyword or article number. Every response returns a fixed page of 16 product summaries, each carrying a product_id (the site's numeric identifier), article_number, name, manufacturer, url, image_url, and price in EUR inclusive of the VAT rate applied by the selected country site. The total_count field reports how many products matched the keyword before any filter, while has_more lets you drive paginated loops up to page 500.
Filtering by brand, price, or location
search_brand accepts a comma-separated brand parameter (values come from manufacturers[*].manufacturer in any prior search response) and returns only products from those manufacturers, alongside a matched_count for the filtered set and the unfiltered total_count. search_price restricts results to a whole-euro price band via min_price and max_price integers; fractional euro bounds are not accepted. search_location makes the country parameter required, letting you target specific reichelt country sites — the Dutch site applies 21% VAT while the Swiss site applies 8.1%, and delivery-time wording in the response text reflects the country chosen.
Response fields and pagination
Every endpoint returns the same core shape: page, page_size (always 16), sort, query, country, language, has_more, products array, price_range object ({min, max} in EUR across the result set, or null on no match), and total_count. The language and country fields echo what the site actually applied, which may differ from the requested values if an unsupported combination was given. Sort order is controlled by the optional sort parameter, though accepted sort values are not enumerated in the API; pass the sort string as the site uses it.
The Reichelt API is a managed, monitored endpoint for reichelt.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when reichelt.com 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 reichelt.com 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?+
- Compare prices across reichelt country sites for the same component article number using
search_locationwith differentcountrycodes. - Build a brand-specific product catalogue feed using
search_brandwith manufacturer names sourced frommanufacturers[*].manufacturer. - Monitor in-stock availability of a component category by polling
search_productsand reading theavailabilityfield on each product. - Find all components in a budget range using
search_pricewithmin_priceandmax_pricewhole-euro bounds. - Aggregate
price_rangeacross multiple keyword queries to map cost floors and ceilings for a bill-of-materials category. - Drive a paginated component export by walking
pagefrom 1 to the value implied bytotal_countdivided by 16, checkinghas_moreon each response. - Resolve a supplier article number to product metadata (name, image, manufacturer, URL) by passing the article number as the
queryparameter tosearch_products.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does reichelt.com offer an official developer API?+
How does price filtering work, and what are its limits?+
search_price applies whole-euro bounds (min_price, max_price) to the displayed price inclusive of VAT for the selected country. Fractional euro values are not accepted. Either bound can be omitted to leave that end open. The returned price_range object reflects the actual min and max prices across the filtered result set in EUR.Does the API return product detail pages, specifications tables, or datasheet links?+
article_number, name, manufacturer, price, image_url, url, availability status, and technical properties included in the search listing. Full specification tables and datasheet links are not part of the current response shape. You can fork this API on Parse and revise it to add a product-detail endpoint that fetches the individual product page.How does country selection affect the prices and text returned?+
country parameter (e.g. nl, de, ch) routes the query to the corresponding reichelt country site. Each site applies its local VAT rate — for example, the Netherlands applies 21% and Switzerland 8.1% — so the price field in the response reflects that country's displayed price. Availability and delivery-time wording in the response also comes from the selected site. The country field in the response confirms what was actually applied.