Onthemarket Scraper avatar
Onthemarket Scraper
Try for free

3 days trial then $30.00/month - No credit card required now

View all Actors
Onthemarket Scraper

Onthemarket Scraper

dhrumil/onthemarket-scraper
Try for free

3 days trial then $30.00/month - No credit card required now

Scrape onthemarket.com to crawl millions of sale/rent real estate properties from United Kingdom. Our real estate scraper also lets you monitor specific listing for new updates/listing. You can provide multiple search result listings to scrape/monitor.

🏡 What is Onthemarket Real Estate Properties Scraper?

This Onthemarket properties Scraper will enable you scrape any sale/rent listing from collection from onthemarket.co.uk.

You can simply take your listing url from browser and enter it into this actor. This actor will crawl through all pages of particular listing and generate dataset for you.

Listing url is something you get when you perform the search on onthemarket site. Example listing urls :

🚪 What can this Onthemarket Scraper do?

📈 Extract Onthemarket market data listings on Onthemarket

👀 This actor is not just scraper but also has monitoring capability. You can turn on monitoring mode and it will give you only newly added properties compared to your previous scrapes.

📩 This actor also helps yu to identify which properties are not listed anymore. Please refer to Identifying delisted properties

⬇️ Download Onthemarket real estate data in Excel, CSV, JSON, and other formats

🌳 What Onthemarket data can I extract using this tool?

📝📝
Listing TitleFull Address
Listing URLLocaliy
BathroomsBedrooms
Agent NameAgent Phone
Listing TypeProperty Type
LatitudeLongitude
Furnishing TypeSummary
Text DescriptionFormatted HTML Description
AmenitiesImages
PriceSize
Listing DateSchools

⬇️ Input

For simple usecase, you just need to provide browser url of onthemarket search result page & that's all. You can leave other fields as they are to be sensible defaults.

Input example

1{
2    "listUrls": [
3        {
4            "url": "https://www.onthemarket.com/for-sale/property/e20/"
5        }
6    ],
7    "propertyUrls": [
8        {
9            "url": "https://www.onthemarket.com/details/12297424/"
10        }
11    ],
12    "fullScrape": true,
13    "monitoringMode": false
14}

You can either provide listUrls to search properties from or provide propertyUrls directly to crawl.

Understading monitoring mode :

  • fullScrape : This option is by default turned on. When enabled it always force actor to scrape complete listing from all pagination pages regardless of monitoring is enabled or not.

  • monitoringMode : This open when turned on will only scrape newly added property listings compared to previously scraped properties by this actor. It's important to turn off fullScrape setting if you are using this mode. If you keep fullScrape on, it will re-scrape complete listing again.

  • enableDelistingTracker : This option when turned on will start tracking date against each property under Apify Key Value store. This KV store can be queried later to find out which properties are delisted.

  • addEmptyTrackerRecord : This option when turned on will add empty record having only id of property to Apify dataset. This helps you identify whether property is still listed compared to your own database in incremental mode.

⬆️ Output

The scraped data is stored in the dataset of each run. The data can be viewed or downloaded in many popular formats, such as JSON, CSV, Excel, XML, RSS, and HTML.

Output example

The result for scraping a single property like this:

