Halfords Scraper: UK Car Parts, Tyres, Bikes & Prices avatar

Halfords Scraper: UK Car Parts, Tyres, Bikes & Prices

Pricing

from $22.00 / 1,000 product rows

Go to Apify Store
Halfords Scraper: UK Car Parts, Tyres, Bikes & Prices

Halfords Scraper: UK Car Parts, Tyres, Bikes & Prices

Scrape halfords.com: car parts, tyres by size, bikes and services with GBP price, sale and member price, stock, click and collect, EAN, part number, rating and category. Search or lookup, price monitoring. Export JSON, CSV or Excel.

Pricing

from $22.00 / 1,000 product rows

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

RecordsData

Halfords Scraper: UK Car Parts, Tyres and Cycling Data

Halfords Scraper is an Apify Actor that extracts products from halfords.com, the UK retailer of car parts, tyres, tools, bikes and servicing. Each row has the GBP price, sale price, member price, stock, click and collect and home delivery flags, rating, brand, EAN, part number and category, and tyres come with the size, EU label grades and season. No login, browser or proxy is needed.

Export the result as JSON, CSV, Excel, XML or HTML, or read it through the Apify API. A run of 3 results takes about 5 seconds in the cloud (median 4.6 seconds over 14 test runs).

What can you scrape from Halfords?

  • Car parts and accessories: brake discs, wiper blades, batteries, bulbs, oil, tools, car audio and more. Each row has the title, brand when Halfords states it, manufacturer part number, EAN, category path, specifications, features, description and photos.
  • Tyres, one row per size: tireSize as printed plus width, aspect ratio, rim diameter, load index, speed rating, season, wet grip, fuel efficiency, noise level, run flat, 3PMSF snow mark and the EU label id.
  • Bikes and cycling parts: bikes, parts, clothing and accessories with price, sale price and stock.
  • Services: MOT, car servicing and fitting products, with the price range of the service family.
  • Prices: selling price, list price and discount percent when on sale, member (Motoring Club) price, and the highest price of a family such as a tyre pattern.
  • Availability: orderable online, stock status, units left when Halfords shows them, click and collect, reserve in store, home delivery and mobile fitting flags.
  • Catalog categories: one row per category with its id, parent, level and the number of product pages under it.
  • Price and stock changes: with monitoring on, a product whose price or stock moved comes back with the previous price and the difference.

Why use this Halfords scraper?

  • Built for this one retailer: the actor reads the same product data the Halfords pages use, so prices, stock and tyre grades are the site's own values, not guesses.
  • Two ways to read: scan the catalog with filters, or look up exact product addresses and ids.
  • Tyre size search: Halfords lists tyres by pattern. The actor opens each pattern and returns only the sizes you asked for, such as 205/55 R16.
  • Prices in GBP: every row says GBP and GB.
  • Clean output: typed numbers, no null fillers, the same column order every run.
  • Polite by design: at most 5 requests per second, robots.txt honoured, no login.

How to scrape Halfords in four steps

  1. Create a free account at console.apify.com and open the actor.
  2. Choose Where to read from: search the catalog, or look up product addresses and ids.
  3. Add search text, categories, brands, a tyre size, a price range or other filters, and set the maximum number of items.
  4. Click Start, then download the dataset from the Storage tab.

A minimal input that returns the first 100 Michelin tyres in size 205/55 R16 that can be ordered:

{
"mode": "search",
"tyreSize": "205/55 R16",
"brands": ["Michelin"],
"inStockOnly": true,
"maxItems": 100
}

What data do you get from Halfords?

Every row has a recordType: part, tire or category. The dataset has 83 keys (82 data fields plus error). Fields that do not apply, or that the page does not give, are left out.

