# Bauhaus Scraper — German DIY & Home Improvement Products (`studio-amba/bauhaus-scraper`) Actor

Scrapes products from bauhaus.info with prices, ratings, stock info and specs. Supports search queries and category URLs.

- **URL**: https://apify.com/studio-amba/bauhaus-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 10 total users, 1 monthly users, 63.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 result scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Bauhaus Scraper -- German/EU Professional Hardware & Building Materials

Know what Bauhaus is charging today, not last month. This actor pulls current prices, stock status, ratings, and full technical specs from bauhaus.info -- Germany and Europe's specialist retailer for professional hardware, building materials, and workshop supplies -- so you can compare supplier pricing or build a materials database without opening a browser. Full product detail extraction with specs, EAN codes, and image galleries.

### What is Bauhaus Scraper?

Bauhaus is the professional's choice in the European DIY market. Founded in 1960 in Mannheim, it operates 270+ stores across 19 countries with a distinct focus on professional-grade materials and workshop supplies. Unlike consumer-oriented DIY chains, Bauhaus leans heavily into building materials, industrial hardware, workshop equipment, and trade-quality tools. Its stores typically feature specialized departments like a drive-in lumber yard, tile studio, and paint mixing center.

This scraper crawls Bauhaus's product listings and detail pages using CheerioCrawler, extracting data from JSON-LD structured data, product attribute tables, and HTML elements. Each product page is visited individually to capture the full depth of specs and descriptions.

- **Construction material procurement** -- Extract pricing on lumber, concrete, drywall, insulation, and roofing materials for project estimation and supplier comparison
- **Workshop and industrial supply tracking** -- Monitor prices on welding equipment, compressors, workbenches, and industrial-grade hand tools
- **Professional tool brand analysis** -- Track how professional brands (Makita, Metabo, Milwaukee, Festool, Hilti) are positioned and priced at Bauhaus versus other retailers
- **Tile and flooring market research** -- Bauhaus's tile studio is a major revenue center; scrape tile products with full spec data (dimensions, material, PEI rating, water absorption)
- **Cross-country price comparison** -- Bauhaus operates in Germany, Austria, Switzerland, and 16 other countries. German pricing serves as a baseline for European market analysis

### What data does Bauhaus Scraper extract?

- 🔩 **Product name** -- Full German product title
- 💰 **Price & discounts** -- Current price, UVP/was-price when on promotion
- 🏷️ **Brand** -- Manufacturer name (Makita, Metabo, Fischer, Knauf, BAUHAUS, etc.)
- 📦 **Stock availability** -- Online availability based on structured data and page indicators
- ⭐ **Ratings & reviews** -- Aggregate rating and review count from JSON-LD
- 🖼️ **Product images** -- Primary image plus full product gallery
- 📐 **Technical specifications** -- Detailed key-value specs from attribute tables (dimensions, materials, weight, compliance marks)
- 📋 **Product description** -- Full text description
- 🔗 **Product URL** -- Direct link on bauhaus.info
- 📂 **Category breadcrumbs** -- Full category path from breadcrumb navigation
- 🏗️ **Product identifiers** -- EAN/GTIN barcode, SKU/article number

### How to scrape Bauhaus

| Field | Type | Description |
|-------|------|-------------|
| `searchQuery` | String | Search keyword -- e.g., `"bohrmaschine"`, `"schrauben"`, `"farbe"`, `"fliesen"` |
| `categoryUrl` | String | Category page URL -- e.g., `https://www.bauhaus.info/akkubohrschrauber/c/10000794` |
| `maxResults` | Integer | Maximum products to scrape (default: 100, set to 0 for unlimited) |
| `proxyConfiguration` | Object | **Recommended** -- bauhaus.info may block direct requests |

**Tips:**

- `categoryUrl` overrides `searchQuery` if both are provided
- Bauhaus search URL pattern: `https://www.bauhaus.info/suche/produkte?q={query}`
- Category URLs follow: `https://www.bauhaus.info/{category-slug}/c/{category-id}`
- Apify proxy is enabled by default and strongly recommended -- Bauhaus may block datacenter IPs
- The scraper visits each product's detail page, so factor in 1-3 seconds per product for runtime estimates

### Output

