Zoopla Scraper — UK Property Listings & Prices avatar

Zoopla Scraper — UK Property Listings & Prices

Pricing

from $2.00 / 1,000 listing scrapeds

Go to Apify Store
Zoopla Scraper — UK Property Listings & Prices

Zoopla Scraper — UK Property Listings & Prices

Scrape Zoopla listings for sale and to rent: price, address, bedrooms, property type, agent, listing date, images, floor area, EPC and price history. Works with any Zoopla search URL.

Pricing

from $2.00 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Share

Zoopla Property Scraper

Scrape Zoopla listings for sale and to rent: price, address, bedrooms, property type, agent, listing date, images, floor area, EPC and price history. Works with any Zoopla search URL.

Paste any zoopla.co.uk search page (for sale, to rent or new homes, with whatever filters you picked in the browser) or just type a location, and get every listing as clean JSON, CSV or Excel, or straight into your app through the API. Built for reliability: it reads the structured data Zoopla embeds in each page instead of scraping the visual layout, uses browser-grade TLS fingerprints, throttles itself and retries on a fresh proxy session, so runs finish instead of failing halfway. You pay only for the listings you get.

What data does Zoopla Property Scraper extract?

Every listing from the search results gives you:

FieldDescription
id, urlZoopla listing id and canonical listing URL
titlee.g. "2 bed flat for sale"
listingType, sectionsale / rent; Zoopla section for-sale, to-rent or new-homes
price, priceText, priceCurrencyNumeric price in GBP plus the displayed text ("£1,400 pcm")
pricePeriod, pricePerMonth, pricePerWeekRentals: pcm or pw, with both monthly and weekly figures
priceQualifier"Guide price", "Offers over", "Fixed price", ...
priceReducedPercent, lastPriceChangeReduction badge from the card, when present
address, postcodeOutcodeDisplay address and outward postcode (e.g. SW1A)
latitude, longitudeMap coordinates
propertyTypeflat, terraced, semi_detached, detached, bungalow, end_terrace, houseboat, ...
bedrooms, bathrooms, receptionsRoom counts (null when not shown)
floorAreaSqFt, floorAreaSqM, floorAreaSourceFloor area when shown, and whether it came from the agent or an EPC estimate
tenure, furnished, availableFromFreehold / Leasehold / Share of freehold; rental furnishing and availability
publishedOn, listedAt, statusLabelListing date (ISO), "Just added" / "Reduced" style status
isNewHome, isRetirement, isSharedOwnership, isAuction, chainFree, underOfferFlags
isFeatured, isPremium, isExtendedResultFeatured/premium placement; isExtendedResult marks nearby listings Zoopla adds when the exact area has no matches
tags, highlights, buyerIncentives, summaryCard badges, highlights, incentives (e.g. shared ownership) and the short summary
images, imageCount, floorPlanCount, videoCountPhoto URLs and media counts
agent{name, branchId, phone, url, logoUrl} of the estate agent branch or developer
viewingUrlZoopla's "contact agent" page
sourceUrl, scrapedAtThe search URL the listing came from and the scrape timestamp

Turn on Include listing details to also open each listing page and add:

FieldDescription
description, featuresFull description (plain text) and the agent's key-features bullets
postcode, streetName, region, county, postTownFull postcode and location breakdown where Zoopla publishes it
epcRating, epcImageUrlsEPC energy rating and EPC chart images
councilTaxBand, tenure, serviceCharge, groundRent, leaseInfoCouncil tax band, tenure with lease length, and all "material information" fields
utilitiesWater, heating, electricity, sewerage, broadband, parking, ... as displayed
floorPlanUrls, brochureUrls, videoUrls, virtualTourUrlsFloor plans, brochures, video and 3D tour links
pricePerSqFtPrice per square foot when Zoopla shows it
priceHistory, firstListedAt[{date, price, event, changePercent}] from first listing through every reduction or increase
historicSalesPrevious Land Registry sales of the property when Zoopla shows them
nearbyStations, nearbySchoolsClosest stations (with lines, zone, distance) and schools (age range, distance)
agent.brand, agent.isDeveloperAgent brand name and whether the branch is a developer

How to scrape Zoopla property listings

  1. Open zoopla.co.uk, run the search you want (area, price range, bedrooms, property type, sort order) and copy the URL from the address bar into Start URLs. Or type a Location ("Manchester", "Kensington", "SW1A") and pick sale or rent plus optional price/bedroom filters.
  2. Set Max items (cost cap). Optionally turn on Include listing details.
  3. Click Start. Results appear in the Dataset tab; export as JSON, CSV or Excel, or read them through the API.

Input example

