Jitty UK AI Property Scraper avatar

Jitty UK AI Property Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Jitty UK AI Property Scraper

Jitty UK AI Property Scraper

Scrape residential property listings from jitty.com, extract properties across the UK with 20+ filters, including AI vision search.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Jitty UK Property Scraper

Scrape residential property listings from jitty.com, a UK property search platform with AI-powered features, price-per-sqft analysis, and detailed property insights. Sale listings only. Extract properties across the UK with 20+ filters including AI vision search.

Features

  • UK-wide coverage - search any location (London, Manchester, Bath, etc.)
  • 20+ filters - property type, price, bedrooms, ownership, condition, style, area, date added, AI vision tags, and more
  • AI vision search - find properties by visual features (cottage, sea views, warehouse conversion, etc.)
  • Rich data - coordinates, area, tenure, EPC, council tax, agent, features, nearby stations from detail pages
  • ~23 listings per page with automatic pagination
  • Resume & recurring updates — turn on Incremental mode to get only NEW, UPDATED, and REAPPEARED properties on every scheduled run, or resume one specific interrupted crawl with resumeFromRunId.

Quick Start

Properties for sale in London

{
"mode": "search",
"location": "london",
"max_pages": 5
}

Flats under 500k in Greenwich

{
"mode": "search",
"location": "greenwich",
"property_type": "flat",
"max_price": 500000
}

Period properties with fireplaces

{
"mode": "search",
"location": "bath",
"exterior_style": "period",
"interior_features": ["fireplace"]
}

AI vision search - cottages with sea views

{
"mode": "search",
"look_for": "sea_views",
"property_type": "detached",
"max_properties": 50
}

New listings in the last 24 hours

{
"mode": "search",
"location": "london",
"date_added": "24h",
"max_pages": 3
}

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (build URL from filters) or url (use provided URLs)
urlsarray-URLs to scrape (url mode only)
locationstring-Location (e.g. "london", "bath", "greenwich", "manchester")
look_forstring-AI vision search (e.g. "cottage", "sea_views", "warehouse_conversion")
property_typestring-flat, detached, semi-detached, terraced, bungalow, maisonette, land, boat, mobile-home, parking
bedroomsinteger-Minimum bedrooms (0=Studio+)
min_priceinteger-Minimum price in GBP
max_priceinteger-Maximum price in GBP
ownershipstring-freehold, leasehold, shared-ownership, share-of-freehold
conditionstring-good, renovation-potential, renovation-needed, derelict
exterior_stylestring-period, contemporary, early-modern, late-modern
date_addedstring-24h, 3d, 1w, 1m
min_area_sqftinteger-Minimum floor area in sqft
max_area_sqftinteger-Maximum floor area in sqft
outside_spacestring-garden, large-garden, balcony, roof-terrace, communal-garden, patio
interior_featuresarray-fireplace, exposed-brickwork, high-ceilings, sash-windows, wooden-beams, vaulted-ceilings, open-plan-kitchen, kitchen-island, breakfast-bar
green_techstring-solar-panels, ev-charger, heat-pump, underfloor-heating
max_propertiesinteger10Max properties to scrape (0=unlimited)
max_pagesinteger5Max search result pages (~23 listings/page)
resumeFromRunIdstring-Continue one specific interrupted crawl (a run or dataset ID). For recurring monitoring of the same search instead, use Incremental mode below.
incrementalModebooleanfalseRecurring monitoring of this same search: the actor remembers the previous run itself and returns only NEW/UPDATED/REAPPEARED properties by default. See "Resume & recurring updates" below.
stateKeystring-Optional name for a monitoring campaign, so its incremental state stays stable or is deliberately shared. Auto-derived from your search/filter settings when left empty.
emitUnchangedbooleanfalseIncremental mode only. Also return (and bill for) properties unchanged since the last run, marked UNCHANGED.
emitExpiredbooleanfalseIncremental mode only. Also return (and bill for) properties from a previous run no longer found, marked EXPIRED, once a run has fully scanned the search (not capped, not a resume, no blocked page).
proxyobjectApify residential GBProxy configuration

