BAUHAUS APIbauhaus.info ↗
Search BAUHAUS Germany's product catalog, retrieve full product details, and check branch-level stock at nearby Fachcentren via 3 structured endpoints.
What is the BAUHAUS API?
The BAUHAUS.info API covers 3 endpoints that expose product search, detailed article data, and branch-level store availability across BAUHAUS Germany hardware stores. Starting with search_products, you can query the full catalog by keyword and receive product summaries with pricing, ratings, and availability status. From there, get_product_detail and check_store_availability let you drill into a specific article's specs or locate live stock near any German postal code.
curl -X GET 'https://api.parse.bot/scraper/6e6e2f7e-0d04-4a8d-9724-ebd9550a2793/search_products?page=1&sort=relevance&query=mobiles+Klimager%C3%A4t' \ -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 bauhaus-info-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: BAUHAUS Germany SDK — bounded, re-runnable; every call capped."""
from parse_apis.BAUHAUS_Germany_API import Bauhaus, Sort, ProductNotFound
client = Bauhaus()
# Search for mobile air conditioners, sorted by price ascending
for product in client.product_summaries.search(query="mobiles Klimagerät", sort=Sort.PRICE_ASC, limit=3):
print(product.name, product.price, product.is_marketplace)
# Drill down into product details from the first search result
item = client.product_summaries.search(query="mobiles Klimagerät", limit=1).first()
if item:
try:
detail = item.details()
print(detail.name, detail.brand, detail.price, detail.is_marketplace, detail.merchant_name)
# Check branch-level stock near Leipzig (postal code 04103)
for store in detail.check_availability(postal_code="04103", limit=3):
print(store.store_name, store.status, store.available_quantity)
except ProductNotFound as e:
print(f"product gone: {e.product_id}")
print("exercised: product_summaries.search / product_summary.details / product.check_availability")
Full-text search over the BAUHAUS product catalog. Returns product summaries with pricing, availability status, ratings, and marketplace identification. Sorting controls result ordering.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). |
| sort | string | Sort order for results. |
| queryrequired | string | Search query (e.g. 'mobiles Klimagerät', 'Standventilator'). |
{
"type": "object",
"fields": {
"items": "Array of product summaries including is_marketplace flag",
"total": "Total number of matching products"
},
"sample": {
"data": {
"items": [
{
"url": "https://www.bauhaus.info/standventilatoren/voltomat-standventilator/p/20571072",
"name": "Voltomat Standventilator",
"brand": "Voltomat",
"price": "24.9",
"currency": "EUR",
"image_url": "https://media.cdn.bauhaus/m/1636542/prod_medium_square.webp",
"product_id": "20571072",
"availability": "out_of_stock",
"rating_value": 4.3,
"review_count": 38
}
],
"total": 45
},
"status": "success"
}
}About the BAUHAUS API
Product Search and Catalog Data
The search_products endpoint accepts a free-text query parameter (e.g. 'mobiles Klimagerät' or 'Standventilator') and returns an array of product summaries alongside a total count of matching results. Each item includes current pricing, availability status, and ratings. The optional sort parameter controls result ordering, and page (1-based) supports paginated traversal of large result sets. Article numbers returned in search results serve as the product_id input for the other two endpoints.
Full Product Details
get_product_detail accepts a single BAUHAUS article number and returns 11 structured fields: name, brand, price, currency (always EUR), ean (GTIN-13 barcode), description, availability (in_stock or out_of_stock), image_url, url, product_id, and a delivery time field. This is useful when you need the EAN for cross-referencing with other catalogs or need the full product description rather than the summary returned by search.
Branch-Level Store Availability
check_store_availability maps a product to physical BAUHAUS Fachcentren near a 5-digit German postal code. The search_radius parameter (in km) lets you control how broadly to search. The response distinguishes store_quantity (stock at the nearest branch), online_quantity and online_available (for web orders), and store_purchasable (whether the nearest location supports purchase or reservation). The stores array lists each matched branch individually, and delivery provides estimated delivery windows for online fulfillment.
The BAUHAUS API is a managed, monitored endpoint for bauhaus.info — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bauhaus.info 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 bauhaus.info 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 and availability across BAUHAUS's catalog before visiting a store
- Build a real-time in-stock alert for a specific article number using
check_store_availability - Enrich product databases with BAUHAUS EAN codes and brand data from
get_product_detail - Aggregate branch-level inventory across multiple postal codes for regional stock analysis
- Display local store availability widgets in a home-improvement app using the
storesarray - Monitor price changes for specific BAUHAUS article numbers over time
- Cross-reference BAUHAUS product listings with other hardware retailers using GTIN-13 barcodes
| 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 BAUHAUS have an official public developer API?+
What does `check_store_availability` return beyond a simple in-stock flag?+
stores array with per-branch stock details, a numeric store_quantity at the nearest location, online_quantity and online_available for web orders, store_purchasable indicating whether that branch supports purchase or reservation, and a delivery object with estimated delivery windows for online fulfillment. You supply a 5-digit German postal code and an optional search_radius in km to scope which Fachcentren are checked.Does `search_products` return product reviews or customer ratings beyond summary data?+
get_product_detail endpoint covers the full product description and pricing but also does not return individual reviews. You can fork this API on Parse and revise it to add a review-focused endpoint if that data is needed.Is coverage limited to Germany, and does it include BAUHAUS stores in other countries?+
How should I paginate through large search result sets?+
page parameter (1-based integer) in search_products alongside your query. The total field in the response tells you the full count of matching products, so you can calculate how many pages to request. There is no cursor-based pagination; pages are indexed by number.