Quick answer: Carzone.ie publishes no public API, so structured used-car data requires scraping the public listings. The Carzone Car Scraper on Apify handles browser fingerprint rotation, residential proxy rotation, and retries for you — returning clean typed rows at $2.05 per 1,000 results ($0.05 actor-start + $0.002 per result).
Ireland's used-car market has a few distinctive quirks. The market is denominated in euros, left-hand traffic means most Irish cars are right-hand drive, and engine power is reported in BHP (brake horsepower) rather than the metric PS/CV used across most of continental Europe. The county-level location field matters too — Dublin listings trade at a premium over identical cars in Connacht, and that geographic signal is worth capturing.
Carzone.ie is Ireland's leading used-car marketplace, listing tens of thousands of cars at any given moment. It publishes no developer API. The site's search pages surface roughly 10 listings per page, with detail pages holding the richer spec data (transmission, BHP, cc, body type, colour, county). Getting a complete structured view of the market means working through both layers — which requires session management, residential proxies, and robust retry logic.
This guide shows how to pull Carzone.ie data programmatically using the Carzone Car Scraper, a managed Apify Actor that handles the infrastructure.
Does Carzone.ie Have an API? 🔎
No. Carzone.ie publishes no public car API and no structured data export. Its search is backed by an internal endpoint that the Next.js frontend calls — not a stable surface for external code. The site also de-duplicates sponsored and featured placements that appear mixed into search results; the Actor handles that de-duplication for you by advert ID.
What Data You Can Extract
The Actor returns one row per listing. Fields from the search result card are always present; fields marked "enrichment-only" require enrichDetails: true (the default), which fetches each listing's detail page.
| Field | Description |
|---|---|
listing_id |
Carzone advert ID |
listing_url |
Absolute URL to the listing |
title |
Make + model + derivative |
make |
Manufacturer (e.g. Toyota) |
model |
Model (e.g. Corolla) |
year |
Registration / model year |
price |
Integer price in EUR |
currency |
Always EUR
|
mileage_km |
Odometer in kilometres |
fuel_type |
Petrol / Diesel / Electric / Petrol Hybrid |
transmission |
Manual or Automatic — enrichment-only |
engine_power_hp |
Engine power in BHP — enrichment-only |
engine_size_cc |
Displacement in cc — enrichment-only |
body_type |
Hatchback / Saloon / SUV, etc. — enrichment-only |
color |
Exterior colour — enrichment-only |
first_registration |
First registration date YYYY-MM-DD — enrichment-only |
location |
Seller town/city — enrichment-only |
region |
Irish county — enrichment-only |
seller_type |
dealer (Trade) or private
|
seller_name |
Dealer trading name — enrichment-only |
photo_urls |
List of photo URLs |
description |
Advert description / equipment list |
posted_date |
Listing last-updated date |
scraped_at |
ISO-8601 UTC timestamp of scrape |
The region field carries the Irish county — Dublin, Cork, Galway, Meath, and so on. This is the geographic granularity that matters in the Irish market: county-level pricing differences are significant and not captured by city names alone.
Engine power in engine_power_hp is BHP as Carzone reports it — consistent with how Irish buyers compare cars, and directly comparable to other UK/Ireland automotive data sources.
A Realistic Output Row
Here is a sample result using the exact field names from the Actor's Pydantic ResultRow model:
{
"listing_id": "4444769",
"listing_url": "https://www.carzone.ie/used-cars/mitsubishi/mirage/fpa/4444769",
"title": "Mitsubishi Mirage 1.2 DBA-A03A CVT 5DR AU AUTO",
"make": "Mitsubishi",
"model": "Mirage",
"year": 2017,
"price": 6990,
"currency": "EUR",
"mileage_km": 111000,
"fuel_type": "Petrol",
"transmission": "Automatic",
"engine_power_hp": 78,
"engine_size_cc": 1200,
"body_type": "Hatchback",
"color": "White",
"first_registration": "2017-02-28",
"location": null,
"region": "Meath",
"seller_type": "dealer",
"seller_name": "CarBar",
"photo_urls": [
"https://c0.carsie.ie/d43864c90df075c94489ddbe4ca5ffe9742493abfef315899189d722e9fae6e5.jpg"
],
"description": null,
"posted_date": null,
"scraped_at": "2026-06-02T00:00:00+00:00"
}
Note that mileage is already in kilometres — Carzone reports km natively, so there is no unit conversion required (unlike Swedish Blocket, which uses the Swedish mil).
How We Handle the Blocks
Carzone.ie is a modern JavaScript marketplace. Its search pages serve approximately 10 listings per page and surface sponsored placements mixed in with organic results. Here is what the Actor does to stay reliable across both the search and detail layers:
-
Browser fingerprint rotation. We use
curl-cffito impersonate real Chrome, Firefox, and Safari TLS handshakes. The server sees a real browser, not Python. - Residential proxy rotation via Apify Proxy. We rotate residential exit IPs and fresh session IDs on every block signal. Irish residential exits are preferred for this target.
-
Exponential backoff with Retry-After. We retry on 408, 429, and 5xx — up to five attempts per page, honouring
Retry-Afterheaders. - Rate-limit-aware pacing. When the site pushes back, we slow down rather than burning through retries.
-
Advert ID deduplication. Sponsored and featured placements appear multiple times in Carzone search results. The Actor de-duplicates by
listing_idso you never get duplicate rows in your dataset. - Loud failure, never silent. A hard block produces a non-zero exit with a descriptive status message — never a green run with zero results.
Running It with Python 🐍
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("DevilScrapes/carzone-ireland-cars").call(
run_input={
"make": "Toyota",
"maxResults": 100,
"enrichDetails": True,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(f"Scraped {len(items)} listings")
for item in items[:3]:
print(item["make"], item["model"], item["year"],
item["price"], "EUR", "—", item["region"])
Three ways to target your search:
-
make— convenience filter, e.g."Toyota". Builds the/used-cars/toyotapath automatically. -
query— free-text keywords, e.g."hybrid suv". Maps to Carzone'skeywordsparameter. -
searchUrl— paste a full Carzone search URL with filters applied. The URL wins if all three are set.
Use Cases
Irish EUR price analytics. Build time series of asking prices for specific makes and models in the Irish market. Run daily and push to a database; plot price vs. mileage and price vs. year to understand depreciation curves in EUR.
EV and hybrid market tracking. Query fuel_type = Electric or Petrol Hybrid to chart Ireland's used-EV pricing. Ireland introduced strong SEAI EV grants that suppressed new-EV prices and are now flowing through to the used market — tracking Carzone gives you the data to see that in real time.
County-level pricing analysis. Use the region field to compare asking prices for identical cars across Irish counties. Dublin vs. rural Connacht pricing gaps are well known in the trade; quantifying them from listing data is straightforward with region in your dataset.
Dealer inventory monitoring. Filter by seller_type = dealer and seller_name to watch a competitor's stock. Diff successive runs to catch new arrivals and price movements.
Arbitrage from the UK. Ireland and the UK share a right-hand-drive convention, making cross-channel vehicle sourcing common. Compare Carzone EUR prices against UK equivalents (in GBP) to spot import opportunities, particularly on popular Japanese imports like the Corolla and Yaris.
FAQ ❓
How much does it cost?
Pay-Per-Event pricing: $0.05 for actor-start (one-off per run) plus $0.002 per result row. 1,000 results costs $2.05 total. Every new Apify account gets $5 of free credit — no credit card required to try.
Is mileage in miles or kilometres?
Kilometres. Carzone.ie reports mileage in km natively and the Actor stores the km value in mileage_km — no conversion required. This makes it directly comparable with other EU markets in the fleet.
Why are transmission, body type, and county sometimes null?
Those fields live on each car's detail page, not the search result card. Keep enrichDetails: true (the default) to fill them in; set it to false to halve the request count and return only what the search page provides: make, model, year, price, mileage, fuel type, and photos.
Is scraping Carzone.ie legal?
Carzone's terms restrict automated access. You are responsible for ensuring your use complies with applicable law and the site's terms. The Actor scrapes only public listing data visible to any unauthenticated browser. We do not bypass authentication, access private messages, or scrape seller phone numbers.
Does this cover new cars too?
The default search targets the used-car channel. Paste a searchUrl that includes new-car filters if you want those — the parser reads whatever the search page returns.
Get Started
The Actor is live on the Apify Store. Every new Apify account starts with $5 of free credit — enough for roughly 2,400 enriched listings.
Carzone Car Scraper on Apify Store
Questions or edge cases? Use the Actor's Issues tab on Apify Console. We ship fixes weekly and read every report.
Built by Devil Scrapes — a fleet of opinionated public-data Actors. Honest pricing, real engineering, zero fine print.
Top comments (0)