Resume & recurring updates

There are two different things here — pick the one that matches what you're doing:

SituationUse
A crawl stopped and should continueresumeFromRunId
Run the same search on a schedule and receive only changesincrementalMode
Keep separate recurring campaigns for similar searchesdistinct stateKey values
Run a normal full snapshotleave both off

Resume (resumeFromRunId) continues one specific interrupted or previous large crawl: paste a run ID or dataset ID and this run skips properties already collected there, returning only the remaining new ones.

Incremental mode (incrementalMode) is for a schedule (for example, daily or weekly): the actor remembers the previous run of the same search by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED properties by default — duplicates and unchanged properties are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). State is isolated automatically per location/URL and every filter (including the detail toggle) — but not by max_properties/max_pages, which are scan-depth/output caps, not part of the tracked search; set stateKey to name or deliberately share a monitoring campaign.

Scheduled-run example — same search, run daily:

{ "mode": "search", "location": "bath", "property_type": "terraced", "incrementalMode": true }

→ every property comes back with "changeType": "NEW".

Day 2 (the schedule fires again, identical input): → properties whose price/EPC/tenure/etc. changed come back as "changeType": "UPDATED" with changedFields listing what changed, brand-new listings come back as "changeType": "NEW", properties that vanished and came back come back as "changeType": "REAPPEARED" — and properties that are still there, unchanged, are not returned at all (suppressed, not charged) unless emitUnchanged is on.

Cap semantics: max_properties counts properties actually returned this run, not scanned. If incremental mode suppresses some (unchanged) properties from a page, the run backfills from later pages up to your cap — it does not stop early just because a page was mostly unchanged.

Fields excluded from change detection: tags (the small set of AI-labeled feature pills shown on the search card) is excluded from the incremental fingerprint. Measured directly (two live fetches of the same pinned search 171s apart): jitty re-randomizes which subset of a property's features surfaces as tags on every render — the same 3 properties returned a completely different tags selection each time while every other field, including the full features list, was byte-identical. Treating it as a real change would make every property look UPDATED on every run. price, features, images, and every other field are real signals and are always compared, including a price reduction — that is exactly what a recurring monitoring run is for.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape — the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record — not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Output Fields

FieldDescription
idProperty slug/ID
titleProperty street and area
addressFull address from detail page
priceFormatted price (e.g. "£2,000,000")
price_numericPrice as integer
currencyAlways "GBP"
bedroomsNumber of bedrooms
bathroomsNumber of bathrooms
property_typeFlat, Terraced, Detached, etc.
property_type_detailMore specific type (e.g. "End of Terrace")
price_per_sqftPrice per square foot
area_sqftFloor area in square feet
ownershipFreehold, Leasehold, etc.
living_spacesNumber of living spaces
council_tax_bandCouncil tax band (A-H)
epc_current_scoreCurrent EPC score
epc_current_ratingCurrent EPC rating (A-G)
epc_potential_scorePotential EPC score
epc_potential_ratingPotential EPC rating (A-G)
lease_years_remainingLease years remaining (leasehold only)
estate_agentEstate agent name
latitudeProperty latitude
longitudeProperty longitude
tagsAI feature tags from search card
featuresComplete feature list from detail page
nearby_stationsTransport stations with distances
imagesProperty image URLs (up to 10)
image_countTotal images available
urlFull property URL

Incremental mode only. When incrementalMode is on, every returned record also carries:

FieldDescription
changeTypeNEW | UPDATED | UNCHANGED | REAPPEARED | EXPIRED
changedFieldsTop-level fields that changed since last seen; non-empty only for UPDATED
firstSeenAtWhen this property was first observed by this monitoring campaign
lastSeenAtWhen this property was last observed