openapi: 3.2.0 info: title: Connells Website JSON API (undocumented) People API version: '2026-07-26' summary: Read-only JSON endpoints served by the Connells estate agency website. description: 'This is NOT a published Connells Group product. Connells Group publishes no developer portal, no documentation and no specification of any kind. This document was DERIVED by API Evangelist purely from live, anonymous, unauthenticated HTTP probes of https://www.connells.co.uk/api on 2026-07-26, and every schema below is a faithful transcription of an observed response body — nothing was invented, and no field appears here that was not returned by the live service. The endpoints are Next.js App Router route handlers backing the www.connells.co.uk consumer site (branch finder, people directory, testimonials wall and location autocomplete). Content is sourced from the Homeflow estate-agency platform that powers the Connells consumer estate (asset URLs resolve to *.homeflow-assets.co.uk). They are unversioned, undocumented, carry no service-level commitment, are rate limited by Cloudflare (HTTP 429 with Retry-After) and may change or disappear without notice. Treat them as an observation of the estate, not as a contract. The sibling Connells Group brand sites (Hamptons, Sequence, Bairstow Eves, Fox & Sons, John D Wood, Blundells, Barnard Marcus, William H Brown) run the Homeflow Rails application directly and 302-redirect /api/* to their homepage; Countrywide 301-redirects; Gascoigne Halman 404s. Only www.connells.co.uk exposes these handlers.' x-provenance: api-evangelist-derived-from-live-probes x-published-by-provider: false x-probe-date: '2026-07-26' servers: - url: https://www.connells.co.uk/api description: Production (undocumented, unversioned, no SLA) tags: - name: People description: Connells staff directory. paths: /staff: get: operationId: listStaff summary: List Connells staff description: Returns the first page of the Connells people directory. Observed 2026-07-26 as 841 staff across 71 pages of 12. Same envelope and same non-honoured pagination behaviour as listBranches. tags: - People security: [] responses: '200': description: A page of staff members. content: application/json: schema: $ref: '#/components/schemas/StaffListEnvelope' '429': $ref: '#/components/responses/RateLimited' components: schemas: ApiError: type: object properties: message: type: string example: Name required for places search Pagination: type: object description: Pagination envelope returned by the list endpoints. properties: totalCount: type: integer example: 162 currentPage: type: integer example: 1 pageSize: type: integer example: 12 pageCount: type: integer example: 14 hasPrevPage: type: boolean hasNextPage: type: boolean StaffMember: type: object description: A Connells colleague. The same shape is embedded as a branch's `branchManager`. properties: id: type: integer example: 23232373 slug: type: string example: paul-barron name: type: string example: Paul Barron jobTitle: type: - string - 'null' example: Instructions Manager avatar: type: - string - 'null' format: uri mobileNumber: type: - string - 'null' description: Observed null on every record sampled. email: type: - string - 'null' description: Observed null on every record sampled. urlLabel: type: - string - 'null' team: type: - string - 'null' shortBio: type: - string - 'null' longBio: type: - string - 'null' branchId: type: - integer - 'null' description: Foreign key to Branch.id. example: 8020 StaffListEnvelope: type: object properties: results: type: array items: $ref: '#/components/schemas/StaffMember' pagination: $ref: '#/components/schemas/Pagination' errors: type: - array - 'null' items: $ref: '#/components/schemas/ApiError' responses: RateLimited: description: Rate limited at the Cloudflare edge. Body is the plain-text string "Too many requests" and a Retry-After header is supplied (34 seconds observed). headers: Retry-After: description: Seconds to wait before retrying. schema: type: integer example: 34 content: text/plain: schema: type: string example: Too many requests