Castorama.fr icon

Castorama.fr

Scrape Castorama.fr DIY and home-improvement products by keyword, category, or URL. Extract prices, original prices, promotions, seller details,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Castorama.fr at a glance

Castorama.fr is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes title, change type (incremental mode), brand, price and was, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Ecommerce, Automation, Developer Tools
Region
Europe
Pricing
$1.80 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
23 options

Scrape Castorama.fr DIY and home-improvement products by keyword, category, or URL. Extract prices, original prices, promotions, seller details, categories, specifications, ratings, and customer reviews. Incremental mode tracks product and price changes over time.

What Castorama.fr can do

  • Two ways to find products. Search by keyword or category name, or paste product, category and search-result links directly, mixed freely in one run.
  • A matching keyword resolves like the site's own search. Typing a term such as "perceuse" walks the full matching category and its facet set, exactly like typing into the site's own search box, not just a flat keyword match.
  • Genuine promotion detection. isOnSpecial, originalPrice and the discount amount are only ever set when the site's own was-price for that item is genuinely higher than the current price, never a marketplace price spread.
  • First-party reviews. Product detail pulls the site's own embedded review data (author, title, body, rating, date); no third-party review host is involved.
  • Seller-aware. Every record marks whether it was sold directly by Castorama or by a marketplace partner, with that partner's identity.
  • Built for schedules. Incremental mode returns only new and changed products on recurring runs, with expired and reappeared tracking once you turn it on, plus a resume option to continue one interrupted crawl.

Choose what to collect

These inputs let you configure Castorama.fr - Products, Prices & Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredChoose 'search' for keywords/categories with filters, or 'url' to scrape pasted Castorama France links, product links, category links and search-result links are all accepted.

Choices: search, url

queriesarrayOne or more keywords (e.g. 'perceuse', 'peinture blanche mate') or Castorama category page links, each searched/walked separately. Left untouched, the three examples below are scraped. A category link ends in cat_id_.cat, for example https://www.castorama.fr/outillage/outillage-electroportatif/perceuse-visseuse-perceuse-a-percussion-et-tournevis-sans-fil/cat_id_3796.cat
brandstringOptional. Only keep products of this brand, matched against Castorama's own 'Marque' facet (e.g. 'Bosch Professional', 'Makita', 'DeWalt'). A name that matches no listed brand skips that search or link with a warning.
sellerCastoramaOnlybooleanOptional. Exclude marketplace (third-party seller) offers, Castorama's own 'Vendu par = Castorama' facet.
minPriceintegerOptional. Only keep products priced at or above this amount.
maxPriceintegerOptional. Only keep products priced at or below this amount.
minRatingstringOptional. Only keep products whose average rating is at least this many stars, Castorama's own 'Évaluation' facet.

Choices: 0, 3, 4, 5

Show 16 more inputs
More input fields
InputWhat it controls
urlsarrayOnly used when mode = url, ignored in search mode. Mix freely: product pages ending in .prd, category pages ending in cat_id_.cat, or search-result links like /search?term=.... Page (?page=N), facet (e.g. ?Marque=Bosch+Professional) and sort (?sort=...) parameters in a link are honoured. Multiple entries supported.
onPromotionOnlybooleanOptional. Keep only products currently flagged with a real promotion (a genuine prior price for the same item), Castorama's own 'Type d'offre = Promotion' facet.
inStockOnlybooleanOptional. Keep only products the site currently marks as purchasable online. Applied client-side against each product's own status (Castorama's in-store stock facet needs a postal code and is not covered).
sortBystringHow to order results, Castorama's own sort options.

Choices: relevance, price_asc, price_desc, rating_desc, newness, best_seller

fetchDetailsbooleanCollect each product's full detail: description, technical specifications, and customer reviews (author, title, body, rating, date). Turn off for a faster, lighter run that returns only the listing-level fields (title, brand, price, was-price, seller, breadcrumb, rating summary).
maxItemsintegerMaximum number of products to return across the whole run. This is the run's cap. 0 means the hard limit of 100000 products.
maxPagesintegerMaximum result pages walked per keyword / category / link. 0 = unlimited (walk all pages), the run then stops only at Max products or when a page repeats no new products.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large crawl of products without returning or charging for products already collected there. For recurring daily monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns all matching products as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED products. A product counts as UPDATED when any of its returned fields changes (price, promotion, stock, rating, review count, title, images, description, specifications and so on); the scrape timestamp and the review texts list are never compared, and you can exclude more fields below. Turn on "Emit unchanged" or "Emit expired" only when you also want those products returned (and billed). State is kept separately for each search/URL and filter/detail setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/URL and filter/detail settings, different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max products capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayField names that must NOT make a product count as UPDATED, for example images or description. Use a dotted path for a nested field, e.g. specifications.value. The fields stay in the output; they are just not compared and never listed in changedFields. The scrape timestamp and the review texts list are always ignored. Only used when Incremental mode is on.
mcpConnectorsarrayOptionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