FieldDescription
recordType, sourceSite, country, listingType, vehicleTypeRow type, halfords.com, GB, sale or service, and part, tire, bicycle or service
title, listingId, url, imageUrlProduct name, Halfords product id, product address, main photo
productType, masterId, variantCount, variantsitem, variant, master, bundle or set; the family a size belongs to; number of sizes or options; the list of them when asked for
brand, partNumber, ean, condition, countryOfOriginBrand, manufacturer part number, barcode, new, used or ex-display, country code
categoryPath, categoryId, parentCategoryId, level, productCountCategory trail and id; for category rows the parent, depth and product pages below it
price, currency, listPrice, discountPercent, onSale, memberPrice, priceMaxSelling price, GBP, price before the sale, discount percent, sale flag, member price, highest price of a family
available, stockStatus, stockQuantity, minOrderQuantityOrderable online, in stock, out of stock, pre-order or backorder, units left when shown, minimum quantity
homeDelivery, clickAndCollect, reserveInStore, mobileFittingFulfilment options Halfords offers for the product
rating, reviewCount, badges, minimumAgeAverage rating and number of reviews, promo badges, age limit
tireSize, tireWidthMm, tireAspectRatio, rimInches, loadIndex, speedRatingTyre size label and its numbers, load index, speed rating
tireSeason, wetGrip, fuelEfficiency, noiseDb, noiseClass, tireClass, euLabelIdSeason, EU label grades, noise, tyre class, EU label id
extraLoad, runFlat, iceGrip, threePeakSnow, directional, asymmetric, electricVehicleTireTyre features
tireSegment, tirePattern, vehicleCategories, approvedForBudget or premium segment, pattern name, car, van or 4x4, vehicle makers that approve it
description, features, specifications, images, imageCount, videoUrlDescription text, feature bullets, specification table, photo links, video link
publishedAt, updatedAtDate the product went on sale, and the last-modified date in the Halfords sitemap
previousPrice, priceChange, priceChangePct, changeTypeMonitoring: earlier price, difference, percent, change label
sellerName, sellerUrl, isPrivateSeller, scrapedAtHalfords, its site, false, time of the read

Sample output

A real part row for a product on sale:

{
"title": "Shimano XT PD-T8000 MTB SPD Trekking Pedals",
"recordType": "part",
"listingId": "344457",
"url": "https://www.halfords.com/cycling/pedals-pegs/shimano-xt-pd-t8000-mtb-spd-trekking-pedals-344457.html",
"sourceSite": "halfords.com",
"country": "GB",
"listingType": "sale",
"vehicleType": "part",
"productType": "item",
"partNumber": "PDT8000",
"ean": "4524667749493",
"brand": "Shimano",
"condition": "new",
"categoryPath": ["Cycling", "Bike Parts", "Pedals"],
"price": 79.99,
"currency": "GBP",
"listPrice": 99.99,
"discountPercent": 20,
"onSale": true,
"available": true,
"stockStatus": "in stock",
"stockQuantity": 10,
"homeDelivery": true,
"clickAndCollect": true,
"reserveInStore": false,
"rating": 5,
"reviewCount": 3,
"badges": ["Online Exclusive", "Deal"],
"countryOfOrigin": "MY",
"publishedAt": "2016-12-06",
"updatedAt": "2026-09-24",
"sellerName": "Halfords"
}

A real tire row (description and photos shortened):

{
"title": "Avon WT7 (205/55 R16 91T)",
"recordType": "tire",
"listingId": "4182031",
"vehicleType": "tire",
"productType": "variant",
"masterId": "wt7",
"brand": "Avon",
"price": 149.99,
"currency": "GBP",
"memberPrice": 142.49,
"available": false,
"stockStatus": "out of stock",
"clickAndCollect": true,
"mobileFitting": true,
"tireSize": "205/55 R16",
"tireWidthMm": 205,
"tireAspectRatio": 55,
"rimInches": 16,
"loadIndex": 91,
"speedRating": "T",
"tireSeason": "Winter",
"wetGrip": "B",
"fuelEfficiency": "E",
"noiseDb": 71,
"tireClass": "C1",
"iceGrip": true,
"threePeakSnow": false,
"vehicleCategories": ["car"],
"variantCount": 25
}

How the filters work

  • Search text is matched against the product address, which holds the brand, the product name, the category folders and the product id. A word that is only in the description, the part number or the EAN is not found. To read a product by its id, use mode Lookup.
  • Categories take a folder such as cycling/bike-parts or motoring/car-parts/brakes, or a full halfords.com category address. Everything below the folder is included, and an unknown folder returns a free error row.
  • Brands use the brand field. Halfords leaves the brand empty on many car parts (for example Bosch brake discs), so when it is empty the first words of the product name stand in.
  • Tyre size accepts 205/55 R16, 205/55 or R16. The sitemap lists only a few sizes of each tyre pattern, so the actor opens the pattern page and reads every matching size (two requests per row).
  • Price range, in stock only, on sale only and minimum rating are checked on the product page, so each candidate page is read. Combine them with a category, brand or search text to keep the run short.
  • Updated since uses the last-modified date of each page in the Halfords sitemap.
  • Maximum items counts every row. Maximum scan time (default 900 seconds) stops a long scan and keeps the rows found.

Monitor Halfords price and stock changes

Switch on Only new items (monitor) and the actor remembers every product it delivered in a named key-value store of your own account (halfords-seen). Scheduled runs of the same search return only products it has not delivered before; a second run with nothing new returns 0 rows and charges nothing. Add Also return price and stock changes and a product whose price or stock changed comes back with previousPrice, priceChange, priceChangePct and changeType (price-drop, price-increase, out-of-stock or back-in-stock).

How does it compare with other options?

