Halfords UK Product Scraper
Under maintenancePricing
from $0.40 / 1,000 results
Halfords UK Product Scraper
Under maintenanceSearch Halfords UK products, scrape public category listings, fetch exact product IDs, and collect normalized prices, URLs, images, and available product metadata.
Pricing
from $0.40 / 1,000 results
Rating
0.0
(0)
Developer
Dmitriy Gyrbu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Scrape Halfords UK product listings and exact product IDs into clean, normalized records for price monitoring, catalog research, ecommerce analysis, and product discovery.
The Actor has a credential-free public mode for normal buyer workflows. Search, public category URLs/paths, and exact product IDs can currently run without a Halfords SLAS secret. An optional SLAS credential enables the authenticated API path for advanced controls such as numeric category IDs and API pagination/filtering.
What you can collect
- Product IDs and names
- Current and regular/list prices when exposed by the source
- Discount price when a lower current price is visible
- Currency
- Product page URLs
- Product images
- Brand, stock status, rating, review count, category ID, and barcode when the selected source path exposes them
Missing retailer data is returned as null or omitted; the Actor does not invent unavailable values.
Supported workflows
1. Search products
Use query for keyword search.
{"query": "engine oil","limit": 10}
The credential-free public route currently uses Halfords' public HTML and is intended for the first native listing page. limit caps how many matching rows are returned.
2. Scrape a public category
category_url is the clearest option:
{"category_url": "https://www.halfords.com/motoring/engine-oils-and-fluids/engine-oil/","limit": 10}
You can also provide a public path with category_slug:
{"category_slug": "/motoring/engine-oils-and-fluids/engine-oil/","limit": 10}
3. Fetch exact products by ID
Use product_ids for one or more Halfords product/SKU IDs:
{"product_ids": ["224411"]}
In credential-free mode the Actor resolves only exact matching IDs and does not substitute a fuzzy product.
4. Authenticated API mode (advanced)
If you already have a valid Halfords SLAS client credential, provide slas_secret or the HALFORDS_SLAS_SECRET environment variable. This enables the internal API route used for numeric category_id, API pagination, sort options, filters, and richer fields where Halfords exposes them.
A SLAS secret is not required for the normal public search, public category URL/path, or exact product-ID workflows above.
Input reference
| Field | Use |
|---|---|
query | Keyword product search |
category_url | Full public Halfords category URL |
category_slug | Public Halfords category path |
product_ids | Exact product/SKU IDs |
category_id | Numeric/internal category ID; advanced authenticated route |
limit | Maximum rows to return from the selected listing/request |
page | API page number; public credential-free listing currently supports page 1 |
sort | API sort option; applies to authenticated API mode |
filters | Raw Halfords refinement filters; applies to authenticated API mode |
slas_secret | Optional advanced Halfords SLAS credential |
proxyConfiguration | Optional Apify proxy configuration |
Use one primary workflow at a time. If several selectors are supplied, the current execution priority is query → category (category_url / category_slug / category_id) → product_ids.
Output
Public credential-free rows use a compact normalized shape similar to:
{"id": "224411","name": "TotalEnergies Quartz INEO MC3 5W/30 5L","brand": null,"current_price": 33.5,"price": 33.5,"discount_price": null,"currency": "GBP","availability": null,"in_stock": null,"source_url": "https://www.halfords.com/...","url": "https://www.halfords.com/...","images": ["https://..."],"source": "halfords_public_html"}
Depending on the route and source data, authenticated results can also expose fields such as image, rating, review_count, category_id, and barcode.
Notes and limitations
- Halfords can change page markup or internal APIs without notice.
- Public HTML can expose less metadata than the authenticated API, so fields such as brand or stock state may legitimately be
null. - Credential-free search/category scraping currently targets the first native listing page; use the authenticated route when you need API pagination, sorting, or refinements.
- Numeric
category_idis an authenticated API feature. For credential-free category scraping, usecategory_urlorcategory_slug. - Direct access currently works for the public fallback. Configure
proxyConfigurationonly when your network or a future Halfords change requires it. - A genuine no-match request can finish successfully with an empty Dataset.
Disclaimer
This Actor is unofficial and is not affiliated with or endorsed by Halfords. Users are responsible for complying with applicable terms, policies, and laws.
AI, MCP and automation contract
Every successful product row is self-describing and includes record_type=product, the resolved operation (search, category, or item), retailer=Halfords, country=GB, and an ISO-8601 retrieved_at timestamp. Existing product fields remain backward compatible. The source field identifies the route that produced the row (for example halfords_public_html).
For autonomous agents, use query for discovery, then reuse an exact returned id in product_ids for deterministic item resolution. A legitimate no-match returns an empty Dataset. Access/runtime failures are not converted into fake product rows. Public HTML search can legitimately omit brand or stock fields; the Actor keeps those values null rather than guessing. Exact product pages additionally extract brand and availability when Halfords exposes them in structured product markup.
The default Dataset is the canonical machine-readable output and can be consumed directly through the Apify API, MCP integrations, or downstream automation.