What changed since your cursor
changes_sinceWhat changed since you last looked — the portal change feed. Pass the
`next_cursor` from your previous call to get only what is new; on a first
call give a scope (`postcode_districts` or `uprns`) or a `since` date,
because an unbounded read of a 14.6-million-row feed is refused.
THE CURSOR IS AN EVENT ID, not a timestamp. Rows recorded late always take
higher ids, so nothing slips behind your watermark between polls. Each
event carries both `event_date` (when the portal says it happened) and
`observed_at` (when our sweep saw it) — a backfill has an old date and a
recent observation, which is exactly why the cursor is an id.
READ `coverage.event_types` BEFORE TRUSTING AN EMPTY PAGE. `added` and
`price_reduced` are live and daily. `price_increased` and `status_changed`
are sparse and only start in late August. **`delisted` has ONE row in the
whole table: withdrawal is NOT observed, so an empty result for it means we
cannot see it, not that nothing was withdrawn.** Five change kinds a user
may ask for — planning decisions, ownership changes, a lease crossing 80 or
60 years, a new EPC, an AVM move — have no feed at all and are listed under
`coverage.not_yet_fed`. Say which of these you cannot answer.
On a price change, `price.old_price_source` says whether the old price came
from the event itself or was derived from the listing's previous event; the
portal usually reports only the new price. Where neither is available the
change is null, never zero.
UK only. Costs 5 credits. Keyed on a UPRN, not an address: call `address_autocomplete` (free) to narrow, then `address_resolve` to get one.Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No | ||
| uprns | No | ||
| cursor | No | ||
| channel | No | ||
| event_types | No | ||
| postcode_districts | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||