```json
{
    "name": "Metabo Akku-Bohrschrauber BS 18 LT BL 18V inkl. 2 Akkus 4.0 Ah",
    "brand": "Metabo",
    "price": 249.00,
    "currency": "EUR",
    "url": "https://www.bauhaus.info/akkubohrschrauber/metabo-akku-bohrschrauber-bs-18-lt-bl/p/27654321",
    "scrapedAt": "2026-04-03T15:00:00.000Z",
    "originalPrice": 289.00,
    "sku": "27654321",
    "ean": "4061792167823",
    "imageUrl": "https://www.bauhaus.info/media/metabo-bs-18-lt-bl.jpg",
    "imageUrls": [
        "https://www.bauhaus.info/media/metabo-bs-18-lt-bl.jpg",
        "https://www.bauhaus.info/media/metabo-bs-18-lt-bl-2.jpg"
    ],
    "description": "Der Metabo BS 18 LT BL ist ein buerstenloser Akku-Bohrschrauber mit 60 Nm Drehmoment fuer anspruchsvolle Bohr- und Schraubarbeiten.",
    "rating": 4.6,
    "reviewCount": 78,
    "inStock": true,
    "specs": {
        "Spannung": "18 V",
        "Max. Drehmoment": "60 Nm",
        "Bohrfutter-Spannweite": "1,5-13 mm",
        "Akkukapazitaet": "4,0 Ah",
        "Gewicht mit Akku": "1,8 kg",
        "Motor": "Buerstenlos"
    },
    "categories": ["Elektrowerkzeuge", "Akkubohrschrauber"],
    "category": "Elektrowerkzeuge > Akkubohrschrauber"
}
```

A building materials example:

```json
{
    "name": "Knauf Gipskartonplatte GKB 12,5 mm x 2000 mm x 1250 mm",
    "brand": "Knauf",
    "price": 7.95,
    "currency": "EUR",
    "url": "https://www.bauhaus.info/gipskartonplatten/knauf-gipskartonplatte-gkb/p/15432109",
    "scrapedAt": "2026-04-03T15:00:00.000Z",
    "sku": "15432109",
    "ean": "4003982310101",
    "inStock": true,
    "rating": 4.8,
    "reviewCount": 156,
    "imageUrl": "https://www.bauhaus.info/media/knauf-gkb-12-5.jpg",
    "description": "Die Knauf Gipskartonplatte GKB ist eine Standard-Bauplatte fuer den Trockenbau.",
    "specs": {
        "Staerke": "12,5 mm",
        "Breite": "1250 mm",
        "Laenge": "2000 mm",
        "Gewicht": "22,5 kg",
        "Kantenform": "Abgefast (AK)",
        "Brandschutzklasse": "A2-s1, d0"
    },
    "categories": ["Trockenbau", "Gipskartonplatten"],
    "category": "Trockenbau > Gipskartonplatten"
}
```

### How much does it cost?

Bauhaus Scraper visits individual product pages for complete data extraction.

| Scenario | Products | Est. cost |
|----------|----------|-----------|
| Quick search | 50 | ~$0.30 |
| Category deep dive | 200 | ~$0.90 |
| Department inventory | 500 | ~$2.00 |
| Large export | 1,000 | ~$4.00 |

Proxy costs are included when using default Apify proxy. Residential proxies may incur additional costs.

### Can I integrate?

- **JSON, CSV, Excel** -- Direct dataset download
- **Google Sheets** -- Automatic sync via Apify
- **Webhooks** -- Trigger your data pipeline
- **API** -- Programmatic access (see below)
- **Zapier / Make** -- 5,000+ app connections
- **Amazon S3, Google Cloud Storage** -- Cloud export

