Zoopla Scraper — UK Property API · Sale + Rent + Valuations
Pricing
from $3.00 / 1,000 property extracteds
Zoopla Scraper — UK Property API · Sale + Rent + Valuations
🇬🇧 Stable, API-backed Zoopla scraper for UK property data — sale + rent listings, valuation estimates (sale & rent), market KPIs (median price, £/sqft, area breakdowns), HTML report. Bulk-location PAID. Independent tool — not affiliated with Zoopla / ZPG.
Pricing
from $3.00 / 1,000 property extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
16
Total users
10
Monthly active users
a day ago
Last modified
Categories
Share
🇬🇧 Zoopla Property Scraper — UK Real Estate API · Sale · Rent · Sold Prices
Stable, API-backed UK property data from Zoopla. For-sale + to-rent listings and completed sold-price comparables across England, Scotland, Wales and Northern Ireland — search by location, postcode, coordinates, or pasted Zoopla URL. Per-listing valuation estimates (sale + rent), built-in market KPIs (median price, £/sqft, area breakdowns), and an HTML report. Built on a stable upstream tier so your scrapes don't break when Zoopla rotates its layout — and so UK property data extraction is just an API call, not a maintenance project.
By SIÁN Agency · Independent tool — not affiliated with Zoopla or Zoopla Property Group (ZPG).
🚀 What you get on every run
- Structured listings — propertyId, full address, GBP price, beds/baths/receptions, sqft, lat/lon, photos, estate-agent branch
- Sold price history & comparables ✨ NEW — pull what UK properties actually sold for, with full per-property sale history (
historicSales[]) and Zoopla valuation estimates — the gold standard for comps and underwriting - For-sale + to-rent in one call — set
listingType: both(PAID) and get both sides of the market in a single dataset - Auto-computed £/sqft — for every sale listing with usable floor area
- Market KPIs — median price, price-distribution stats, area + property-type breakdowns, surfaced in a polished HTML report
- Valuation estimates (optional, PAID) — sale + rent estimate with confidence band per listing
- Estate-agent branch intelligence ✨ NEW — profile any UK branch (name, address, phone, memberships, listing counts) and pull its complete for-sale + to-rent inventory
- Retry-helper record — even on partial failures you get a JSON summary of what failed so you can rerun cheaply
🎯 Built for
- Buy-to-let investors — pull live comparables and sold-price comps (UK comps) for underwriting in seconds; compute yield from
listingType: bothruns - Estate agents & valuers — back up asking-price advice with real sold-price evidence for any street or postcode area
- Mortgage brokers — generate 100-listing comp sets and sold-price comparables for valuation reports
- PropTech teams — feed your AVM / rent-prediction models with consistent UK training data, including realised transaction history
- Investment funds — schedule weekly sweeps of London / Manchester / Birmingham micro-markets
🧭 7 search modes
| Mode | Best for |
|---|---|
| By location | Free-text — "Hampstead, London", "Oxford", "NW3" |
| By postcode | UK postcode outward code (NW3, SW1A, M1, EC1A) |
| By coordinates | Lat/lon + radius (miles) — e.g. for map-based UI |
| By URL | Paste any Zoopla search URL — filters auto-read from the URL |
| Bulk locations (PAID) | Sweep an array of locations in one run |
| Sold prices | Completed-sale comparables + full sold-price history for any UK area |
| Agent branches ✨ NEW | Estate-agent branch profiles + each branch's full for-sale / to-rent inventory |
Live-listing modes share the same UK filter set: property type, tenure (freehold/leasehold/share-of-freehold), price/beds/baths/sqft ranges, new homes, chain-free, furnished state, pets allowed, bills included, and free-text keywords.
🏷 Sold prices mode (NEW)
Pull completed-sale comparables — the prices UK properties actually sold for — for any area, alongside the live for-sale and to-rent modes. This is the data that powers real valuations, BTL underwriting, and "what's it worth?" analysis.
How to use it:
- Set Search Mode =
soldprices. - Type a free-text
soldLocation—London,Hampstead, London,Oxford, Oxfordshire, or an outward postcode likeNW3. It's resolved to the right Zoopla area automatically. - (Advanced) Skip resolution by passing a precise
geoIdslug directly (e.g.london,london/elm-row). - Tune
first(1–100) to control results per page, andmaxResultsfor total volume.
What you get per comparable:
{"propertyId": "5068790","address": { "full": "Elm Row, Hampstead, London NW3" },"specs": { "beds": 3, "baths": 2, "receptions": 1 },"tags": ["Freehold"],"historicSales": [{ "date": "2023-08-14", "price": 1985000 },{ "date": "2015-03-02", "price": 1320000 }],"saleEstimate": { "current": 2216000, "lower": 1994000, "upper": 2438000, "confidence": "MEDIUM" },"location": { "latitude": 51.5564, "longitude": -0.1782 },"scrapedAt": "2026-06-14T11:05:43.123Z"}
Every sold comparable carries its full sale history (historicSales[] — date + GBP sold price), Zoopla's current saleEstimate (and, where available, rentEstimate) with confidence band, plus address, beds/baths/receptions, tenure, property type, and coordinates — ready for mapping and valuation workflows.
🏢 Agent branches mode (NEW)
Profile UK estate-agent branches and pull each branch's complete for-sale and to-rent inventory in one run — agent prospecting, competitor tracking, and instructions-per-branch analysis without any manual browsing.
Two ways in:
- By area — set Search Mode =
agentbranchesand type a free-textagentLocation(e.g.Oxford,Hampstead, London,NW3). Branches are discovered automatically from live listings in that area — including each branch's phone number. - Exact branches — pass
branchIdsdirectly: numeric ids (e.g.61460) or full branch URLs from thebranch.branchUrlfield of any previous run. (Phone numbers are only available via area discovery.)
What you get per branch:
- A branch profile row (
listingType: "agent") — branch name, street address + postcode, phone (via area discovery), logo, branch URL, industry memberships (e.g. ARLA, TPO), and live for-sale / to-rent listing counts:
{"branchId": "1990","listingType": "agent","propertyTitle": "Connells - Headington, Oxford","address": { "full": "129-131 London Road, Headington, Oxford", "postcode": "OX3 9HZ" },"branch": { "name": "Connells - Headington, Oxford", "phone": "01865 360064", "branchUrl": "https://www.zoopla.co.uk/find-agents/branch/connells-headington-oxford-oxford-1990/" },"memberships": [ { "memberOf": "arla" }, { "memberOf": "tpo" } ],"forSaleCount": 20,"forRentCount": 0}
- The branch's full inventory — every for-sale and to-rent listing lands as a regular listing row (price, beds/baths, £/sqft, photos, coordinates) tagged with its
branchId, so market KPIs and the HTML report work out of the box.
Use maxResults to cap the rows per query (profile + inventory count toward the cap).
💰 Transparent pricing
Pay-per-event — no monthly subscription, no per-page overhead. Charged only on successful extraction. Apify subscription discounts apply automatically (Starter ≈ 67% off · Scale ≈ 71% off · Business ≈ 75% off vs Free).
| Event | Free | Starter | Scale | Business | Triggered when |
|---|---|---|---|---|---|
| Run started | $0.050 | $0.005 | $0.005 | $0.005 | Once per run |
| Property extracted | $0.015 | $0.005 | $0.0045 | $0.004 | Per listing, sold comparable, or agent-branch profile pushed to the dataset |
| Valuation enriched | — | $0.003 | $0.0027 | $0.0024 | Per successful estimate (only when includeEstimates: true) |
Sold prices and agent branches reuse the per-property event — each sold comparable, branch profile, and branch-inventory listing is billed at the same "Property extracted" rate as a live listing. No separate surcharge.
Free tier is built for low-volume testing — capped at 5 queries / 25 listings per run, no enrichment, no listingType: both.
Paid tiers (Starter and up) unlock unlimited listings, bulk locations, valuation enrichment, and listingType: both.
📦 Sample output (sale)
{"propertyId": "73109201","listingType": "sale","url": "https://www.zoopla.co.uk/for-sale/details/73109201/","thumbnailUrl": "https://lid.zoocdn.com/645/430/...jpg","propertyTitle": "3 bed flat for sale","address": { "full": "Lancaster Grove, Belsize Park, London NW3" },"pricing": {"price": 1850000,"priceCurrency": "GBP","priceDisplay": "£1,850,000","priceShort": "£1.85m","pricePerSqft": 1390},"specs": { "beds": 3, "baths": 2, "receptions": 1, "sizeSqft": 1331 },"location": { "latitude": 51.54644, "longitude": -0.171423 },"branch": {"name": "ADN Residential","phone": "020 8128 2227","branchUrl": "https://www.zoopla.co.uk/find-agents/branch/adn-residential-london-159325/"},"tags": ["Share of Freehold"],"scrapedAt": "2026-05-05T17:05:43.123Z"}
Note on
tags: This array always exists on every record (empty[]when the listing has no tags). On for-sale listings it typically carries the tenure label (Freehold,Leasehold,Share of Freehold); on rental listings it's usually empty. Filtertenureis supported as an input parameter, but tenure is reported on output as a string insidetags[], not as its own structured field.
With includeEstimates: true (PAID), each listing additionally carries:
{"estimate": {"uprn": "5068790","saleEstimate": { "current": 2216000, "lower": 1994000, "upper": 2438000, "confidence": "MEDIUM" },"rentEstimate": null}}
⚙️ Quick start
- Click "Try for free" above — paste any UK location, postcode, or Zoopla URL (or pick Sold prices mode for comparables).
- Run. First 25 listings are free.
- Check the dataset for your structured listings, and the HTML report in the key-value store for market KPIs.
For automation: schedule via Apify's built-in scheduler, or call our REST API with your Apify token.
❓ FAQ
Does this work for sold prices?
Yes — use the soldprices search mode. Type a free-text soldLocation (or pass a geoId) and you get completed-sale comparables with full per-property sale history (historicSales[]) plus Zoopla valuation estimates. Live for-sale and to-rent listings are covered by the other five modes.
Can I scrape estate agent details?
Yes — use the agentbranches search mode. Type a UK agentLocation (or pass exact branchIds) and you get a profile per branch (name, address, phone, memberships, listing counts) plus the branch's full for-sale and to-rent inventory. Branch name, phone, logo and branch-URL are also returned on every live listing in the other modes.
What about Northern Ireland / Scotland? Zoopla covers all four UK nations; this actor inherits that coverage — for both live listings and sold prices.
Why outward postcodes instead of full postcodes?
Zoopla's slug-based search treats NW3 1AA as one literal — it usually returns 0 results. Outward codes (NW3, SW1A) resolve to area slugs and return real inventory. We auto-strip the inward code if you paste a full postcode.
Can I get the estate agent's email? Branch name, phone, logo and Zoopla branch-URL are returned. Email is not exposed by Zoopla's public surface.
⚠️ Trademark Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Zoopla, Zoopla Property Group (ZPG), or any of its subsidiaries. "Zoopla" is used solely in a descriptive sense to identify the public data source the Actor reads from. All trademarks are the property of their respective owners.
📚 Legal & Scraping Notes
- This actor reads only publicly visible Zoopla pages — no logins, no bypassing of paywalls.
- You are responsible for complying with Zoopla's Terms of Service and applicable UK / EU data laws (UK GDPR, Data Protection Act 2018) when using the data.
- Personal data of estate agents (e.g. branch phone) is included only as published on Zoopla's public site.
💬 Support
- 🐛 Found a bug? File an issue in the Apify Console Issues tab
- ⭐ Loving the tool? Leave a 5-star review — it helps us build more
- 📧 apify@sian-agency.online