{
"startUrls": [{ "url": "https://www.zoopla.co.uk/to-rent/flats/manchester/?beds_min=2&price_max=1500&price_frequency=per_month" }],
"maxItems": 200,
"includeDetails": true
}

or, by location:

{
"location": "Leeds, West Yorkshire",
"listingType": "sale",
"minBeds": 2,
"maxPrice": 300000,
"propertyType": "houses",
"maxItems": 100
}

Output example

{
"id": "74162557",
"url": "https://www.zoopla.co.uk/for-sale/details/74162557/",
"title": "2 bed flat for sale",
"listingType": "sale",
"price": 625000,
"priceCurrency": "GBP",
"priceQualifier": "Guide price",
"address": "Wheler Street, London E1",
"postcodeOutcode": "E1",
"latitude": 51.521962,
"longitude": -0.075262,
"propertyType": "flat",
"bedrooms": 2,
"bathrooms": 2,
"receptions": 1,
"floorAreaSqFt": 750,
"floorAreaSqM": 69.7,
"tenure": "Leasehold",
"publishedOn": "2026-09-07",
"statusLabel": "Just added",
"isNewHome": false,
"chainFree": true,
"tags": ["Chain free", "Leasehold"],
"images": ["https://lid.zoocdn.com/645/430/1950ffeb364842c990900ebc6e02dbedfc04120d.jpg"],
"imageCount": 10,
"agent": {
"name": "Savills - Shoreditch",
"branchId": 60859,
"phone": "020 8022 3250",
"url": "https://www.zoopla.co.uk/new-homes/developers/branch/savills-shoreditch-london-60859/"
},
"epcRating": "B",
"councilTaxBand": "D",
"serviceCharge": "£4,500 per year",
"priceHistory": [{ "date": "2026-09-07T12:25:24", "price": 625000, "event": "listed", "changePercent": null }],
"nearbyStations": [{ "name": "Shoreditch High Street", "type": "london_overground_station", "distanceMiles": 0.1, "lines": "Windrush", "zone": "1" }]
}

Zoopla returns 25 listings per page (plus up to 3 featured ones) and stops at page 40, so a single search yields at most about 1,000 listings even if it says "50,000 results". To scrape a whole city, split the search into price bands, bedroom counts or districts and add each URL to Start URLs; duplicates across searches are removed automatically.

Does it scrape rentals as well as sales?

Yes. Use a /to-rent/ search URL or set Listing type to "To rent". Rentals come with pricePeriod (pcm or pw), both pricePerMonth and pricePerWeek, furnished and availableFrom. New-homes searches (/new-homes/) work too and are flagged with isNewHome.

Can I get price history, EPC and floor plans?

Turn on Include listing details. Each listing page is opened once (plus one lightweight data call) to add the full description, key features, floor plans, EPC rating, council tax band, tenure and lease length, service charge, utilities, full postcode, the complete price history (listed price and every reduction with dates) and the nearest stations and schools. This costs a little extra per listing (see the Pricing tab).

Does it work without login or cookies?

Yes. Everything comes from public search and listing pages; no Zoopla account is used. Zoopla's Cloudflare protection now denies both datacenter and residential Apify Proxy IPs, so the default proxy is Apify's Unblocker (billed per successful request, about $0.0015 on the free plan). One request to a search page returns a full page of listings (20-50), so proxy cost stays well under the per-listing price; Include listing details opens one Unblocker request per listing page, so turning it on raises the proxy cost roughly in line with the number of listings fetched.

Monitor changes on a schedule

Turn on Only new or changed items to watch a search: each run remembers what earlier runs returned and outputs only listings that are new or whose price, price qualifier (e.g. "Guide price" to "Offers over") or under-offer status changed. Unchanged listings are dropped before any listing page is opened, so they are not charged. Max items then sets how many listings are checked per run; sort the search by "Newest listings" (results_sort=newest_listings) so new properties land in that window. Save the input as a task and add a Schedule in Apify (for example daily), and give each watch its own Monitoring key if several schedules use the same search. Every output item has changeType (new or changed), and changed items have previousValues with the old values, e.g. {"price": 450000, "priceQualifier": "Guide price"}.

Pricing

Pay per result: a small fee per listing scraped, plus a small extra fee per listing page opened when details are on. No subscription; Apify's free plan is enough to try it.

Integrations and API

Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the API tab for ready-made snippets. Schedule it daily to monitor new listings and price drops in an area.

This Actor collects only publicly available listing data (properties, prices and the advertising agent's business details). It does not collect any data about private individuals. You are responsible for how you use the data and for complying with Zoopla's terms and applicable law.

Support

Found a bug or need a field added? Open an issue in the Issues tab; it is usually answered within a day.