Ferguson Product Catalog Scraper
Pricing
Pay per event
Ferguson Product Catalog Scraper
🛒 Extract Ferguson product listings, IDs, ratings, availability, compliance badges, documents, package data, and technical specifications.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Extract structured Ferguson product catalog data from category and product pages.
Collect product names, brands, canonical URLs, Ferguson part and item numbers, manufacturer IDs, ratings, availability, compliance badges, documents, and technical specifications.
Use the results for procurement research, catalog enrichment, assortment monitoring, manufacturer intelligence, and recurring product feeds.
The Actor uses public, anonymous Ferguson pages. Account-specific and call-only pricing is not included.
What does Ferguson Product Catalog Scraper do?
The Actor accepts public Ferguson category and product URLs.
For a category URL, it paginates through product cards until maxItems is reached.
For a product URL, it returns one detailed product record.
Enable includeDetails to enrich category results from each product page.
Every record includes a canonical Ferguson URL rather than a translation-wrapper URL.
The scraper extracts one consistent entity type: Ferguson products.
Why use this Ferguson scraper?
Ferguson pages contain useful catalog attributes in several page sections.
This Actor combines those attributes into export-ready JSON records.
- 🧾 Capture Ferguson and manufacturer identifiers.
- 📦 Monitor public pickup and shipping messages.
- ✅ Collect compliance badges and technical properties.
- 📄 Discover specification and installation documents.
- 🔁 Run the same catalog workflow on a schedule.
- 🔗 Export to JSON, CSV, Excel, XML, or RSS through Apify.
You do not need to maintain selectors, pagination logic, storage, or API infrastructure.
Who is it for?
Plumbing and HVAC distributors
Compare public assortments and normalize manufacturer references.
Manufacturers
Audit how products and compliance attributes appear in distribution catalogs.
Contractors and procurement teams
Build shortlists using item numbers, availability messages, documents, and specifications.
Catalog intelligence vendors
Create recurring structured feeds for enrichment and change detection.
Data engineers
Connect a Ferguson product extractor to warehouses, sheets, and internal applications.
What Ferguson data can I extract?
| Field | Meaning |
|---|---|
url | Canonical Ferguson product URL |
sourceUrl | Category or product input that produced the record |
brand | Product brand |
title | Product title |
partNumber | Ferguson part number |
itemNumber | Ferguson item number |
manufacturerPartNumber | Manufacturer part number |
rating | Public customer rating when displayed |
imageUrl | Main product image URL |
availability | Public shipping or pickup messages |
complianceBadges | Displayed compliance labels |
colorFinish | Selected color or finish |
packageQuantity | Each and inner-pack information |
breadcrumbs | Product catalog hierarchy |
description | Product-detail bullets |
documents | Specification and installation links |
specifications | Flexible technical key-value properties |
scrapedAt | ISO timestamp of extraction |
Fields that are not present on a source page are omitted rather than filled with misleading values.
How to scrape Ferguson products
- Open the Actor in Apify Console.
- Add one or more Ferguson category or product URLs.
- Choose the maximum number of products.
- Decide whether detailed enrichment is needed.
- Click Start.
- Preview the dataset while the run is active.
- Export the finished dataset in your preferred format.
Start with 24 category records to validate your workflow cheaply.
Increase the limit for scheduled assortment jobs.
Input
{"startUrls": [{"url": "https://www.ferguson.com/category/bathroom-plumbing/bathroom-faucets/"}],"maxItems": 24,"includeDetails": false}
startUrls
Provide Ferguson category URLs, product URLs, or a mixture of both.
URLs from www.ferguson.com are normalized before processing.
maxItems
Sets a global maximum across all start URLs.
The accepted range is 1 to 10,000 products.
includeDetails
Keep this disabled for fast catalog-card extraction.
Enable it to add descriptions, documents, package data, breadcrumbs, compliance labels, and specifications.
Detail enrichment performs one additional request per product and therefore takes longer.
Output example
{"url": "https://www.ferguson.com/product/example/7806070.html","sourceUrl": "https://www.ferguson.com/category/kitchen-plumbing/","brand": "Waterstone","title": "Model No. 9800 Single Handle Pull Down Kitchen Faucet in Polished Nickel","partNumber": "W9800PN","itemNumber": "7806070","manufacturerPartNumber": "9800-PN","rating": 4.5,"availability": ["Shipping available"],"colorFinish": "Polished Nickel","complianceBadges": ["Lead Law Compliant", "ADA Compliant"],"documents": [{"name": "SPECIFICATION","url": "https://fergusonprod.a.bigcontent.io/v1/static/example"}],"specifications": {"Application": "Residential","Flow Rate": "1.75 gpm","Material": "Brass"},"scrapedAt": "2026-07-13T00:00:00.000Z"}
The exact attributes depend on the selected Ferguson product.
Category mode versus product mode
Category mode is best for broad assortment discovery.
It returns product identity, IDs, ratings, availability, badges, images, and URLs efficiently.
Product mode is best for SKU enrichment.
A product URL automatically returns detailed page fields.
When category mode uses includeDetails: true, each category record is enriched to the same detailed shape.
How much does it cost to scrape Ferguson products?
The Actor uses pay-per-event pricing: $0.005 per run plus one product event for each record saved. Product rates decrease with your Apify plan:
| Apify plan | Price per saved product | 20-product total | 100-product total | 1,000-product total |
|---|---|---|---|---|
| Free | $0.000066050 | USD 0.006321 | USD 0.011605 | USD 0.071050 |
| Bronze | $0.000057434 | USD 0.006149 | USD 0.010743 | USD 0.062434 |
| Silver | $0.000044799 | USD 0.005896 | USD 0.009480 | USD 0.049799 |
| Gold | $0.000034461 | USD 0.005689 | USD 0.008446 | USD 0.039461 |
| Platinum | $0.000022974 | USD 0.005459 | USD 0.007297 | USD 0.027974 |
| Diamond | $0.000016082 | USD 0.005322 | USD 0.006608 | USD 0.021082 |
Totals include the $0.005 start event. A product event is charged only after a product record is saved. The Apify Console remains the source of truth for current rates.
Free-plan estimate: if all $5 of monthly platform credits were available for this Actor, about 791 default 20-product runs (15,820 products) would fit at the Free rate. Actual capacity is lower because Actor compute and any other platform usage draw from the same credits. Larger runs spend proportionally less on start events.
Availability and pricing limitations
Availability reflects only the public message rendered by Ferguson at scrape time.
Local inventory can vary by location and selected store.
Treat availability as a monitoring signal, not a stock reservation.
The Actor deliberately excludes account-specific, negotiated, and call-only pricing.
It does not log in, add items to a cart, or impersonate an account holder.
Data quality tips
- Use canonical category pages rather than navigation or campaign URLs.
- Keep
includeDetailsoff when IDs and URLs are sufficient. - Enable enrichment when specifications or documents are required.
- Schedule comparable inputs at consistent times.
- Use
itemNumberas a stable key for dataset joins. - Retain
scrapedAtwhen measuring changes. - Expect specification names to vary by product family.
Scheduling a Ferguson catalog monitor
Create an Apify schedule after a successful run.
Choose a daily, weekly, or monthly cadence based on assortment volatility.
Store each run in a named dataset or send it to your destination.
Compare records by itemNumber or canonical url.
Alert on added products, removed products, changed availability, or specification differences.
Apify webhooks can start the downstream comparison automatically.
Integrations
Google Sheets
Send fresh records to a spreadsheet used by buyers or category managers.
Airtable
Maintain a searchable SKU and document catalog.
Slack and email
Post notifications when a scheduled comparison finds catalog changes.
Snowflake, BigQuery, and warehouses
Load normalized product rows into procurement or product intelligence models.
Zapier and Make
Trigger no-code workflows when a run finishes.
Webhooks
Deliver run and dataset events to your own API.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/ferguson-product-catalog-scraper').call({startUrls: [{ url: 'https://www.ferguson.com/category/bathroom-plumbing/bathroom-faucets/' }],maxItems: 100,includeDetails: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use environment variables for API tokens.
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/ferguson-product-catalog-scraper').call(run_input={'startUrls': [{'url': 'https://www.ferguson.com/category/bathroom-plumbing/bathroom-faucets/'}],'maxItems': 100,'includeDetails': False,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Install the official apify-client package before running the example.
API usage with cURL
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~ferguson-product-catalog-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://www.ferguson.com/category/bathroom-plumbing/bathroom-faucets/"}],"maxItems":20,"includeDetails":false}'
Read the resulting dataset through the run's defaultDatasetId.
Use with Apify MCP
Connect AI assistants through the actor-scoped Apify MCP endpoint:
https://mcp.apify.com?tools=automation-lab/ferguson-product-catalog-scraper
Claude Code setup
Register the remote HTTP server from a terminal:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/ferguson-product-catalog-scraper"
Claude Desktop, Cursor, and VS Code setup
Add this remote server to the client's MCP JSON configuration, save it, and restart or reload the client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/ferguson-product-catalog-scraper"}}}
The client will prompt you to authenticate with Apify when it first connects. Once connected, try these actor-specific prompts:
- “Scrape 50 Ferguson bathroom faucet products and summarize brands.”
- “Extract the technical specifications and documents for this Ferguson product URL.”
- “Compare availability fields in my newest Ferguson dataset with the previous run.”
Keep product limits low while designing a prompt-driven workflow.
Error handling and troubleshooting
The Actor stops with a clear error when Ferguson returns a blocked or unexpectedly short response.
A source with no recognizable product cards is logged and skipped safely.
Results already saved remain available if a later source fails.
Why are some detail fields missing?
Not every Ferguson product exposes the same sections.
Enable includeDetails and verify the field exists on the public product page.
Why is a run slower with enrichment enabled?
Each product requires its own detail-page request.
Disable enrichment when catalog-card fields meet your needs.
Why do availability messages differ later?
Ferguson inventory and location context can change between requests.
Use scheduled snapshots rather than treating one scrape as permanent inventory.
Responsible use and legality
This Actor extracts publicly accessible catalog information.
Users are responsible for complying with applicable law, contractual obligations, and Ferguson's terms.
Do not use the Actor to collect personal data or bypass account access controls.
Use conservative run sizes and schedules.
Do not represent public availability as guaranteed inventory.
Account-specific and call-only prices are outside this Actor's scope.
FAQ
Does it require a Ferguson login?
No. The Actor uses anonymous public product and category pages.
Can it scrape a single product?
Yes. Supply a Ferguson product URL in startUrls.
Can it scrape multiple categories?
Yes. Add multiple category URLs and set one global maxItems limit.
Does it extract prices?
No. Public pages can show call-only or account-dependent pricing, so v1 omits prices.
Can I download PDF documents?
The dataset provides document names and canonical links. Your downstream workflow can download allowed files.
Does it support CSV and Excel?
Yes. Export the Apify dataset in CSV, Excel, JSON, XML, or other supported formats.
How do I deduplicate products?
Use itemNumber or canonical url as the key.
Related scrapers
Explore other catalog and ecommerce tools from automation-lab.
Combine this Actor with URL monitoring, document processing, or generic ecommerce workflows in the same Apify account.
Only automation-lab Actor links are recommended here so ownership and support remain clear.
Support
Open an issue from the Actor's Apify page when a valid Ferguson URL does not return expected public fields.
Include the input URL, run ID, and a short description of the missing data.
Do not include account credentials or private procurement information.
Start extracting Ferguson catalog data
Use the prefilled bathroom faucet category for a small first run.
Review the dataset schema.
Then increase maxItems, enable detail enrichment if needed, and connect the output to your recurring procurement or catalog-intelligence workflow.