UK Property Data
Property Shared
Datos de propiedades del Reino Unido en un solo paquete. Obtiene ventas del Registro de la Propiedad, certificados EPC, listados de Rightmove, rentabilidad de alquileres, cálculos de impuesto de timbre, enlaces a portales de planificación y registros de Companies House.
Úselo como biblioteca de Python, CLI, API HTTP o servidor MCP para agentes de IA.
Qué obtiene
Fuente de datos | Qué devuelve |
Land Registry PPD | Precios de venta, fechas, tipos de propiedad, comparativas de área con mediana/percentiles |
EPC Register | Calificaciones energéticas, superficie, antigüedad de construcción, costes de calefacción |
Rightmove | Listados actuales (venta + alquiler), precios, agentes, detalles del listado |
Yield Analysis | Rentabilidad bruta combinando ventas PPD + alquileres de Rightmove |
Stamp Duty | Cálculo de SDLT con tramos de abril de 2025, recargo BTL, alivio para compradores primerizos (FTB) |
Block Analyzer | Agrupa ventas de pisos por edificio para detectar salidas de inversores |
Planning | Búsqueda en el portal de planificación del ayuntamiento local (99 ayuntamientos verificados) |
Companies House | Búsqueda de empresas y consulta por nombre o número |
Habilidades
¿Desea informes de propiedades estructurados en lugar de datos sin procesar? Las habilidades de Claude que encadenan estas herramientas en resúmenes de inversión están disponibles en bouch.dev/products.
Instalación
pip install property-shared
# or with uv
uv add property-sharedExtras: [mcp] para servidor MCP, [cli] para CLI, [api] para servidor HTTP, [dev] para pruebas.
pip install property-shared[mcp,cli]
# or
uv add property-shared --extra mcp --extra cliUso como biblioteca de Python
from property_core import PPDService, calculate_yield, calculate_stamp_duty
# Get comparable sales for a postcode
comps = PPDService().comps("SW1A 1AA", months=24, property_type="F")
print(f"Median flat price: {comps.median:,}")
# Calculate rental yield
import asyncio
result = asyncio.run(calculate_yield("NG1 1AA", property_type="F"))
print(f"Gross yield: {result.gross_yield_pct}%")
# Stamp duty
sdlt = calculate_stamp_duty(250000, additional_property=True)
print(f"SDLT: {sdlt.total_sdlt:,.0f} ({sdlt.effective_rate}%)")Todos los modelos están disponibles en el nivel superior:
from property_core import (
PPDTransaction, PPDCompsResponse, EPCData,
RightmoveListing, RightmoveListingDetail,
PropertyReport, YieldAnalysis, RentalAnalysis,
BlockAnalysisResponse, CompanyRecord, StampDutyResult,
)Ayudantes de interpretación (el núcleo devuelve números, usted decide cómo etiquetarlos):
from property_core import classify_yield, classify_data_quality, generate_insightsUso como CLI
pip install property-shared[cli] # or: uv add property-shared --extra cli
# Comparable sales
property-cli ppd comps "SW1A 1AA" --months 24 --property-type F
# Rental yield
property-cli analysis yield "NG1 1AA" --property-type F
# Stamp duty
property-cli calc stamp-duty 300000
# Rightmove search (with sort)
property-cli rightmove search-url "NG1 1AA" --sort-by most_reduced
# Full property report
property-cli report generate "10 Downing Street, SW1A 2AA" --property-type FAgregue --api-url http://localhost:8000 a cualquier comando para enrutar a través de la API HTTP en lugar de llamar al núcleo directamente.
Uso como servidor MCP (Agentes de IA)
Para Claude.ai, Claude Code, ChatGPT o cualquier host compatible con MCP.
pip install property-shared[mcp] # or: uv add property-shared --extra mcp
property-mcp # starts stdio transport12 herramientas disponibles: property_report, property_comps, ppd_transactions, property_yield, rental_analysis, property_epc, rightmove_search, rightmove_listing, property_blocks, stamp_duty, planning_search, company_search.
Servidor remoto desplegado en https://property-shared.fly.dev/mcp (HTTP transmitible).
Consulte mcp_server/README.md para la configuración de conexión y detalles de las herramientas.
Uso como API HTTP
pip install property-shared[api] # or: uv add property-shared --extra api
property-api # starts on port 8000Documentación interactiva en http://localhost:8000/docs.
Endpoints clave:
GET /v1/ppd/comps?postcode=SW1A+1AA&property_type=F&enrich_epc=trueGET /v1/analysis/yield?postcode=NG1+1AA&property_type=FGET /v1/analysis/rental?postcode=NG1+1AA&purchase_price=200000GET /v1/rightmove/search-url?postcode=NG1+1AA&sort_by=newestGET /v1/calculators/stamp-duty?price=300000&additional_property=truePOST /v1/property/reportcon{ "address": "10 Downing Street, SW1A 2AA" }
Lista completa de endpoints en USER_GUIDE.md.
Variables de entorno
Copie .env.example a .env. Variables clave:
Variable | Requerido para | Descripción |
| Consultas EPC | Clave gratuita de EPC Register |
| Consultas EPC | Emparejado con el correo electrónico anterior |
| Búsqueda de empresas | Clave gratuita de Companies House |
| No (predeterminado 0.6s) | Retraso de límite de tasa para el scraping de Rightmove |
| Scraper de planificación | Scraper de portal de planificación guiado por visión |
Land Registry PPD y Rightmove funcionan sin credenciales.
Desarrollo
# Install with dev extras
uv sync --extra dev
# Run API with reload
uv run uvicorn app.main:app --reload
# Run tests (mocked, no network)
uv run --extra dev pytest -v
# Run live integration tests (real network calls)
RUN_LIVE_TESTS=1 uv run --extra dev pytest -vArquitectura
Separación de tres capas: el núcleo permanece independiente del framework:
property_core/ Pure Python library (all business logic)
app/ FastAPI wrapper (thin HTTP layer)
property_cli/ Typer CLI (thin CLI layer)
mcp_server/ FastMCP wrapper (thin MCP layer for AI hosts)Los tres consumidores importan directamente desde property_core. Sin capas de adaptador.
Despliegue (Fly.io)
fly secrets set EPC_API_EMAIL=... EPC_API_KEY=...
fly deployDesplegado en https://property-shared.fly.dev con documentación de API en /docs y endpoint MCP en /mcp.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/paulieb89/property-shared'
If you have feedback or need assistance with the MCP directory API, please join our Discord server