openapi: 3.2.0 info: title: Monocrawl Zoopla API version: 0.1.0 description: One key, one envelope, one credit meter across social, search, commerce and web data. contact: name: Monocrawl support url: https://www.monocrawl.com/contact termsOfService: https://www.monocrawl.com/legal/terms-and-conditions servers: - url: https://www.monocrawl.com security: - ApiKeyHeader: [] tags: - name: Zoopla paths: /v1/zoopla/agent: get: operationId: zoopla_agent tags: - Zoopla summary: Zoopla agent description: 'One agent branch''s page: address, telephone, website and social links, memberships, description, photos and position. Costs 2 credits per successful live response.' parameters: - name: id in: query required: true schema: type: string example: '55447' description: The branch id from zoopla/agents (or pass url, the branch's page) - name: url in: query required: false schema: type: string example: '' description: The branch's page URL instead of an id - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/agent.json title: zoopla/agent data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: _warnings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} about: description: Optional about supplied by this operation. Null means unknown. type: - string - 'null' address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' commercial: description: Optional commercial supplied by this operation. Null means unknown. type: - object - 'null' properties: {} additionalProperties: true for_sale: description: Optional for sale supplied by this operation. Null means unknown. type: - object - 'null' properties: available: description: Optional available supplied by this operation. Null means unknown. type: - number - 'null' average_asking_price: description: Optional average asking price supplied by this operation. Null means unknown. type: - number - 'null' average_weeks_on_market: description: Optional average weeks on market supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' images: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' memberships: description: Optional memberships supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' outcode: description: Optional outcode supplied by this operation. Null means unknown. type: - string - 'null' phone: description: Optional phone supplied by this operation. Null means unknown. type: - string - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string - 'null' social: description: Optional social supplied by this operation. Null means unknown. type: - object - 'null' properties: facebook: description: Optional facebook supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true staff: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} to_rent: description: Optional to rent supplied by this operation. Null means unknown. type: - object - 'null' properties: available: description: Optional available supplied by this operation. Null means unknown. type: - number - 'null' average_asking_price: description: Optional average asking price supplied by this operation. Null means unknown. type: - number - 'null' average_weeks_on_market: description: Optional average weeks on market supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - about properties: about: description: Optional about supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - commercial properties: commercial: description: Optional commercial supplied by this operation. Null means unknown. type: - object properties: {} additionalProperties: true - required: - for_sale properties: for_sale: description: Optional for sale supplied by this operation. Null means unknown. type: - object properties: available: description: Optional available supplied by this operation. Null means unknown. type: - number - 'null' average_asking_price: description: Optional average asking price supplied by this operation. Null means unknown. type: - number - 'null' average_weeks_on_market: description: Optional average weeks on market supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - id properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string minLength: 1 - required: - images properties: images: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - latitude properties: latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - required: - logo_url properties: logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - longitude properties: longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - required: - memberships properties: memberships: description: Optional memberships supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true - required: - name properties: name: description: Optional name supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - outcode properties: outcode: description: Optional outcode supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - phone properties: phone: description: Optional phone supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - postcode properties: postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - social properties: social: description: Optional social supplied by this operation. Null means unknown. type: - object properties: facebook: description: Optional facebook supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true - required: - staff properties: staff: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - to_rent properties: to_rent: description: Optional to rent supplied by this operation. Null means unknown. type: - object properties: available: description: Optional available supplied by this operation. Null means unknown. type: - number - 'null' average_asking_price: description: Optional average asking price supplied by this operation. Null means unknown. type: - number - 'null' average_weeks_on_market: description: Optional average weeks on market supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - url properties: url: description: Original source URL when supplied. type: - string minLength: 1 x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - _warnings: [] about: example address: example commercial: {} for_sale: available: 0 average_asking_price: 0 average_weeks_on_market: 0 id: example images: [] latitude: 0 logo_url: https://example.com/example longitude: 0 memberships: - name: example url: https://example.com/example name: example outcode: example phone: example platform: example postcode: example social: facebook: example staff: [] to_rent: available: 0 average_asking_price: 0 average_weeks_on_market: 0 type: example url: https://example.com/example default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 2 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/agents: get: operationId: zoopla_agents tags: - Zoopla summary: Zoopla agents description: 'The agent branches in an area with each one''s market figures: homes available, average asking price and weeks on the market, for sale and to rent. Costs 2 credits per successful live response.' parameters: - name: location in: query required: false schema: type: string example: Oxford description: A postcode, town or area name; resolved once and remembered (or pass identifier) - name: identifier in: query required: false schema: type: string example: oxford description: An area identifier from zoopla/locations or a path from zoopla/area - name: page in: query required: false schema: type: string example: '1' description: Page number (25 a page) - name: radius in: query required: false schema: type: string enum: - '0' - '0.25' - '0.5' - '1' - '3' - '5' - '10' - '15' - '20' - '30' - '40' example: '' description: 'Miles around the area: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30 or 40 Accepted values: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, 40. Case, spaces, hyphens and underscores are interchangeable.' - name: type in: query required: false schema: type: string enum: - sales - lettings - commercial - estate-agents - letting-agents - commercial-agents example: '' description: 'sales, lettings or commercial Accepted values: sales, lettings, commercial, estate-agents, letting-agents, commercial-agents. Case, spaces, hyphens and underscores are interchangeable.' - name: name in: query required: false schema: type: string example: '' description: Only agents whose name contains this - name: sort in: query required: false schema: type: string enum: - a_z - shortest_avg_age - highest_avg_price - lowest_avg_price example: a_z description: 'a_z, shortest_avg_age, highest_avg_price or lowest_avg_price Accepted values: a_z, shortest_avg_age, highest_avg_price, lowest_avg_price. Case, spaces, hyphens and underscores are interchangeable.' - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/agents.json title: zoopla/agents data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: count: description: Number of records in this response, not lifetime or total matches. type: - number - 'null' cursor: description: Opaque next-page token; pass it back unchanged. Null does not prove complete history. type: - string - 'null' has_more: description: Source continuation indicator; null means unknown. type: - boolean - 'null' items: description: Returned records. Source coverage and completeness vary. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: object properties: about: description: Optional about supplied by this operation. Null means unknown. type: - string - 'null' address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' featured: description: Optional featured supplied by this operation. Null means unknown. type: - boolean - 'null' for_sale: description: Optional for sale supplied by this operation. Null means unknown. type: - object - 'null' properties: available: description: Optional available supplied by this operation. Null means unknown. type: - number - 'null' average_asking_price: description: Optional average asking price supplied by this operation. Null means unknown. type: - number - 'null' average_weeks_on_market: description: Optional average weeks on market supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' phone: description: Optional phone supplied by this operation. Null means unknown. type: - string - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' to_rent: description: Optional to rent supplied by this operation. Null means unknown. type: - object - 'null' properties: available: description: Optional available supplied by this operation. Null means unknown. type: - number - 'null' average_asking_price: description: Optional average asking price supplied by this operation. Null means unknown. type: - number - 'null' average_weeks_on_market: description: Optional average weeks on market supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - about properties: about: description: Optional about supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - featured properties: featured: description: Optional featured supplied by this operation. Null means unknown. type: - boolean - required: - for_sale properties: for_sale: description: Optional for sale supplied by this operation. Null means unknown. type: - object properties: available: description: Optional available supplied by this operation. Null means unknown. type: - number - 'null' average_asking_price: description: Optional average asking price supplied by this operation. Null means unknown. type: - number - 'null' average_weeks_on_market: description: Optional average weeks on market supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - id properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string minLength: 1 - required: - logo_url properties: logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - name properties: name: description: Optional name supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - phone properties: phone: description: Optional phone supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - to_rent properties: to_rent: description: Optional to rent supplied by this operation. Null means unknown. type: - object properties: available: description: Optional available supplied by this operation. Null means unknown. type: - number - 'null' average_asking_price: description: Optional average asking price supplied by this operation. Null means unknown. type: - number - 'null' average_weeks_on_market: description: Optional average weeks on market supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - url properties: url: description: Original source URL when supplied. type: - string minLength: 1 location: description: Optional location supplied by this operation. Null means unknown. type: - object - 'null' properties: identifier: description: Optional identifier supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true page: description: Optional page supplied by this operation. Null means unknown. type: - number - 'null' pages: description: Optional pages supplied by this operation. Null means unknown. type: - number - 'null' total: description: Source-reported total; null is unknown. type: - number - 'null' additionalProperties: true required: - items x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - count: 0 cursor: null has_more: false items: - about: example address: example featured: false for_sale: available: 0 average_asking_price: 0 average_weeks_on_market: 0 id: example logo_url: https://example.com/example name: example phone: example platform: example to_rent: available: 0 average_asking_price: 0 average_weeks_on_market: 0 type: example url: https://example.com/example location: identifier: example name: example page: 0 pages: 0 total: 0 default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 2 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/area: get: operationId: zoopla_area tags: - Zoopla summary: Zoopla postcode area description: 'The house-prices area for a postcode: its path (for zoopla/estimates and zoopla/agents), name and kind. Costs 1 credit per successful live response.' parameters: - name: postcode in: query required: true schema: type: string example: SW2 1AH description: A full postcode, or an area name - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/area.json title: zoopla/area data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: kind: description: Optional kind supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' path: description: Optional path supplied by this operation. Null means unknown. type: - string - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' query: description: Optional query supplied by this operation. Null means unknown. type: - string - 'null' short_name: description: Optional short name supplied by this operation. Null means unknown. type: - string - 'null' type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - name properties: name: description: Optional name supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - path properties: path: description: Optional path supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - short_name properties: short_name: description: Optional short name supplied by this operation. Null means unknown. type: - string minLength: 1 x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - kind: example name: example path: example platform: example query: example short_name: example type: example default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 1 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/estimates: get: operationId: zoopla_estimates tags: - Zoopla summary: Zoopla street estimates description: Every address along one street with the portal's sale estimate, its attributes and its recorded sales, plus the street's market line (average price paid, properties sold). Costs 3 credits per successful live response. parameters: - name: path in: query required: true schema: type: string example: london/oxford-road-se19 description: A street path from zoopla/streets or zoopla/area - name: page in: query required: false schema: type: string example: '1' description: Page number - name: limit in: query required: false schema: type: string example: '12' description: Addresses per page, 1 to 50 - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/estimates.json title: zoopla/estimates data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: count: description: Number of records in this response, not lifetime or total matches. type: - number - 'null' cursor: description: Opaque next-page token; pass it back unchanged. Null does not prove complete history. type: - string - 'null' has_more: description: Source continuation indicator; null means unknown. type: - boolean - 'null' items: description: Returned records. Source coverage and completeness vary. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: object properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' attributes: description: Optional attributes supplied by this operation. Null means unknown. type: - object - 'null' properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' tenure: description: Optional tenure supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true historic_listings: description: Optional historic listings supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: {} additionalProperties: true last_sale: description: Optional last sale supplied by this operation. Null means unknown. type: - object - 'null' properties: date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' additionalProperties: true latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' sale_estimate: description: Optional sale estimate supplied by this operation. Null means unknown. type: - object - 'null' properties: confidence: description: Optional confidence supplied by this operation. Null means unknown. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true sales: description: Optional sales supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: {} additionalProperties: true type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - attributes properties: attributes: description: Optional attributes supplied by this operation. Null means unknown. type: - object properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' tenure: description: Optional tenure supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true - required: - historic_listings properties: historic_listings: description: Optional historic listings supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: {} additionalProperties: true - required: - last_sale properties: last_sale: description: Optional last sale supplied by this operation. Null means unknown. type: - object properties: date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' additionalProperties: true - required: - latitude properties: latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - required: - longitude properties: longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - required: - sale_estimate properties: sale_estimate: description: Optional sale estimate supplied by this operation. Null means unknown. type: - object properties: confidence: description: Optional confidence supplied by this operation. Null means unknown. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - sales properties: sales: description: Optional sales supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: {} additionalProperties: true - required: - uprn properties: uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string minLength: 1 page: description: Optional page supplied by this operation. Null means unknown. type: - number - 'null' street: description: Optional street supplied by this operation. Null means unknown. type: - object - 'null' properties: kind: description: Optional kind supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' path: description: Optional path supplied by this operation. Null means unknown. type: - string - 'null' short_name: description: Optional short name supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true total: description: Source-reported total; null is unknown. type: - number - 'null' additionalProperties: true required: - items x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - count: 0 cursor: null has_more: false items: - address: example attributes: bathrooms: 0 bedrooms: 0 living_rooms: 0 property_type: example tenure: example historic_listings: - {} last_sale: date: '2026-09-01T12:00:00Z' price: 0 latitude: 0 longitude: 0 platform: example sale_estimate: confidence: example value: 0 sales: - {} type: example uprn: example page: 0 street: kind: example name: example path: example short_name: example total: 0 default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 3 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/locations: get: operationId: zoopla_locations tags: - Zoopla summary: Zoopla area lookup description: The areas the portal knows for a name, each with the identifier and label the searches take. Costs 1 credit per successful live response. parameters: - name: query in: query required: true schema: type: string example: Oxford description: A postcode, town or area name - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/locations.json title: zoopla/locations data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: count: description: Number of records in this response, not lifetime or total matches. type: - number - 'null' has_more: description: Source continuation indicator; null means unknown. type: - boolean - 'null' items: description: Returned records. Source coverage and completeness vary. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: object properties: identifier: description: Optional identifier supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - identifier properties: identifier: description: Optional identifier supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - name properties: name: description: Optional name supplied by this operation. Null means unknown. type: - string minLength: 1 query: description: Optional query supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true required: - items x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - count: 0 has_more: false items: - identifier: example name: example query: example default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 1 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/property: get: operationId: zoopla_property tags: - Zoopla summary: Zoopla property description: 'One listing''s page: title, address and UPRN, rooms and floor area, price with its qualifier and price per square foot, tenure, the portal''s key facts (service charge, council tax, water…), EPC rating, description and features, photos, floorplans, transport and schools nearby, price history and the agent branch. Costs 3 credits per successful live response.' parameters: - name: id in: query required: true schema: type: string example: '69200045' description: The listing number (or pass url, the listing's page) - name: url in: query required: false schema: type: string example: '' description: The listing's page URL instead of an id - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/property.json title: zoopla/property data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: _warnings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' agent: description: Optional agent supplied by this operation. Null means unknown. type: - object - 'null' properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string - 'null' member_type: description: Optional member type supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' phone: description: Optional phone supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true auction: description: Optional auction supplied by this operation. Null means unknown. type: - boolean - 'null' bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' brochures: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} category: description: Optional category supplied by this operation. Null means unknown. type: - string - 'null' chain_free: description: Optional chain free supplied by this operation. Null means unknown. type: - boolean - 'null' condition: description: Optional condition supplied by this operation. Null means unknown. type: - string - 'null' currency: description: Optional currency supplied by this operation. Null means unknown. type: - string - 'null' description: description: Source description; null or absent means not supplied. type: - string - 'null' details: description: Optional details supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: key: description: Optional key supplied by this operation. Null means unknown. type: - string - 'null' title: description: Source title when supplied. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true epc_rating: description: Optional epc rating supplied by this operation. Null means unknown. type: - string - 'null' epcs: description: Optional epcs supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true floor_area: description: Optional floor area supplied by this operation. Null means unknown. type: - object - 'null' properties: label: description: Optional label supplied by this operation. Null means unknown. type: - string - 'null' source: description: Optional source supplied by this operation. Null means unknown. type: - string - 'null' units: description: Optional units supplied by this operation. Null means unknown. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true floorplans: description: Optional floorplans supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true highlights: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' image_count: description: Optional image count supplied by this operation. Null means unknown. type: - number - 'null' key_features: description: Optional key features supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' outcode: description: Optional outcode supplied by this operation. Null means unknown. type: - string - 'null' photos: description: Optional photos supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: caption: description: Optional caption supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' points_of_interest: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' price_history: description: Optional price history supplied by this operation. Null means unknown. type: - object - 'null' properties: changes: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} additionalProperties: true price_label: description: Optional price label supplied by this operation. Null means unknown. type: - string - 'null' price_per_area: description: Optional price per area supplied by this operation. Null means unknown. type: - string - 'null' price_qualifier: description: Optional price qualifier supplied by this operation. Null means unknown. type: - string - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' published_at: description: Source publication time when available. type: - string - 'null' retirement_home: description: Optional retirement home supplied by this operation. Null means unknown. type: - boolean - 'null' shared_ownership: description: Optional shared ownership supplied by this operation. Null means unknown. type: - boolean - 'null' status: description: Optional status supplied by this operation. Null means unknown. type: - string - 'null' street: description: Optional street supplied by this operation. Null means unknown. type: - string - 'null' tags: description: Optional tags supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' tenure: description: Optional tenure supplied by this operation. Null means unknown. type: - string - 'null' title: description: Source title when supplied. type: - string - 'null' town: description: Optional town supplied by this operation. Null means unknown. type: - string - 'null' transaction: description: Optional transaction supplied by this operation. Null means unknown. type: - string - 'null' transports: description: Optional transports supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: distance_miles: description: Optional distance miles supplied by this operation. Null means unknown. type: - number - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - agent properties: agent: description: Optional agent supplied by this operation. Null means unknown. type: - object properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string - 'null' member_type: description: Optional member type supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' phone: description: Optional phone supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true - required: - auction properties: auction: description: Optional auction supplied by this operation. Null means unknown. type: - boolean - required: - bathrooms properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - required: - bedrooms properties: bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - required: - brochures properties: brochures: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - category properties: category: description: Optional category supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - chain_free properties: chain_free: description: Optional chain free supplied by this operation. Null means unknown. type: - boolean - required: - condition properties: condition: description: Optional condition supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - currency properties: currency: description: Optional currency supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - description properties: description: description: Source description; null or absent means not supplied. type: - string minLength: 1 - required: - details properties: details: description: Optional details supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: key: description: Optional key supplied by this operation. Null means unknown. type: - string - 'null' title: description: Source title when supplied. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true - required: - epc_rating properties: epc_rating: description: Optional epc rating supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - epcs properties: epcs: description: Optional epcs supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true - required: - floor_area properties: floor_area: description: Optional floor area supplied by this operation. Null means unknown. type: - object properties: label: description: Optional label supplied by this operation. Null means unknown. type: - string - 'null' source: description: Optional source supplied by this operation. Null means unknown. type: - string - 'null' units: description: Optional units supplied by this operation. Null means unknown. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - floorplans properties: floorplans: description: Optional floorplans supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true - required: - highlights properties: highlights: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - id properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string minLength: 1 - required: - image_count properties: image_count: description: Optional image count supplied by this operation. Null means unknown. type: - number - required: - key_features properties: key_features: description: Optional key features supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' - required: - latitude properties: latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - required: - living_rooms properties: living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - required: - longitude properties: longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - required: - outcode properties: outcode: description: Optional outcode supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - photos properties: photos: description: Optional photos supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: caption: description: Optional caption supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true - required: - points_of_interest properties: points_of_interest: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - postcode properties: postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - price properties: price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - required: - price_history properties: price_history: description: Optional price history supplied by this operation. Null means unknown. type: - object properties: changes: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} additionalProperties: true - required: - price_label properties: price_label: description: Optional price label supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - price_per_area properties: price_per_area: description: Optional price per area supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - price_qualifier properties: price_qualifier: description: Optional price qualifier supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - property_type properties: property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - published_at properties: published_at: description: Source publication time when available. type: - string minLength: 1 - required: - retirement_home properties: retirement_home: description: Optional retirement home supplied by this operation. Null means unknown. type: - boolean - required: - shared_ownership properties: shared_ownership: description: Optional shared ownership supplied by this operation. Null means unknown. type: - boolean - required: - street properties: street: description: Optional street supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - tags properties: tags: description: Optional tags supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' - required: - tenure properties: tenure: description: Optional tenure supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - title properties: title: description: Source title when supplied. type: - string minLength: 1 - required: - town properties: town: description: Optional town supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - transaction properties: transaction: description: Optional transaction supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - transports properties: transports: description: Optional transports supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: distance_miles: description: Optional distance miles supplied by this operation. Null means unknown. type: - number - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true - required: - uprn properties: uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - url properties: url: description: Original source URL when supplied. type: - string minLength: 1 x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - _warnings: [] address: example agent: id: example logo_url: https://example.com/example member_type: example name: example phone: example url: https://example.com/example auction: false bathrooms: 0 bedrooms: 0 brochures: [] category: example chain_free: false condition: example currency: example description: example details: - key: example title: example value: example epc_rating: example epcs: - url: https://example.com/example floor_area: label: example source: example units: example value: 0 floorplans: - url: https://example.com/example highlights: [] id: example image_count: 0 key_features: - example latitude: 0 living_rooms: 0 longitude: 0 outcode: example photos: - caption: example url: https://example.com/example platform: example points_of_interest: [] postcode: example price: 0 price_history: changes: [] price_label: example price_per_area: example price_qualifier: example property_type: example published_at: '2026-09-01T12:00:00Z' retirement_home: false shared_ownership: false status: example street: example tags: - example tenure: example title: example town: example transaction: example transports: - distance_miles: 0 name: example type: example type: example uprn: example url: https://example.com/example default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 3 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/property-history: get: operationId: zoopla_property_history tags: - Zoopla summary: Zoopla property history description: The recorded sales of one address (date, price, change since the sale before) and the listings the portal has seen for it. Costs 2 credits per successful live response. parameters: - name: uprn in: query required: true schema: type: string example: '10013983744' description: The property's UPRN, from zoopla/property or zoopla/estimates - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/property-history.json title: zoopla/property-history data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: _warnings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} listings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' sales: description: Optional sales supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: change: description: Optional change supplied by this operation. Null means unknown. type: - number - 'null' change_pct: description: Optional change pct supplied by this operation. Null means unknown. type: - number - 'null' date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' additionalProperties: true type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - listings properties: listings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - sales properties: sales: description: Optional sales supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: change: description: Optional change supplied by this operation. Null means unknown. type: - number - 'null' change_pct: description: Optional change pct supplied by this operation. Null means unknown. type: - number - 'null' date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' additionalProperties: true - required: - uprn properties: uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string minLength: 1 x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - _warnings: [] listings: [] platform: example sales: - change: 0 change_pct: 0 date: '2026-09-01T12:00:00Z' price: 0 type: example uprn: example default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 2 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/search-rent: get: operationId: zoopla_search_rent tags: - Zoopla summary: Zoopla homes to rent description: 'Homes to rent in an area: address, title, rooms, monthly rent and its label, available-from date, agent, photos and position; the portal''s featured homes beside them. Costs 3 credits per successful live response.' parameters: - name: location in: query required: false schema: type: string example: Oxford description: A postcode, town or area name; resolved to the portal's identifier once and remembered (or pass identifier and label) - name: identifier in: query required: false schema: type: string example: oxford description: An area identifier from zoopla/locations - name: label in: query required: false schema: type: string example: Oxford, Oxfordshire description: The area's label from zoopla/locations, sent with the identifier - name: page in: query required: false schema: type: string example: '1' description: Page number - name: radius in: query required: false schema: type: string enum: - '0' - '0.25' - '0.5' - '1' - '3' - '5' - '10' - '15' - '20' - '30' - '40' example: '' description: 'Miles around the area: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30 or 40 Accepted values: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, 40. Case, spaces, hyphens and underscores are interchangeable.' - name: min_price in: query required: false schema: type: string example: '' description: Minimum monthly rent in pounds - name: max_price in: query required: false schema: type: string example: '' description: Maximum monthly rent in pounds - name: min_bedrooms in: query required: false schema: type: string example: '' description: Minimum bedrooms - name: max_bedrooms in: query required: false schema: type: string example: '' description: Maximum bedrooms - name: min_bathrooms in: query required: false schema: type: string example: '' description: Minimum bathrooms - name: max_bathrooms in: query required: false schema: type: string example: '' description: Maximum bathrooms - name: property_type in: query required: false schema: type: array items: type: string enum: - detached - semi_detached - terraced - flats - bungalow style: form explode: false example: - flats description: 'detached, semi_detached, terraced, flats, bungalow; several separated by commas Accepted values (comma-separated): detached, semi_detached, terraced, flats, bungalow. Case, spaces, hyphens and underscores are interchangeable.' - name: sort in: query required: false schema: type: string enum: - newest - newest_listings - highest_price - lowest_price - most_reduced example: newest description: 'newest, highest_price, lowest_price or most_reduced Accepted values: newest, newest_listings, highest_price, lowest_price, most_reduced. Case, spaces, hyphens and underscores are interchangeable.' - name: keywords in: query required: false schema: type: string example: '' description: Words the listing must mention - name: must_have in: query required: false schema: type: string style: form explode: false x-known-values: - has_garden - has_parking_garage - has_balcony_terrace x-values-from: Current property portal filters; additional portal-issued tokens are accepted. example: '' description: has_garden, has_parking_garage, has_balcony_terrace and the portal's other must-haves; separated by commas - name: features in: query required: false schema: type: string example: '' description: The portal's property-feature codes, separated by commas - name: added in: query required: false schema: type: string enum: - '1' - '3' - '7' - '14' - '30' - 24_hours - 3_days - 7_days - 14_days - 30_days example: '' description: 'Only homes added in the last 1, 3, 7, 14 or 30 days Accepted values: 1, 3, 7, 14, 30, 24_hours, 3_days, 7_days, 14_days, 30_days. Case, spaces, hyphens and underscores are interchangeable.' - name: include_rented in: query required: false schema: type: string example: 'false' description: Include homes already let or let agreed - name: furnished in: query required: false schema: type: string enum: - any - furnished - part_furnished - unfurnished example: '' description: 'any, furnished, part_furnished or unfurnished Accepted values: any, furnished, part_furnished, unfurnished. Case, spaces, hyphens and underscores are interchangeable.' - name: available_from in: query required: false schema: type: string enum: - now - 1months - 3months - 6months - 12months example: '' description: 'now, 1months, 3months, 6months or 12months Accepted values: now, 1months, 3months, 6months, 12months. Case, spaces, hyphens and underscores are interchangeable.' - name: retirement_homes in: query required: false schema: type: string enum: - include - exclude - only example: '' description: 'include, exclude or only Accepted values: include, exclude, only. Case, spaces, hyphens and underscores are interchangeable.' - name: house_share in: query required: false schema: type: string enum: - include - exclude - only example: '' description: 'include, exclude or only Accepted values: include, exclude, only. Case, spaces, hyphens and underscores are interchangeable.' - name: student in: query required: false schema: type: string enum: - include - exclude - only example: '' description: 'Student accommodation: include, exclude or only Accepted values: include, exclude, only. Case, spaces, hyphens and underscores are interchangeable.' - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/search-rent.json title: zoopla/search-rent data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: _warnings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} channel: description: Optional channel supplied by this operation. Null means unknown. type: - string - 'null' count: description: Number of records in this response, not lifetime or total matches. type: - number - 'null' cursor: description: Opaque next-page token; pass it back unchanged. Null does not prove complete history. type: - string - 'null' extended: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} featured: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} has_more: description: Source continuation indicator; null means unknown. type: - boolean - 'null' items: description: Returned records. Source coverage and completeness vary. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: object properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' agent: description: Optional agent supplied by this operation. Null means unknown. type: - object - 'null' properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' phone: description: Optional phone supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true alternative_price_label: description: Optional alternative price label supplied by this operation. Null means unknown. type: - string - 'null' available_from: description: Optional available from supplied by this operation. Null means unknown. type: - string - 'null' bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' currency: description: Optional currency supplied by this operation. Null means unknown. type: - string - 'null' flag: description: Optional flag supplied by this operation. Null means unknown. type: - string - 'null' floor_area: description: Optional floor area supplied by this operation. Null means unknown. type: - object - 'null' properties: label: description: Optional label supplied by this operation. Null means unknown. type: - string - 'null' source: description: Optional source supplied by this operation. Null means unknown. type: - string - 'null' units: description: Optional units supplied by this operation. Null means unknown. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true floorplan_count: description: Optional floorplan count supplied by this operation. Null means unknown. type: - number - 'null' highlights: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' image_count: description: Optional image count supplied by this operation. Null means unknown. type: - number - 'null' image_url: description: Optional image url supplied by this operation. Null means unknown. type: - string - 'null' images: description: Optional images supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' listed_on: description: Optional listed on supplied by this operation. Null means unknown. type: - string - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' premium: description: Optional premium supplied by this operation. Null means unknown. type: - boolean - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' price_label: description: Optional price label supplied by this operation. Null means unknown. type: - string - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' short_price: description: Optional short price supplied by this operation. Null means unknown. type: - string - 'null' summary: description: Optional summary supplied by this operation. Null means unknown. type: - string - 'null' tags: description: Optional tags supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' title: description: Source title when supplied. type: - string - 'null' transports: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' under_offer: description: Optional under offer supplied by this operation. Null means unknown. type: - boolean - 'null' url: description: Original source URL when supplied. type: - string - 'null' video_count: description: Optional video count supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true allOf: - anyOf: - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - agent properties: agent: description: Optional agent supplied by this operation. Null means unknown. type: - object properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' phone: description: Optional phone supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true - required: - alternative_price_label properties: alternative_price_label: description: Optional alternative price label supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - available_from properties: available_from: description: Optional available from supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - bathrooms properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - required: - bedrooms properties: bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - required: - currency properties: currency: description: Optional currency supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - flag properties: flag: description: Optional flag supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - floor_area properties: floor_area: description: Optional floor area supplied by this operation. Null means unknown. type: - object properties: label: description: Optional label supplied by this operation. Null means unknown. type: - string - 'null' source: description: Optional source supplied by this operation. Null means unknown. type: - string - 'null' units: description: Optional units supplied by this operation. Null means unknown. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - floorplan_count properties: floorplan_count: description: Optional floorplan count supplied by this operation. Null means unknown. type: - number - required: - highlights properties: highlights: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - id properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string minLength: 1 - required: - image_count properties: image_count: description: Optional image count supplied by this operation. Null means unknown. type: - number - required: - image_url properties: image_url: description: Optional image url supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - images properties: images: description: Optional images supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' - required: - listed_on properties: listed_on: description: Optional listed on supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - living_rooms properties: living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - required: - premium properties: premium: description: Optional premium supplied by this operation. Null means unknown. type: - boolean - required: - price properties: price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - required: - price_label properties: price_label: description: Optional price label supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - property_type properties: property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - short_price properties: short_price: description: Optional short price supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - summary properties: summary: description: Optional summary supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - tags properties: tags: description: Optional tags supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' - required: - title properties: title: description: Source title when supplied. type: - string minLength: 1 - required: - transports properties: transports: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - under_offer properties: under_offer: description: Optional under offer supplied by this operation. Null means unknown. type: - boolean - required: - url properties: url: description: Original source URL when supplied. type: - string minLength: 1 - required: - video_count properties: video_count: description: Optional video count supplied by this operation. Null means unknown. type: - number location: description: Optional location supplied by this operation. Null means unknown. type: - object - 'null' properties: identifier: description: Optional identifier supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true page: description: Optional page supplied by this operation. Null means unknown. type: - number - 'null' pages: description: Optional pages supplied by this operation. Null means unknown. type: - number - 'null' total: description: Source-reported total; null is unknown. type: - number - 'null' additionalProperties: true required: - items x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - _warnings: [] channel: example count: 0 cursor: null extended: [] featured: [] has_more: false items: - address: example agent: id: example logo_url: https://example.com/example name: example phone: example url: https://example.com/example alternative_price_label: example available_from: example bathrooms: 0 bedrooms: 0 currency: example flag: example floor_area: label: example source: example units: example value: 0 floorplan_count: 0 highlights: [] id: example image_count: 0 image_url: https://example.com/example images: - example listed_on: example living_rooms: 0 platform: example premium: false price: 0 price_label: example property_type: example short_price: example summary: example tags: - example title: example transports: [] type: example under_offer: false url: https://example.com/example video_count: 0 location: identifier: example name: example page: 0 pages: 0 total: 0 default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 3 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/search-sale: get: operationId: zoopla_search_sale tags: - Zoopla summary: Zoopla homes for sale description: 'Homes for sale in an area: address, title, rooms, price and its label, flag, agent, photos and position; the portal''s featured homes beside them. Costs 3 credits per successful live response.' parameters: - name: location in: query required: false schema: type: string example: Oxford description: A postcode, town or area name; resolved to the portal's identifier once and remembered (or pass identifier and label) - name: identifier in: query required: false schema: type: string example: oxford description: An area identifier from zoopla/locations - name: label in: query required: false schema: type: string example: Oxford, Oxfordshire description: The area's label from zoopla/locations, sent with the identifier - name: page in: query required: false schema: type: string example: '1' description: Page number - name: radius in: query required: false schema: type: string enum: - '0' - '0.25' - '0.5' - '1' - '3' - '5' - '10' - '15' - '20' - '30' - '40' example: '' description: 'Miles around the area: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30 or 40 Accepted values: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, 40. Case, spaces, hyphens and underscores are interchangeable.' - name: min_price in: query required: false schema: type: string example: '' description: Minimum asking price in pounds - name: max_price in: query required: false schema: type: string example: '' description: Maximum asking price in pounds - name: min_bedrooms in: query required: false schema: type: string example: '' description: Minimum bedrooms - name: max_bedrooms in: query required: false schema: type: string example: '' description: Maximum bedrooms - name: min_bathrooms in: query required: false schema: type: string example: '' description: Minimum bathrooms - name: max_bathrooms in: query required: false schema: type: string example: '' description: Maximum bathrooms - name: property_type in: query required: false schema: type: array items: type: string enum: - detached - semi_detached - terraced - flats - bungalow - farms_land - park_home style: form explode: false example: - flats - terraced description: 'detached, semi_detached, terraced, flats, bungalow, farms_land, park_home; several separated by commas Accepted values (comma-separated): detached, semi_detached, terraced, flats, bungalow, farms_land, park_home. Case, spaces, hyphens and underscores are interchangeable.' - name: sort in: query required: false schema: type: string enum: - newest - newest_listings - highest_price - lowest_price - most_reduced example: newest description: 'newest, highest_price, lowest_price or most_reduced Accepted values: newest, newest_listings, highest_price, lowest_price, most_reduced. Case, spaces, hyphens and underscores are interchangeable.' - name: keywords in: query required: false schema: type: string example: '' description: Words the listing must mention - name: must_have in: query required: false schema: type: string style: form explode: false x-known-values: - has_garden - has_parking_garage - has_balcony_terrace x-values-from: Current property portal filters; additional portal-issued tokens are accepted. example: '' description: has_garden, has_parking_garage, has_balcony_terrace and the portal's other must-haves; separated by commas - name: features in: query required: false schema: type: string example: '' description: The portal's property-feature codes, separated by commas - name: added in: query required: false schema: type: string enum: - '1' - '3' - '7' - '14' - '30' - 24_hours - 3_days - 7_days - 14_days - 30_days example: '' description: 'Only homes added in the last 1, 3, 7, 14 or 30 days Accepted values: 1, 3, 7, 14, 30, 24_hours, 3_days, 7_days, 14_days, 30_days. Case, spaces, hyphens and underscores are interchangeable.' - name: include_sold in: query required: false schema: type: string example: 'false' description: Include homes under offer or sold subject to contract - name: new_homes in: query required: false schema: type: string enum: - include - exclude - only example: '' description: 'include, exclude or only Accepted values: include, exclude, only. Case, spaces, hyphens and underscores are interchangeable.' - name: retirement_homes in: query required: false schema: type: string enum: - include - exclude - only example: '' description: 'include, exclude or only Accepted values: include, exclude, only. Case, spaces, hyphens and underscores are interchangeable.' - name: auction in: query required: false schema: type: string enum: - include - exclude - only example: '' description: 'include, exclude or only Accepted values: include, exclude, only. Case, spaces, hyphens and underscores are interchangeable.' - name: shared_ownership in: query required: false schema: type: string enum: - include - exclude - only example: '' description: 'include, exclude or only Accepted values: include, exclude, only. Case, spaces, hyphens and underscores are interchangeable.' - name: show_only in: query required: false schema: type: string example: '' description: chainFree, reducedPriceOnly; separated by commas - name: ownership in: query required: false schema: type: array items: type: string enum: - leasehold - freehold - share_of_freehold style: form explode: false example: - '' description: 'leasehold, freehold, share_of_freehold; separated by commas Accepted values (comma-separated): leasehold, freehold, share_of_freehold. Case, spaces, hyphens and underscores are interchangeable.' - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/search-sale.json title: zoopla/search-sale data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: _warnings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} channel: description: Optional channel supplied by this operation. Null means unknown. type: - string - 'null' count: description: Number of records in this response, not lifetime or total matches. type: - number - 'null' cursor: description: Opaque next-page token; pass it back unchanged. Null does not prove complete history. type: - string - 'null' extended: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} featured: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} has_more: description: Source continuation indicator; null means unknown. type: - boolean - 'null' items: description: Returned records. Source coverage and completeness vary. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: object properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' agent: description: Optional agent supplied by this operation. Null means unknown. type: - object - 'null' properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' phone: description: Optional phone supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' currency: description: Optional currency supplied by this operation. Null means unknown. type: - string - 'null' flag: description: Optional flag supplied by this operation. Null means unknown. type: - string - 'null' floor_area: description: Optional floor area supplied by this operation. Null means unknown. type: - object - 'null' properties: label: description: Optional label supplied by this operation. Null means unknown. type: - string - 'null' source: description: Optional source supplied by this operation. Null means unknown. type: - string - 'null' units: description: Optional units supplied by this operation. Null means unknown. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true floorplan_count: description: Optional floorplan count supplied by this operation. Null means unknown. type: - number - 'null' highlights: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' image_count: description: Optional image count supplied by this operation. Null means unknown. type: - number - 'null' image_url: description: Optional image url supplied by this operation. Null means unknown. type: - string - 'null' images: description: Optional images supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' listed_on: description: Optional listed on supplied by this operation. Null means unknown. type: - string - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' premium: description: Optional premium supplied by this operation. Null means unknown. type: - boolean - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' price_drop: description: Optional price drop supplied by this operation. Null means unknown. type: - boolean - 'null' price_label: description: Optional price label supplied by this operation. Null means unknown. type: - string - 'null' price_qualifier: description: Optional price qualifier supplied by this operation. Null means unknown. type: - string - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' short_price: description: Optional short price supplied by this operation. Null means unknown. type: - string - 'null' summary: description: Optional summary supplied by this operation. Null means unknown. type: - string - 'null' tags: description: Optional tags supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' title: description: Source title when supplied. type: - string - 'null' transports: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' under_offer: description: Optional under offer supplied by this operation. Null means unknown. type: - boolean - 'null' url: description: Original source URL when supplied. type: - string - 'null' video_count: description: Optional video count supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true allOf: - anyOf: - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - agent properties: agent: description: Optional agent supplied by this operation. Null means unknown. type: - object properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' logo_url: description: Optional logo url supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' phone: description: Optional phone supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true - required: - bathrooms properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - required: - bedrooms properties: bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - required: - currency properties: currency: description: Optional currency supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - flag properties: flag: description: Optional flag supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - floor_area properties: floor_area: description: Optional floor area supplied by this operation. Null means unknown. type: - object properties: label: description: Optional label supplied by this operation. Null means unknown. type: - string - 'null' source: description: Optional source supplied by this operation. Null means unknown. type: - string - 'null' units: description: Optional units supplied by this operation. Null means unknown. type: - string - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - floorplan_count properties: floorplan_count: description: Optional floorplan count supplied by this operation. Null means unknown. type: - number - required: - highlights properties: highlights: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - id properties: id: description: Source identifier. Preserve the supplied type and exact value. type: - string minLength: 1 - required: - image_count properties: image_count: description: Optional image count supplied by this operation. Null means unknown. type: - number - required: - image_url properties: image_url: description: Optional image url supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - images properties: images: description: Optional images supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' - required: - listed_on properties: listed_on: description: Optional listed on supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - living_rooms properties: living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - required: - premium properties: premium: description: Optional premium supplied by this operation. Null means unknown. type: - boolean - required: - price properties: price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - required: - price_drop properties: price_drop: description: Optional price drop supplied by this operation. Null means unknown. type: - boolean - required: - price_label properties: price_label: description: Optional price label supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - price_qualifier properties: price_qualifier: description: Optional price qualifier supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - property_type properties: property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - short_price properties: short_price: description: Optional short price supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - summary properties: summary: description: Optional summary supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - tags properties: tags: description: Optional tags supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - string - 'null' - required: - title properties: title: description: Source title when supplied. type: - string minLength: 1 - required: - transports properties: transports: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - under_offer properties: under_offer: description: Optional under offer supplied by this operation. Null means unknown. type: - boolean - required: - url properties: url: description: Original source URL when supplied. type: - string minLength: 1 - required: - video_count properties: video_count: description: Optional video count supplied by this operation. Null means unknown. type: - number location: description: Optional location supplied by this operation. Null means unknown. type: - object - 'null' properties: identifier: description: Optional identifier supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true page: description: Optional page supplied by this operation. Null means unknown. type: - number - 'null' pages: description: Optional pages supplied by this operation. Null means unknown. type: - number - 'null' total: description: Source-reported total; null is unknown. type: - number - 'null' additionalProperties: true required: - items x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - _warnings: [] channel: example count: 0 cursor: null extended: [] featured: [] has_more: false items: - address: example agent: id: example logo_url: https://example.com/example name: example phone: example url: https://example.com/example bathrooms: 0 bedrooms: 0 currency: example flag: example floor_area: label: example source: example units: example value: 0 floorplan_count: 0 highlights: [] id: example image_count: 0 image_url: https://example.com/example images: - example listed_on: example living_rooms: 0 platform: example premium: false price: 0 price_drop: false price_label: example price_qualifier: example property_type: example short_price: example summary: example tags: - example title: example transports: [] type: example under_offer: false url: https://example.com/example video_count: 0 location: identifier: example name: example page: 0 pages: 0 total: 0 default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 3 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/sold-prices: get: operationId: zoopla_sold_prices tags: - Zoopla summary: Zoopla sold prices description: 'The Land Registry sales in an area as the portal indexes them: each address with its last sale, its attributes and its UPRN, and the area''s average prices by property type. Costs 3 credits per successful live response.' parameters: - name: location in: query required: true schema: type: string example: Oxford description: A town, area, postcode or outcode, or a path such as london/croydon - name: page in: query required: false schema: type: string example: '1' description: Page number (25 a page) - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/sold-prices.json title: zoopla/sold-prices data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: area: description: Optional area supplied by this operation. Null means unknown. type: - object - 'null' properties: average_prices: description: Optional average prices supplied by this operation. Null means unknown. type: - object - 'null' properties: all: description: Optional all supplied by this operation. Null means unknown. type: - number - 'null' detached: description: Optional detached supplied by this operation. Null means unknown. type: - number - 'null' flat: description: Optional flat supplied by this operation. Null means unknown. type: - number - 'null' semi_detached: description: Optional semi detached supplied by this operation. Null means unknown. type: - number - 'null' terraced: description: Optional terraced supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true county: description: Optional county supplied by this operation. Null means unknown. type: - string - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' path: description: Optional path supplied by this operation. Null means unknown. type: - string - 'null' region: description: Optional region supplied by this operation. Null means unknown. type: - string - 'null' short_name: description: Optional short name supplied by this operation. Null means unknown. type: - string - 'null' town: description: Optional town supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true count: description: Number of records in this response, not lifetime or total matches. type: - number - 'null' cursor: description: Opaque next-page token; pass it back unchanged. Null does not prove complete history. type: - string - 'null' has_more: description: Source continuation indicator; null means unknown. type: - boolean - 'null' items: description: Returned records. Source coverage and completeness vary. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: object properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' attributes: description: Optional attributes supplied by this operation. Null means unknown. type: - object - 'null' properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' floor_area_sq_m: description: Optional floor area sq m supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' tenure: description: Optional tenure supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true last_sale: description: Optional last sale supplied by this operation. Null means unknown. type: - object - 'null' properties: currency: description: Optional currency supplied by this operation. Null means unknown. type: - string - 'null' date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' additionalProperties: true latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string - 'null' type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - attributes properties: attributes: description: Optional attributes supplied by this operation. Null means unknown. type: - object properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' floor_area_sq_m: description: Optional floor area sq m supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' tenure: description: Optional tenure supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true - required: - last_sale properties: last_sale: description: Optional last sale supplied by this operation. Null means unknown. type: - object properties: currency: description: Optional currency supplied by this operation. Null means unknown. type: - string - 'null' date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' additionalProperties: true - required: - latitude properties: latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - required: - longitude properties: longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - required: - postcode properties: postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - uprn properties: uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - url properties: url: description: Original source URL when supplied. type: - string minLength: 1 page: description: Optional page supplied by this operation. Null means unknown. type: - number - 'null' pages: description: Optional pages supplied by this operation. Null means unknown. type: - number - 'null' per_page: description: Optional per page supplied by this operation. Null means unknown. type: - number - 'null' total: description: Source-reported total; null is unknown. type: - number - 'null' additionalProperties: true required: - items x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - area: average_prices: all: 0 detached: 0 flat: 0 semi_detached: 0 terraced: 0 county: example name: example path: example region: example short_name: example town: example url: https://example.com/example count: 0 cursor: null has_more: false items: - address: example attributes: bathrooms: 0 bedrooms: 0 floor_area_sq_m: 0 living_rooms: 0 property_type: example tenure: example last_sale: currency: example date: '2026-09-01T12:00:00Z' price: 0 latitude: 0 longitude: 0 platform: example postcode: example type: example uprn: example url: https://example.com/example page: 0 pages: 0 per_page: 0 total: 0 default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 3 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/streets: get: operationId: zoopla_streets tags: - Zoopla summary: Zoopla street lookup description: The streets and addresses the house-prices index knows for a name, each with the path zoopla/estimates takes. Costs 1 credit per successful live response. parameters: - name: query in: query required: true schema: type: string example: Oxford Road description: Part of a street name or address - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/streets.json title: zoopla/streets data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: count: description: Number of records in this response, not lifetime or total matches. type: - number - 'null' has_more: description: Source continuation indicator; null means unknown. type: - boolean - 'null' items: description: Returned records. Source coverage and completeness vary. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: object properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' path: description: Optional path supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - path properties: path: description: Optional path supplied by this operation. Null means unknown. type: - string minLength: 1 query: description: Optional query supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true required: - items x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - count: 0 has_more: false items: - address: example path: example query: example default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 1 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true /v1/zoopla/valuation: get: operationId: zoopla_valuation tags: - Zoopla summary: Zoopla valuation description: 'The portal''s valuation of one address, by UPRN or by street address: the current sale and rent estimates with their range and confidence, the estimate''s history, the Land Registry sales, live and similar listings nearby, and the schools and stations around it. Costs 3 credits per successful live response.' parameters: - name: uprn in: query required: false schema: type: string example: '200001198316' description: The property's UPRN, from zoopla/property, zoopla/estimates, zoopla/streets or zoopla/sold-prices (or pass address) - name: address in: query required: false schema: type: string example: 45 Princes Avenue, South Croydon CR2 9BE description: A street address with its postcode instead of a UPRN - name: dry_run in: query required: false schema: type: string enum: - '1' - '0' - 'true' - 'false' example: '1' description: 'Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.' - name: X-Max-Credits in: header required: false schema: type: integer minimum: 0 maximum: 9007199254740991 example: 5 description: Optional credit reservation ceiling for this individual request. Send a non-negative integer in decimal digits. Live execution checks the required reservation after resolving free cache hits or buffered continuation, before charging or calling a supplier. A higher reservation returns HTTP 422 INVALID_PARAMETERS with reason max_credits_exceeded and charges nothing. Invalid header values also return 422. Zero permits only a zero-credit reservation; omitting the header uses normal pricing. dry_run remains a free preview. This does not cap later requests, batches or scheduled runs. security: - ApiKeyHeader: [] - BearerKey: [] responses: '200': description: 'The common success envelope; `data` is endpoint-specific. Many lists use items/count/cursor; bundles use named collections and their documented continuation metadata. HTTP 200 can contain a partial bundle: inspect complete, partial and legs where supplied.' content: application/json: schema: allOf: - $ref: '#/components/schemas/Success' - type: object properties: data: $schema: https://json-schema.org/draft/2020-12/schema $id: https://www.monocrawl.com/schemas/zoopla/valuation.json title: zoopla/valuation data fields description: Optional data supplied by this operation. Null means unknown. type: object properties: _warnings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' attributes: description: Optional attributes supplied by this operation. Null means unknown. type: - object - 'null' properties: property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true country: description: Optional country supplied by this operation. Null means unknown. type: - string - 'null' estimate_history: description: Optional estimate history supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: confidence: description: Optional confidence supplied by this operation. Null means unknown. type: - string - 'null' date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' high: description: Optional high supplied by this operation. Null means unknown. type: - number - 'null' low: description: Optional low supplied by this operation. Null means unknown. type: - number - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true historic_listings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' live_listings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' outcode: description: Optional outcode supplied by this operation. Null means unknown. type: - string - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' points_of_interest: description: Optional points of interest supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' distance_miles: description: Optional distance miles supplied by this operation. Null means unknown. type: - number - 'null' latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string - 'null' rent_estimate: description: Optional rent estimate supplied by this operation. Null means unknown. type: - object - 'null' properties: high: description: Optional high supplied by this operation. Null means unknown. type: - number - 'null' low: description: Optional low supplied by this operation. Null means unknown. type: - number - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true sale_estimate: description: Optional sale estimate supplied by this operation. Null means unknown. type: - object - 'null' properties: confidence: description: Optional confidence supplied by this operation. Null means unknown. type: - string - 'null' high: description: Optional high supplied by this operation. Null means unknown. type: - number - 'null' low: description: Optional low supplied by this operation. Null means unknown. type: - number - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true sales: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} similar_listings: description: Optional similar listings supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' image_url: description: Optional image url supplied by this operation. Null means unknown. type: - string - 'null' latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' price_label: description: Optional price label supplied by this operation. Null means unknown. type: - string - 'null' price_qualifier: description: Optional price qualifier supplied by this operation. Null means unknown. type: - string - 'null' title: description: Source title when supplied. type: - string - 'null' type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true similar_properties: description: Optional similar properties supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' attributes: description: Optional attributes supplied by this operation. Null means unknown. type: - object - 'null' properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' tenure: description: Optional tenure supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true country: description: Optional country supplied by this operation. Null means unknown. type: - string - 'null' historic_listings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} last_sale: description: Optional last sale supplied by this operation. Null means unknown. type: - object - 'null' properties: date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' additionalProperties: true latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' outcode: description: Optional outcode supplied by this operation. Null means unknown. type: - string - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string - 'null' sales: description: Optional sales supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: {} additionalProperties: true type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true allOf: - anyOf: - required: - address properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - attributes properties: attributes: description: Optional attributes supplied by this operation. Null means unknown. type: - object properties: property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true - required: - country properties: country: description: Optional country supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - estimate_history properties: estimate_history: description: Optional estimate history supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: confidence: description: Optional confidence supplied by this operation. Null means unknown. type: - string - 'null' date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' high: description: Optional high supplied by this operation. Null means unknown. type: - number - 'null' low: description: Optional low supplied by this operation. Null means unknown. type: - number - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - historic_listings properties: historic_listings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - latitude properties: latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - required: - live_listings properties: live_listings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - longitude properties: longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - required: - outcode properties: outcode: description: Optional outcode supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - points_of_interest properties: points_of_interest: description: Optional points of interest supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' distance_miles: description: Optional distance miles supplied by this operation. Null means unknown. type: - number - 'null' latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' name: description: Optional name supplied by this operation. Null means unknown. type: - string - 'null' type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true - required: - postcode properties: postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string minLength: 1 - required: - rent_estimate properties: rent_estimate: description: Optional rent estimate supplied by this operation. Null means unknown. type: - object properties: high: description: Optional high supplied by this operation. Null means unknown. type: - number - 'null' low: description: Optional low supplied by this operation. Null means unknown. type: - number - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - sale_estimate properties: sale_estimate: description: Optional sale estimate supplied by this operation. Null means unknown. type: - object properties: confidence: description: Optional confidence supplied by this operation. Null means unknown. type: - string - 'null' high: description: Optional high supplied by this operation. Null means unknown. type: - number - 'null' low: description: Optional low supplied by this operation. Null means unknown. type: - number - 'null' value: description: Optional value supplied by this operation. Null means unknown. type: - number - 'null' additionalProperties: true - required: - sales properties: sales: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array items: {} - required: - similar_listings properties: similar_listings: description: Optional similar listings supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' id: description: Source identifier. Preserve the supplied type and exact value. type: - string - 'null' image_url: description: Optional image url supplied by this operation. Null means unknown. type: - string - 'null' latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' price_label: description: Optional price label supplied by this operation. Null means unknown. type: - string - 'null' price_qualifier: description: Optional price qualifier supplied by this operation. Null means unknown. type: - string - 'null' title: description: Source title when supplied. type: - string - 'null' type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' url: description: Original source URL when supplied. type: - string - 'null' additionalProperties: true - required: - similar_properties properties: similar_properties: description: Optional similar properties supplied by this operation. Null means unknown. type: - array items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: address: description: Optional address supplied by this operation. Null means unknown. type: - string - 'null' attributes: description: Optional attributes supplied by this operation. Null means unknown. type: - object - 'null' properties: bathrooms: description: Optional bathrooms supplied by this operation. Null means unknown. type: - number - 'null' bedrooms: description: Optional bedrooms supplied by this operation. Null means unknown. type: - number - 'null' living_rooms: description: Optional living rooms supplied by this operation. Null means unknown. type: - number - 'null' property_type: description: Optional property type supplied by this operation. Null means unknown. type: - string - 'null' tenure: description: Optional tenure supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true country: description: Optional country supplied by this operation. Null means unknown. type: - string - 'null' historic_listings: description: Source array was empty in the reviewed captures; item fields remain unspecified. type: - array - 'null' items: {} last_sale: description: Optional last sale supplied by this operation. Null means unknown. type: - object - 'null' properties: date: description: Optional date supplied by this operation. Null means unknown. type: - string - 'null' price: description: Source price. Currency, taxes and availability depend on the listing. type: - number - 'null' additionalProperties: true latitude: description: Optional latitude supplied by this operation. Null means unknown. type: - number - 'null' longitude: description: Optional longitude supplied by this operation. Null means unknown. type: - number - 'null' outcode: description: Optional outcode supplied by this operation. Null means unknown. type: - string - 'null' platform: description: Optional platform supplied by this operation. Null means unknown. type: - string - 'null' postcode: description: Optional postcode supplied by this operation. Null means unknown. type: - string - 'null' sales: description: Optional sales supplied by this operation. Null means unknown. type: - array - 'null' items: description: Optional record supplied by this operation. Null means unknown. type: - object - 'null' properties: {} additionalProperties: true type: description: Optional type supplied by this operation. Null means unknown. type: - string - 'null' uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string - 'null' additionalProperties: true - required: - uprn properties: uprn: description: Optional uprn supplied by this operation. Null means unknown. type: - string minLength: 1 x-contract-version: '2026-09-22' x-validation-scope: Required success payload structure; optional fields and source completeness remain separate. examples: - _warnings: [] address: example attributes: property_type: example country: example estimate_history: - confidence: example date: '2026-09-01T12:00:00Z' high: 0 low: 0 value: 0 historic_listings: [] latitude: 0 live_listings: [] longitude: 0 outcode: example platform: example points_of_interest: - address: example distance_miles: 0 latitude: 0 longitude: 0 name: example type: example postcode: example rent_estimate: high: 0 low: 0 value: 0 sale_estimate: confidence: example high: 0 low: 0 value: 0 sales: [] similar_listings: - address: example bathrooms: 0 bedrooms: 0 id: example image_url: https://example.com/example latitude: 0 living_rooms: 0 longitude: 0 platform: example price_label: example price_qualifier: example title: example type: example url: https://example.com/example similar_properties: - address: example attributes: bathrooms: 0 bedrooms: 0 living_rooms: 0 property_type: example tenure: example country: example historic_listings: [] last_sale: date: '2026-09-01T12:00:00Z' price: 0 latitude: 0 longitude: 0 outcode: example platform: example postcode: example sales: - {} type: example uprn: example type: example uprn: example default: description: The error envelope — the same shape for every non-2xx status. content: application/json: schema: $ref: '#/components/schemas/Error' x-credits: 3 x-production-available: true x-capacity: status: not_assessed message: Capacity is workload-dependent; configured routes do not establish sustained throughput or an availability guarantee. x-availability-scope: Structural check of the effective registered chain, production permission, adapter, configured cost and quality floor without request parameters. True is not a live-health, credential, quota, subscription-entitlement, complete-data or deployment-exposure guarantee. False means no structurally eligible candidate; null means metadata could not establish availability. Composite child capability still depends on its component routes. x-live-proven: true components: schemas: Error: type: object required: - success - error - credits_used - request_id properties: success: const: false error: type: object required: - type - message - status properties: type: type: string enum: - UNAUTHORIZED - KEY_REVOKED - KEY_LIMIT_EXCEEDED - RATE_LIMITED - INSUFFICIENT_CREDITS - RESOURCE_NOT_FOUND - INVALID_PARAMETERS - TARGET_ACCESS_DENIED - UPSTREAM_ERROR - UPSTREAM_TIMEOUT - FREE_CAPACITY_UNAVAILABLE - CAPACITY_UNAVAILABLE - ENDPOINT_NOT_FOUND - ENDPOINT_NOT_AVAILABLE - FAIR_USE_EXCEEDED - INTERNAL_ERROR message: type: string status: type: integer doc_url: type: string description: Deep link to the exact section of the errors guide for this type. details: type: object credits_used: type: - integer - 'null' description: Confirmed net charge; null when billing is pending reconciliation. Inspect error.details.billing_status and retain request_id. credits_remaining: type: integer request_id: type: string Success: type: object required: - success - platform - endpoint - data - credits_used - credits_remaining - request_id properties: _completeness: type: object description: Reported response completeness, not a guarantee of complete platform history. Missing source assertions remain unknown. properties: state: type: string enum: - complete - partial - unknown scope: type: string inspection_limited: type: boolean success: const: true platform: type: string endpoint: type: string description: The resolved path, e.g. `/v1/github/profile`. data: description: Amazon responses include marketplace.country and marketplace.domain (resolved request marketplace, UK by default). X profiles preserve location, bio_link and cover_url when supplied. TikTok profiles preserve commerce_user, seller, region, location and business_category when supplied; region identifies the account region rather than personal residence. TikTok comments use platform_default selection, which can change between fetches; keep the same video and options when following cursors. Amazon review variant is readable text. Facebook profiles preserve cover_url, following and created_at when supplied; likes_count and followers are distinct and follower totals may be rounded. Endpoint-specific normalized payload, not one universal post/profile schema. Many lists use items/count/cursor; a null cursor means no usable next cursor was supplied, not proof that all history was retrieved. Check has_more and warnings where present. Social full-profile bundles use posts_cursor and posts_pagination.next_params; retain all returned next parameters. YouTube channel bundles instead use recent_videos, cursor and recent_videos_pagination. Inspect complete/partial/legs where supplied for bounded or failed components. Optional model-derived fields are labelled, not source facts. credits_used: type: integer credits_remaining: type: integer request_id: type: string cached: type: boolean stale: type: boolean description: True only for an explicitly labelled, zero-credit reference snapshot served after a temporary upstream failure. age_seconds: type: integer minimum: 0 description: Age of a stale snapshot since its original retrieval; not reset by outage recovery. fetched_at: type: string format: date-time description: Original retrieval time of a stale snapshot, in UTC. synthetic: type: boolean description: Present and true only on the explicitly requested /sandbox surface. Synthetic responses are representative and charged 0 credits; production /v1 never returns them. degraded: type: boolean description: Reserved for sandbox compatibility. Production /v1 reports upstream failure as an error and never serves a representative fallback. securitySchemes: ApiKeyHeader: type: apiKey in: header name: x-api-key description: Your API key (`mn_…`), from the console. The recommended style. BearerKey: type: http scheme: bearer description: The same key as a Bearer token, for clients that only expose an Authorization field. Keys are never accepted in the query string — URLs leak into logs and referrers. x-provenance: method: harvested publisher: Monocrawl source: https://www.monocrawl.com/openapi.json note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json); stamped by stamp-openapi-provenance.py (roadmap#793)