1{
2  "id": "11192001",
3  "url": "https://www.onthemarket.com/details/11192001/",
4  "title": "3 bedroom semi-detached house to rent",
5  "displayAddress": "Morford Street, Bath",
6  "locality": "Bath",
7  "bathrooms": 3,
8  "bedrooms": 3,
9  "agent": "Wrights Residential - Trowbridge",
10  "agentPhone": "01225 616858",
11  "propertyType": "Semi-detached house",
12  "price": "£2,220 pcm",
13  "secondaryPrice": "£512 pw",
14  "furnishing": "Unfurnished",
15  "coordinates": {
16    "latitude": 51.388222,
17    "longitude": -2.36315
18  },
19  "type": "rent",
20  "summary": "PETS CONSIDERED! This three bedroom townhouse is situated within easy reach of Bath city centre. Features include a garage, parking for one vehicle, enclosed rear garden, large open plan kitchen/living room, downstairs shower room and en-suite shower room.",
21  "features": [
22    "Three bedroom town house",
23    "Situated within easy reach of Bath city centre",
24    "Garage",
25    "Parking for one vehicle",
26    "Enclosed rear garden",
27    "Large open plan kitchen/living room",
28    "Downstairs shower room",
29    "En-suite shower room",
30    "Part furnished or unfurnished",
31    "Available late March"
32  ],
33  "keyInfo": [
34    {
35      "title": "Council tax",
36      "value": "Unconfirmed"
37    }
38  ],
39  "description": "PETS CONSIDERED! This three bedroom townhouse is situated within easy reach of Bath city centre. Features include a garage, parking for one vehicle, enclosed rear garden, large open plan kitchen/living room, downstairs shower room and en-suite shower room. Available late March, Part furnished or unfurnished.The property comprisesGround FloorEntrance Porch - 3' 10'' x 5' 10'' (1.18m x 1.77m)With composite front door and storage cupboard.Hallway - 17' 9'' x 10' 9'' (5.40m x 3.27m) maxWith double panel radiator, stairs to the first floor with storage cupboard under and PVCu double glazed back door.Shower RoomWith white suite comprising quadrant shower enclosure with electric shower, close coupled w.c and hand basin with vanity unit, fully tiled walls, heated towel rail, extractor fan and window to the rear.First FloorOpen plan kitchen/living room - 27' 8'' x 14' 9'' (8.43m x 4.49m) maxWith a range of eye level and base units, worktops with tiled splashbacks, sink/drainer, integrated electric oven and ceramic hob with extractor fan over, fridge freezer and washing machine, double panel radiator and PVCu double glazed windows to the front and rear.Second FloorLandingWith storage cupboard.Bedroom 1 - 9' 0'' x 11' 8'' (2.75m x 3.56m) maxWith double panel radiator and PVCu double glazed window to the rear. En-suiteWith white suite comprising quadrant shower enclosure with mains shower, close coupled w.c and hand basin with storage under, ceiling spotlights and extractor fan.Bedroom 2 - 11' 9'' x 8' 7'' (3.57m x 2.62m)With double panel radiator and PVCu double glazed window to the front.Bedroom 3 - 10' 0'' x 5' 11'' (3.05m x 1.81m)With double panel radiator and PVCu double glazed window to the front.BathroomWith white suite comprising bath with mains shower over, low level w.c and pedestal hand basin, fully tilled walls, heated towel rail and extractor fan.ExternallyTo the frontWith parking for one small vehicle in front of the garage.GarageWith power, lighting and up and over electric door to the front. To the rearThe pretty enclosed rear garden is mainly laid to gravel with a range of mature shrubs and trees. A gate providing access to the rear.",
40  "descriptionHtml" : "Same description in formatted way",
41  "images": [
42    "https://media.onthemarket.com/properties/11192001/1435533190/image-0-1024x1024.jpg",
43    "https://media.onthemarket.com/properties/11192001/1435533190/image-1-1024x1024.jpg",
44    "https://media.onthemarket.com/properties/11192001/1435533190/image-2-1024x1024.jpg",
45    "https://media.onthemarket.com/properties/11192001/1435533190/image-3-1024x1024.jpg",
46    "https://media.onthemarket.com/properties/11192001/1435533190/image-4-1024x1024.jpg",
47    "https://media.onthemarket.com/properties/11192001/1435533190/image-5-1024x1024.jpg",
48    "https://media.onthemarket.com/properties/11192001/1435533190/image-6-1024x1024.jpg",
49    "https://media.onthemarket.com/properties/11192001/1435533190/image-7-1024x1024.jpg",
50    "https://media.onthemarket.com/properties/11192001/1435533190/image-8-1024x1024.jpg",
51    "https://media.onthemarket.com/properties/11192001/1435533190/image-9-1024x1024.jpg",
52    "https://media.onthemarket.com/properties/11192001/1435533190/image-10-1024x1024.jpg",
53    "https://media.onthemarket.com/properties/11192001/1435533190/image-11-1024x1024.jpg",
54    "https://media.onthemarket.com/properties/11192001/1435533190/image-12-1024x1024.jpg",
55    "https://media.onthemarket.com/properties/11192001/1435533190/image-13-1024x1024.jpg",
56    "https://media.onthemarket.com/properties/11192001/1435533190/image-14-1024x1024.jpg",
57    "https://media.onthemarket.com/properties/11192001/1435533190/image-15-1024x1024.jpg",
58    "https://media.onthemarket.com/properties/11192001/1435533190/image-16-1024x1024.jpg",
59    "https://media.onthemarket.com/properties/11192001/1435533190/image-17-1024x1024.jpg",
60    "https://media.onthemarket.com/properties/11192001/1435533190/image-18-1024x1024.jpg"
61  ],
62  "schools": [
63    {
64      "name": "St Andrew's Church School",
65      "distance": "0.2mi."
66    },
67    {
68      "name": "Bath Academy",
69      "distance": "0.3mi."
70    },
71    {
72      "name": "St Stephens Church School",
73      "distance": "0.5mi."
74    }
75  ]
76}

