Mr.Bricolage Scraper — French DIY & Home Improvement avatar

Mr.Bricolage Scraper — French DIY & Home Improvement

Pricing

from $5.00 / 1,000 result scrapeds

Go to Apify Store
Mr.Bricolage Scraper — French DIY & Home Improvement

Mr.Bricolage Scraper — French DIY & Home Improvement

Scrape products, prices, and details from mr-bricolage.fr, the French Mr.Bricolage DIY and home improvement retailer network. Supports keyword search and category browsing. Uses a real headful Chrome browser to pass Cloudflare's managed challenge.

Pricing

from $5.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Mr.Bricolage Scraper

Extract product data, prices, and details from mr-bricolage.fr — the French Mr.Bricolage DIY and home improvement retail network. Built for teams that need reliable pricing and catalog data from a site that actively blocks scrapers with a Cloudflare managed challenge.

What is Mr.Bricolage Scraper?

Mr.Bricolage is a French cooperative network of independently-run DIY, garden, and home improvement stores, competing directly with Leroy Merlin, Castorama, and Brico Dépôt. This scraper extracts structured product data from their online catalog: names, brands, prices, stock status, SKUs, EAN barcodes, and categories.

Here is what teams use it for:

  • French DIY price benchmarking — compare Mr.Bricolage pricing against Leroy Merlin, Castorama, Brico Dépôt, and Bricomarché for the same product categories
  • EAN-based product matching — match products across French retailers by barcode for genuine like-for-like comparisons
  • Catalog monitoring — track new listings, price changes, and stock status over time
  • Renovation cost research — pull pricing across paint, tools, garden, and building material categories for project budgeting

What data does Mr.Bricolage Scraper extract?

Each product includes the following fields when available:

  • Product name — full listing title in French
  • Brand — manufacturer name, from the product's structured data
  • Price — current price in EUR, read from the rendered page (what a shopper actually sees)
  • Original price — pre-discount price, when the product is on promotion
  • Currency — always "EUR", included next to every price
  • EAN — European Article Number (barcode/GTIN), when the manufacturer supplies one
  • SKU — Mr.Bricolage internal product reference
  • In stocktrue, false, or null when the site doesn't state availability (see Limitations)
  • Rating — customer rating out of 5, when a review widget is present on the page
  • Review count — number of customer reviews, when present
  • Image URL — main product image
  • Description — product description, HTML stripped
  • Category — category from the page breadcrumb

Why this site needs a different approach

mr-bricolage.fr runs Cloudflare's interactive managed challenge on every page, including the homepage and robots.txt — a plain HTTP request gets HTTP 403 with a cf-mitigated: challenge header, no exceptions. Datacenter proxies and headless browsers get stuck in the challenge loop.

This actor drives a real, headful Google Chrome browser (not headless Chromium) through Apify's residential proxy network. That combination consistently passes the challenge where headless automation fails — the same approach used across our fleet on other Cloudflare-managed-challenge sites. It costs more per result than a plain HTTP scraper: expect higher compute and proxy usage per page than our CheerioCrawler-based DIY actors (Brico Dépôt, Bricomarché). See "How much does it cost?" below for real numbers.

How to scrape Mr Bricolage data

Search by keyword

{
"searchQuery": "peinture",
"maxResults": 50
}

Useful French search terms: "peinture" (paint), "perceuse" (drill), "carrelage" (tiles), "tondeuse" (lawnmower), "robinet" (faucet), "isolant" (insulation), "parquet" (flooring).

Scrape a brand page

{
"startUrls": [
{ "url": "https://www.mr-bricolage.fr/marques/bosch.html" }
],
"maxResults": 100
}

Note: not every /maison/...-style category link on the site is a live product grid — some are landing pages that only link to subcategories. Brand pages (/marques/{brand}.html) and search-result pages are reliably product grids; if a category URL comes back empty, fall back to searchQuery for that category's keyword instead.

Scrape specific product pages directly

{
"startUrls": [
{ "url": "https://www.mr-bricolage.fr/-adhesif-toile-10m.html" }
]
}

Default run

If you provide neither searchQuery nor startUrls, the scraper runs a default search ("peinture") so an empty input still returns data.

Input reference

