Zoopla Property Scraper avatar

Zoopla Property Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Zoopla Property Scraper

Zoopla Property Scraper

Scrape Zoopla.co.uk listings, full property details, sold-price history, sale & rent estimates, EV charging, agents, and autocomplete. Search by location / UK postcode / lat-lng / Zoopla URL with the full filter set (price, beds, sqft, tenure, new builds, chain-free, auction, furnished).

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

ONE API

ONE API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Zoopla.co.uk Property Scraper

Scrape Zoopla.co.uk UK property listings, full property details, sold-price history, sale & rent estimates, EV charging stations, agent / branch lookup, and search-box autocomplete — all from one Actor. Backed by realtyapi.io's real-time Zoopla API.

⭐️ Found this useful? Please leave 5 stars! Issues / requests: 📬 oneapi.project@gmail.com


What you can do

SectionWhat it doesInput format
🏠 Property DetailsFull details for a specific listing or propertylistingId digits, Zoopla URL, or full UK address (must include postcode) — auto-detected per row
🔎 Search ListingsPaginated UK property search with full filter setlocation string, UK postcode, lat,lng,radius_mi, or Zoopla search URL
🔍 AutocompleteSearch-box suggestions: neighbourhoods, towns, postcodes, countiespartial query string
💷 Sold PricesLand Registry sold-price browser by area / postcode / coordinates / bboxgeoId slug, lat,lon, ne_lat,ne_lon,sw_lat,sw_lon bbox, or postcode
EV ChargingCharging stations near a propertylistingId (resolved to coords) or lat,lon
💰 Sale & Rent EstimatesZoopla automated valuation per propertyUK address with postcode, or UPRN
📜 Sales HistoryHistoric listings + Land Registry sales for one propertyUK address with postcode, or UPRN
👤 Agent SearchFind estate-agent branches by single-token UK locationoxford, london, nw3, manchester
🏢 Agent Details + ListingsBranch info plus optional full pages of for-sale + to-rent listingsbranchId from any search response

You can fill any combination of sections in a single run — leave the others empty.


Output

Each listing / property / agent / station / suggestion is pushed as one dataset row, flattened to friendly columns plus a Raw column with the original JSON.

ModeListing IDStatusPriceBedsBathsSqftTypeTenureTownPostcodeBranchListing URL
search/byzip73093625Just added8200003211573 bed flat for saleLeaseholdLondonNW3Foxtons - Hampsteadhttps://www.zoopla.co.uk/...
details/byid72743732published1050000421543Terraced houseFreeholdLondonNW3 2JRKinleigh Folkard & Haywardhttps://www.zoopla.co.uk/...
details/byaddressestimate98000032Flat/MaisonetteFreeholdLondonW2 4AW

Plus: UPRN, Receptions, Floor Area Sqft, Outcode, County, Region, Latitude, Longitude, Published, Furnished, Chain Free, New Home, Retirement, Shared Ownership, Auction, Photos (cover URL), Photo Count, Branch ID, Branch Phone.

For nested fields (full photo arrays, points of interest, transports, EPC, price history etc.), the complete upstream JSON is in the Raw column.


Sample input

{
"property_inputs": [
"72743732",
"https://www.zoopla.co.uk/for-sale/details/72743732/",
"10 Mansfield Road, NW3 2HN"
],
"search_inputs": ["NW3", "Hampstead, London", "51.5074,-0.1278,1"],
"searchType": "For_Sale",
"propertyType": "flat,house",
"priceRange": "min:500000,max:1500000",
"bedsRange": "min:2",
"tenure": "freehold",
"sortOrder": "Newest",
"pages": 2,
"autocomplete_inputs": ["Oxford"],
"soldprices_inputs": ["london/elm-row/nw3-1aa"],
"ev_inputs": ["71295522"],
"estimates_inputs": ["10 Mansfield Road, NW3 2HN"],
"history_inputs": ["Caroline Place, London W2 4AW"],
"agent_search_inputs": ["nw3"],
"agent_inputs": ["2879"],
"agent_listings_section": false
}

Search filters (apply to every search_inputs row)

  • searchTypeFor_Sale (default) | To_Rent | Sold (UK convention is To_Rent).
  • propertyType — comma list of flat, house, bungalow, terraced, semi_detached, detached, land, park_home, farm. Empty = all.
  • priceRange / bedsRange / bathsRange / sizeSqftRangemin:X | max:Y | min:X,max:Y.
  • tenurefreehold, leasehold, share_of_freehold, or empty (any).
  • sortOrderNewest, Price_High_to_Low, Price_Low_to_High, Most_Reduced.
  • pages — pages to fetch (1–50). Each page = 25 listings (Zoopla's fixed page size).
  • newHomesonly | false (exclude) | empty (include both — Zoopla default).
  • chainFree, retirement, sharedOwnership, auction — booleans, true = filter to only.
  • includeSold — true to also include sold-STC / under-offer when searchType=For_Sale.
  • furnishedfurnished, unfurnished, part_furnished, or empty (any). Used with searchType=To_Rent.
  • petsAllowed, billsIncluded, sharedLiving, studentHousing — rent-only booleans.
  • keywords — free-text amenities (e.g. garden,parking,period features).

Pricing

Pay per result — $3 per 1,000 items pushed. Failed inputs return a row with Status: ERROR: ... and are billed the same as a successful row.

To cap spend, set Max paid dataset items on the run page.


Tips

  • Need just one property? Use property_inputs — auto-detects listingId, URL, or address.
  • Pull all listings in an area? Use search_inputs: ["NW3"] (outward postcode preferred over full postcode) with pages: 5 for ~125 listings.
  • Use a lat/lng circle? Format: 51.5074,-0.1278,1 (last value is radius in miles).
  • Property estimates only? Use estimates_inputs (faster than details/byaddress if you only need the AVM).
  • Agent's full inventory? Set agent_inputs: ["2879"] and toggle agent_listings_section on, with pages for how many pages of each (for-sale + to-rent).
  • Resolve a Zoopla URL? Drop a search URL or detail URL into the matching section — both byurl modes parse the URL into the right call internally.