titleTitle
changeTypeChange type (incremental mode) (text)
brandBrand
pricePrice
originalPriceWas
discountPercentageDiscount %
isOnSpecialOn promotion (boolean)
sellerNameSeller
soldByCastoramaSold by Castorama (boolean)
ratingRating
reviewCountReviews
eanEAN
Show 11 more fields
productIdProduct ID
categoryCategory
imageImage (image)
urlURL (link)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
descriptionDescription
specificationsSpecifications (array)
imagesImages (array)
reviewsreviews

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "productId": "3666294006226",
  "ean": "3666294006226",
  "title": "Perceuse Visseuse 20V Exemple + 2 Batteries 1,5 Ah + Chargeur rapide + Malette",
  "brand": "Nemura",
  "price": 79.99,
  "currency": "EUR",
  "originalPrice": 139.99,
  "discountAmount": 60,
  "discountPercentage": 43,
  "isOnSpecial": true,
  "promotionLabel": "Promotion",
  "sellerId": "2131",
  "sellerName": "Vendeur Partenaire Exemple",
  "soldByCastorama": false,
  "category": "Visseuse dévisseuse",
  "categoryPath": [
    {
      "name": "Visseuse dévisseuse",
      "path": "/visseuse-devisseuse/cat_id_0003519.cat"
    },
    {
      "name": "Perceuse visseuse",
      "path": "/perceuse-visseuse/cat_id_0003518.cat"
    }
  ],
  "availability": {
    "status": "Available",
    "purchasable": true,
    "homeDelivery": "Available",
    "clickAndCollect": true,
    "inStore": false
  },
  "images": [
    "https://media.castorama.fr/is/image/Castorama/example.jpg"
  ],
  "image": "https://media.castorama.fr/is/image/Castorama/example.jpg",
  "url": "https://www.castorama.fr/mkp/example/3666294006226_CAFR.prd",
  "specifications": [
    {
      "name": "Marque",
      "value": "Nemura"
    },
    {
      "name": "Tension (en V)",
      "value": "20V"
    }
  ],
  "description": "Perceuse visseuse sans fil 20V avec deux batteries, chargeur rapide et malette de rangement.",
  "rating": 4.75,
  "reviewCount": 4,
  "reviews": [
    {
      "author": "Exemple",
      "title": "Efficace",
      "body": "Facile à utiliser.",
      "rating": 5,
      "date": "2026-07-08T15:18:22.000+00:00"
    }
  ],
  "searchMode": "search",
  "scrapedAt": "2026-01-01T00:00:00Z"
}

Ways to use this data

  • Price and promotion monitoring: track price, was-price and promotion status across a brand or category to catch markdowns as they go live.
  • Marketplace and assortment research: see which products Castorama sells directly versus through marketplace partners, and compare partner pricing.
  • Catalog and content teams: pull descriptions, technical specifications and images to enrich a product database.
  • Review and reputation analysis: collect customer ratings and reviews per product to spot quality issues or standout items.
  • Recurring stock and price feeds: schedule the actor daily with Incremental mode to feed a price-comparison site or alerting tool with only what changed.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Castorama.fr return?

The documented output for Castorama.fr includes title, change type (incremental mode), brand, price, was, discount %, on promotion and seller. Availability of each field depends on the source page and the selected mode.

How much does Castorama.fr cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only NEW and UPDATED products by default; unchanged products are not billed unless Emit unchanged is on. EXPIRED is returned only on a run that has Emit expired on and scans the whole tracked search; REAPPEARED is then returned on any later run that finds a product an earlier such run had marked expired.

Why did a run return fewer products than expected, or nothing at all?

Filters (brand, price, rating, promotion, in-stock) narrow the result set, sometimes to zero: try broadening them or check the links you provided. The storefront's edge can also intermittently refuse a share of requests, in which case the actor retries automatically on a fresh connection. If no page loads at all, the run fails with a clear message instead of finishing as an empty success (see the next question).

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Castorama.fr?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.