FieldTypeDescription
searchQueryStringFrench keyword (e.g., "peinture", "perceuse"). Ignored if startUrls is set.
startUrlsArrayCategory, brand, search-result, or direct product page URLs (max 50).
maxResultsIntegerProduct limit (default: 50, max: 2,000 — kept low because each page load is a full headful browser navigation).
proxyConfigurationObjectResidential proxies are required, not just recommended — Cloudflare's managed challenge blocks datacenter IPs before the page even loads.

Output

[
{
"name": "ADHESIF TOILE 10M",
"brand": "ALDES",
"price": 7.20,
"currency": "EUR",
"originalPrice": null,
"ean": "3542280351610",
"sku": "AF283456",
"inStock": true,
"rating": null,
"reviewCount": null,
"imageUrl": "https://media.mr-bricolage.fr/media/catalog/product/a/f/af283456-adhesif-toile.jpg",
"description": "Assure l'etancheite de votre reseau de gaines. Permet de fixer la gaine.",
"category": "Colles et adhesifs",
"url": "https://www.mr-bricolage.fr/-adhesif-toile-10m.html",
"scrapedAt": "2026-08-21T14:30:00.000Z"
}
]

Export in JSON, CSV, Excel, XML, or RSS from the Apify dataset.

How much does it cost?

This actor drives a real headful Chrome browser through residential proxies for every page — both listing pages and each product's detail page — which costs more per result than our HTTP-based DIY scrapers.

ScenarioProductsWhat it costs
Quick keyword search10Roughly a dozen browser page loads (1 listing page + 10 detail pages)
Category scrape50Roughly 55-60 browser page loads
Larger catalog pull200Roughly 210-220 browser page loads, several listing pages of pagination

Compute and residential-proxy usage scale directly with page count, not with a flat per-run fee — size maxResults to your actual need. A run's usage cost only settles once Apify reports the run as SUCCEEDED; reading the dataset mid-run understates the eventual cost.

Can I integrate?

Pipe Mr.Bricolage data into your tools:

  • Webhooks — trigger actions when scraping finishes
  • Google Sheets — sync products and prices to spreadsheets
  • Slack / Microsoft Teams — alert on price changes or new products
  • Zapier / Make — connect to thousands of apps
  • Amazon S3 / Google Cloud — store datasets in cloud buckets
  • PostgreSQL / MySQL / BigQuery — direct database push
  • API — programmatic access from any language

Can I use it as an API?

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("studio-amba/mrbricolage-scraper").call(run_input={
"searchQuery": "peinture",
"maxResults": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['name']} - EUR {item['price']}")

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("studio-amba/mrbricolage-scraper").call({
searchQuery: "peinture",
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(`${item.name} - EUR ${item.price}`));

FAQ

Why does this actor use a headful browser instead of a plain HTTP request? mr-bricolage.fr serves Cloudflare's interactive managed challenge on every page. A real, visible Chrome browser passes that challenge reliably; headless browsers and plain HTTP requests get stuck in a redirect loop.

Does search work reliably? Yes. It calls the same /catalogsearch/result/ endpoint the site's own search box uses, so results match what a shopper sees.

Can I scrape a full category? Yes — pass a category or brand page URL (e.g. https://www.mr-bricolage.fr/maison/decoration.html) as a startUrls entry. The scraper follows pagination automatically up to maxResults.

What about store-specific pricing? Mr.Bricolage is a network of independently-run franchise stores. The catalog price shown online (and returned here) is the network's online reference price; individual physical stores can price differently and the scraper does not simulate selecting a specific store.

Why is inStock sometimes null? The site doesn't always publish an online-wide availability flag for every product — local stock is store-specific. null means "not stated," not "out of stock." Treat true/false as authoritative and null as unknown.

How does this compare to Leroy Merlin or Castorama Scraper? Same DIY vertical, different retailer. Run both to compare Mr.Bricolage against the bigger chains, or combine with our full French DIY cluster for a complete market view.

Limitations

  • All data is in French from mr-bricolage.fr
  • Requires residential proxies — the Cloudflare managed challenge blocks datacenter IPs outright
  • inStock reflects online-wide availability where the site publishes it; it is not per-store stock
  • Ratings/reviews are only populated when the site's review widget renders data for that product
  • Runs are slower and cost more per result than plain-HTTP scrapers in this cluster, because every page (listing and detail) is a full headful-browser navigation

Other DIY & hardware scrapers

Build complete European building material price intelligence with our scraper collection:

Your feedback

Running into problems or want additional features? Let us know through the actor's Apify Store page or the community forum. We maintain all our scrapers actively and prioritize fixes based on user feedback.