### Can I use it as an API?

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("studio-amba/bauhaus-scraper").call(run_input={
    "searchQuery": "fliesen",
    "maxResults": 100,
    "proxyConfiguration": {"useApifyProxy": True}
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['name']} - EUR {item['price']}")
```

**JavaScript:**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('studio-amba/bauhaus-scraper').call({
    searchQuery: 'fliesen',
    maxResults: 100,
    proxyConfiguration: { useApifyProxy: true },
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### FAQ

**What makes Bauhaus different from OBI or Hornbach?**
Bauhaus positions itself as the professional's retailer. Its stores include specialized departments like a drive-in lumber yard, professional tile studio, and paint mixing center. Product data tends to include more technical specifications compared to consumer-oriented chains. OBI has more stores in Germany; Hornbach has the largest individual store formats.

**Does the scraper work for Bauhaus in Austria or other countries?**
This scraper targets bauhaus.info which serves the German market. Bauhaus operates in 19 countries with separate websites. The extraction logic may partially work on other country sites (similar technology), but it is optimized for the German store.

**Why is proxy recommended?**
Bauhaus.info may block or throttle requests from datacenter IP addresses. Using Apify proxy (enabled by default) provides better reliability. For very large scrapes, consider residential proxies.

**How detailed are the product specifications?**
Bauhaus tends to provide rich technical specs, especially for building materials and professional tools. Expect data like dimensions, weight, materials, compliance certifications (CE, DIN, EN standards), and technical performance metrics. Consumer products may have fewer spec fields.

**Can I scrape Bauhaus's tile catalog?**
Yes. Tiles are a major category for Bauhaus. Search for `"fliesen"` or use a category URL. Tile products typically include detailed specs: dimensions, material type, surface finish, PEI abrasion class, water absorption rate, and frost resistance.

### Limitations

- Targets bauhaus.info (Germany) primarily
- Proxy is strongly recommended -- direct requests may be blocked
- Each product page is visited individually, so large scrapes take proportionally longer (1-3 sec per product)
- Product link detection relies on `/produkte/` or `/p/` URL patterns -- some edge cases may be missed
- Specs depend on how each product is structured; not all products have complete attribute tables
- Pagination relies on next-page links or page parameter incrementing, which may not work for all category layouts

### Other DIY & home improvement scrapers

Build a complete German and European DIY pricing database:

- **[OBI Scraper](https://apify.com/studio-amba/obi-scraper)** -- Germany's #1 DIY chain (350+ stores)
- **[Hornbach Scraper](https://apify.com/studio-amba/hornbach-scraper)** -- German/EU DIY megastore for project builders
- **[Toom Scraper](https://apify.com/studio-amba/toom-scraper)** -- Germany, REWE group DIY
- **[GAMMA Scraper](https://apify.com/studio-amba/gamma-scraper)** -- Belgium, Intergamma group
- **[Brico Scraper](https://apify.com/studio-amba/brico-scraper)** -- Belgium's largest DIY chain
- **[Hubo Scraper](https://apify.com/studio-amba/hubo-scraper)** -- Belgian neighborhood DIY
- **[Praxis Scraper](https://apify.com/studio-amba/praxis-scraper)** -- Netherlands, Maxeda DIY Group
- **[Leroy Merlin Scraper](https://apify.com/studio-amba/leroymerlin-scraper)** -- France's #1 DIY retailer
- **[Castorama Scraper](https://apify.com/studio-amba/castorama-scraper)** -- France, Kingfisher group

### Your feedback

Bug reports, feature requests, or questions about data quality? Open an issue on the actor's page or contact us through Apify.

### Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs,
deduplication, delta detection, and delivery to your inbox, Google Sheets,
or API — maintenance included. We can also build a custom version with your
exact fields and filters, or combine multiple sources into one feed.

See [studioamba.dev/services](https://studioamba.dev/services/) or email
<hello@studioamba.dev> for a free data sample.
We maintain 300+ European web scrapers and answer within one business day.

# Actor input Schema

## `searchQuery` (type: `string`):

Search term to look up on bauhaus.info (e.g., 'bohrmaschine', 'schrauben', 'farbe')

## `categoryUrl` (type: `string`):

Direct URL to a bauhaus.info category or search results page. Overrides searchQuery if both are provided.

## `maxResults` (type: `integer`):

Maximum number of products to scrape. Set to 0 for unlimited.

## `brightDataApiKey` (type: `string`):

Your Bright Data API key for Web Unlocker. Used to bypass bauhaus.info's Cloudflare protection when standard proxies are blocked. Get one at https://brightdata.com

## `proxyConfiguration` (type: `object`):

Apify proxy settings. Recommended — bauhaus.info may block direct requests.

## Actor input object example

```json
{
  "searchQuery": "bohrmaschine",
  "categoryUrl": "https://www.bauhaus.info/akkubohrschrauber/c/10000794",
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountryCode": "DE"
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "bohrmaschine",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountryCode": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/bauhaus-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQuery": "bohrmaschine",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountryCode": "DE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/bauhaus-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "bohrmaschine",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountryCode": "DE"
  }
}' |
apify call studio-amba/bauhaus-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/bauhaus-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/z9I3qOHWkzfndvGX8/builds/CfvpjtwdEAjY9IsYi/openapi.json
