Carwow UK Scraper
Rohit · @rohittp
Collect used-car listings, pricing, and specs from carwow.co.uk

About
Carwow UK Scraper

Collect used-car listings from carwow.co.uk, the UK site where drivers compare dealer offers and buy vehicles online.
Each run returns structured fields—price, specification, dealer details, optional equipment, and more. Results land in a dataset you can pull through the REST API or export as JSON, CSV, Excel, and other formats for your own apps and reports.
What data can I extract from Carwow with a web scraper
This scraper returns the following Carwow listing fields:
Why scrape Carwow.co.uk
Carwow aggregates offers from a wide dealer network and is widely used for price comparison in the UK. Regular exports can help you:
- Compare vehicle prices across dealers
- Monitor dealer inventory and availability
- Research market values for specific models
- Track price trends and market changes
- Analyze equipment and specification data
- Build automotive databases and comparison tools
Input
Configure the run with these optional fields:
startUrls(array, optional) - URLs to start scraping from. If provided, filters are ignored.make(string, optional) - Car make (e.g., 'audi', 'bmw')model(string, optional) - Car model slug (e.g., 'a1', '3-series')priceMin(integer, optional) - Minimum price in GBPpriceMax(integer, optional) - Maximum price in GBPmileageMin(integer, optional) - Minimum mileagemileageMax(integer, optional) - Maximum mileageyearMin(integer, optional) - Minimum registration yearyearMax(integer, optional) - Maximum registration yearfuelType(array, optional) - Fuel types (petrol, diesel, hybrid, electric)transmission(array, optional) - Transmission types (automatic, manual)bodyType(array, optional) - Body types (hatchback, saloon, estate, suv, etc.)maxItems(integer, optional) - Maximum number of listings to scrapeproxyConfiguration(object, optional) - Proxy settings
Example with filters:
{
"make": "audi",
"priceMax": 25000,
"fuelType": ["petrol", "hybrid"],
"transmission": ["automatic"],
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": true
}
}
Example with startUrls:
{
"startUrls": [
{
"url": "https://quotes.carwow.co.uk/stock_cars?vehicle_state_group=used"
}
],
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": true
}
}
Output
Each scraped listing is stored as one row in the run dataset. Download the full dataset as JSON, JSONL, HTML table, CSV, Excel, or NDJSON.
Example of the output format:
{
"url": "https://quotes.carwow.co.uk/deals/bcb1c51203ea3a4b55aac73213440a66",
"make": "mini",
"model": "electric",
"year": 2022,
"price": "£13,933",
"mileage": 37532,
"fuel_type": "electric",
"transmission": "automatic",
"body_type": "hatchback",
"color": "Special Metallic - Midnight black ll",
"doors": 3,
"seats": 4,
"location": "Carsa Mountsorrel",
"co2_emissions": "CO2 0 g/km",
"top_speed": "93 mph",
"insurance_group": "22E",
"boot_space_seats_up": "211 litres",
"boot_space_seats_down": "731 litres",
"efficiency": "4.0 miles/kWh",
"battery_range": "143 miles",
"acceleration": "7.3 secs",
"engine_power": "184 bhp",
"registration": "BG72SRU",
"equipment": {
"Driver Convenience": [
"Cruise control",
"Rear view camera",
"Rear park distance control"
],
"Interior Features": [
"Ambient lighting",
"3 stage heated front seats",
"2 zone automatic air conditioning"
],
"Passive Safety": [
"6 Airbags - front, side, head and seat belt tensioners",
"Anti-lock braking system (ABS)",
"Electronic parking brake"
]
}
}
Additional fields you may see
- engine_size: Engine displacement (e.g., "2 litres")
- equipment: Categorized lists of vehicle features and equipment
- Categories include: Driver Convenience, Interior Features, Exterior Features, Passive Safety, Engine/Drivetrain/Suspension, Entertainment, Packs, Wheels, Security, Trim
- safety_rating: Vehicle safety rating when available
- battery_range: Electric vehicle range (for EVs)
- efficiency: Fuel efficiency or electric efficiency (miles/kWh)
FAQ
- What data does the Carwow UK Scraper collect?
- Each listing includes make and model, price, year, mileage, fuel and transmission type, body style, dealer location, registration, equipment groups, and many specification fields (CO2, insurance group, boot space, EV range when applicable, and the listing URL).
- How do I run it on Bytewells?
- Rent the Actor from this Store page (or start a trial when one is offered), open the Input tab, set filters or start URLs, then run from the console. You can also start runs with your Bytewells API token against https://bytewells.com/api using the same Actor ID shown in the API section.
- When should I use start URLs instead of filters?
- Use start URLs when you already have a Carwow search or stock page URL and want to scrape exactly that result set. Use make, model, price, mileage, year, fuel, transmission, and body filters when you want the scraper to build the search for you. If start URLs are set, filter fields are ignored.
- What does the monthly price cover?
- The flat monthly rental unlocks the Actor for your account for that billing period. Compute for each run is billed separately from your Bytewells credit balance. You still need enough credit for the runs you start.
- Do I need proxies?
- Many runs work without proxies. For heavier volume or if Carwow rate-limits your runs, enable platform proxies or supply your own in the proxy configuration field. Residential proxies are often the most reliable for marketplace sites.
- How do I get the results?
- Finished runs write rows to a dataset attached to the run. Download it from the run page or fetch items through the API. Supported export formats include JSON, JSONL, CSV, Excel, HTML table, and NDJSON.
- Is there a trial?
- This listing includes a short trial period when shown on the Store page. During the trial you can test the Actor before the monthly rental applies. Check the pricing box on this page for the current trial length.
- Are there limits on how many cars I can scrape?
- Set maxItems to cap how many listings a run collects. Leave it unset or set it to zero to fetch all results matching your search, subject to what Carwow returns and your compute budget.
Input
Preview of the input form. Rent the Actor to fill it in and start runs from the console.
Fields
startUrlsURLs to start scraping from.
makeCar make (e.g., 'audi', 'bmw').
modelCar model (e.g., 'a1', '3-series').
priceMinMinimum price in GBP.
priceMaxMaximum price in GBP.
mileageMinMinimum mileage.
mileageMaxMaximum mileage.
yearMinMinimum registration year.
yearMaxMaximum registration year.
fuelTypeSelect fuel types.
transmissionSelect transmission types.
bodyTypeSelect body types.
maxItemsMaximum number of items to scrape. If not specified or 0, all results will be fetched.
proxyConfigurationSelect proxies to be used by your crawler.
API
Bytewells speaks the Apify API. Existing integrations keep working: point apify-client at https://bytewells.com/api and use your Bytewells API token (Console → Settings → API access). The Actor ID is rohittp/carwow-uk-scraper (or rohittp~carwow-uk-scraper in URLs).
JavaScript · apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.BYTEWELLS_TOKEN,
baseUrl: 'https://bytewells.com/api',
});
const input = {
"startUrls": [
{
"url": "https://quotes.carwow.co.uk/stock_cars?cross_domain=true&locked_filters%5Bvehicle_state_group%5D=used&vehicle_state_group=used&sort=recommended&vehicle_type=car&deal_type_group=cash&brand_slug=audi&vehicle_fuel_category%5B%5D=hybrid&vehicle_transmission_category%5B%5D=automatic"
}
],
"maxItems": 10,
"proxyConfiguration": {
"useApifyProxy": false
}
};
const run = await client.actor('rohittp/carwow-uk-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Python · apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["BYTEWELLS_TOKEN"], api_url="https://bytewells.com/api")
run_input = {
"startUrls": [
{
"url": "https://quotes.carwow.co.uk/stock_cars?cross_domain=true&locked_filters%5Bvehicle_state_group%5D=used&vehicle_state_group=used&sort=recommended&vehicle_type=car&deal_type_group=cash&brand_slug=audi&vehicle_fuel_category%5B%5D=hybrid&vehicle_transmission_category%5B%5D=automatic"
}
],
"maxItems": 10,
"proxyConfiguration": {
"useApifyProxy": False
}
}
run = client.actor("rohittp/carwow-uk-scraper").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)HTTP · curl
curl -X POST "https://bytewells.com/api/v2/acts/rohittp~carwow-uk-scraper/runs" \
-H "Authorization: Bearer $BYTEWELLS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://quotes.carwow.co.uk/stock_cars?cross_domain=true&locked_filters%5Bvehicle_state_group%5D=used&vehicle_state_group=used&sort=recommended&vehicle_type=car&deal_type_group=cash&brand_slug=audi&vehicle_fuel_category%5B%5D=hybrid&vehicle_transmission_category%5B%5D=automatic"}],"maxItems":10,"proxyConfiguration":{"useApifyProxy":false}}'Runs are billed as compute from your credit balance. Paid Actors need an active rental or trial; otherwise the API answers 402 rental-required.