❓Limitations

Since Onthemarket allows only 1000 properties per listing/search result, you might want to break down your listing urls into smaller area if it has more than 1K results. Good News is that even if multiple list urls contains overlapping results, they will get deduplicated within same run data.

🔎 Identifying delisted properties

This actor provides you monitoring mode configuration using which you can get only incremental updates about newly added properties. In case, you also want to identify which properties are delisted from platform, you can use any of the following techniques with the help of this actor.

  1. Running Always in full scraper mode : Run this actor always in full scrape mode and cross check the new incoming batch of data with your existing database. If any property that exists in yoru database but not in newly scraped data batch, that means it's not listed anymore

  2. Use Key Value Store generated by scraper : If your are monitoring very large batch of data and you don't want to scrape everything all the time, this method involves bit of technicality but achieves the goal efectively. Apify has storage feature called Key-value store. When you run this scrape, this scraper stores every single property in key value store along with timestamp in onthemarket-properties store. Inside this store, key is property id itself and value is timestamp like this

    { lastSeen : '2023-11-02T05:59:25.763Z'}

    Whenever you run this scraper, it will update the timestamp against particular id if it finds property on the platform. e.g. if we have 2 proprties with id prop1 and prop2 and we scraped them both on November 1, key value storage would look like this :

    1prop1 -> { lastSeen : '2023-11-01T05:59:25.763Z'}
    2prop2 -> { lastSeen : '2023-11-01T05:59:25.763Z'}

    Now if you run this scraper again on December 1 and prop1 is not on the platform anymore but prop2 is still there, key value storage would change like this :

    1prop1 -> { lastSeen : '2023-11-01T05:59:25.763Z'}
    2prop2 -> { lastSeen : '2023-12-01T05:59:25.763Z'}

    That means if any property has lastSeen less than latest batch you loaded, that property is delisted now. You can directly iterate through whole Key value storage using Apify key value storage API to identify this. Please refer to this API documentation to do the same. Please remember store name generated by this scrape will be onthemarket-properties.

    Alternatively, you can iterate through your existing database active properties and use this API to identify listing status.

🙋‍♀️ For custom solutions

In case you need some custom solution, you can contact me : dhrumil@techvasu.com

Or learn more about me on github : https://github.com/dhrumil4u360

Or learn more about me on github : https://github.com/dhrumil4u360

Developer
Maintained by Community
Actor metrics
  • 1 monthly user
  • 0 stars
  • 100.0% runs succeeded
  • Created in Mar 2023
  • Modified 5 months ago