On 2026-10-23 the Apify Store had two other actors for halfords.com. They publish 16 and 26 fields per product, with the price, brand, EAN, stock flag, rating and category. This actor returns up to 83 columns and adds what they do not publish: tyre size numbers and EU label grades, member price, list price and discount, click and collect, home delivery and mobile fitting flags, stock quantity, the sizes of a tyre pattern, services, category rows and built-in price monitoring.

Halfords ScraperA generic e-commerce scraper
Tyre sizesOne row per size with width, aspect ratio, rim and EU label grades as numbers and lettersOne item with the size list as text
PricesPrice, list price, discount, member price and price rangeUsually one price
FulfilmentClick and collect, reserve in store, home delivery, mobile fittingNot part of a generic page layout
FiltersCategory, brand, tyre size, price, stock, sale, rating, update dateDepends on the tool
MonitoringBuilt in, with previous price and type of changeUsually left to you

The actor reads public product pages without logging in, at a paced rate (at most 5 requests per second, slower if the site signals a block), and it follows the robots.txt of halfords.com. It does not use the site search, the basket or the registration lookup, which robots.txt disallows. It collects public product data only, no personal data, and never reads reviewer names. A retailer catalog can be protected by copyright and database rights, so check that your use of the data is allowed before you rely on it.

  • No vehicle fitment. Halfords shows which parts fit a car only after a registration number is entered, and robots.txt disallows those pages, so the rows carry no fitment list.
  • Search words are checked against the product address. A product whose address lacks the word can be missed.
  • Narrow page filters read many pages. A product page is about 1.3 MB and the actor reads up to 5 pages per second. The whole catalog has about 65,000 pages, so a full scan does not fit in one run. Slice by category, brand or tyre size.
  • Tyre stock changes during the day. available and stockQuantity describe the moment of the read.

Use with AI agents (MCP)

Connect the Apify MCP server to Claude, Cursor or another MCP client and this actor appears as a tool: https://mcp.apify.com?tools=RecordsData/halfords-scraper.

Example prompt: "List winter tyres in size 205/55 R16 on halfords.com with price, wet grip grade and stock." The agent sends { "mode": "search", "tyreSize": "205/55 R16", "maxItems": 50 } and filters the rows by tireSeason.

Run it from code

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('RecordsData/halfords-scraper').call({
mode: 'search',
categories: ['cycling/bike-parts'],
onSaleOnly: true,
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].title, items[0].price, items[0].listPrice);

Frequently Asked Questions

Can I scrape Halfords prices and stock?

Yes. Every product row has the GBP selling price, the list price and discount when on sale, the member price when Halfords shows one, the orderable flag and, for many products, the number of units left. Run it on a schedule with the monitor on to track changes from one run to the next.

Can I get Halfords tyres by size?

Yes. Tyres come back as one row per size, with tireSize as printed and numeric width, aspect ratio and rim diameter, plus load index, speed rating, season and the EU label grades. Set Tyre size to 205/55 R16, 205/55 or R16.

Does it return which parts fit my car?

No. Halfords shows fitment only after a vehicle registration is entered, and the site blocks those pages for robots, so the actor does not read them. Search by part type, brand or category instead.

Why is the brand missing on some products?

Halfords leaves the brand empty on many car parts. The actor leaves brand out instead of guessing, and the Brands filter then uses the first words of the product name.

Do I need a proxy, a login or an API key?

No. Halfords answers ordinary browser-style requests from Apify servers, with no blocked request in the test runs. A proxy setting exists but is off by default, and the actor does not need an account on the site. You only need an Apify account to start runs.

The actor reads publicly visible product pages and no personal data, and it follows robots.txt. Catalog data can be protected by copyright and database rights, so you are responsible for checking that your use is allowed before you rely on it. Contact: contact.punkrecordsdata@gmail.com.

How many products can I get in one run?

The sitemap lists about 65,000 pages. A run is bounded by Maximum items and Maximum scan time, and the actor reads up to 5 pages per second, so slice a large export by category, brand or tyre size.

How do I get only products on sale?

Switch on On sale only. The filter keeps products whose list price is above the selling price. Add a category to keep the scan short.

How do I get only new products or changes since my last run?

Switch on Only new items, and add Also return price and stock changes to also receive products whose price or stock changed. The memory is kept in your own key-value store under the monitor name, and Forget what was seen clears it.

What happens when the search finds nothing or the input is wrong?

A search with no matches ends the run as succeeded with no rows and no charge. A wrong input, such as a minimum price above the maximum, an unknown category or an unknown product id, returns one free error row with the reason, so a typo never costs you money.

Support

Questions, a missing field or a feature request: contact.punkrecordsdata@gmail.com. Reviews on the actor page help other people find it.