Las herramientas de búsqueda de bienes raíces generalmente se basan en costosas API de datos patentados, como feeds de Zillow, Redfin o MLS. Para muchos casos de uso (investigación de vecindarios, análisis de tendencias de mercado, escaneo de oportunidades de inversión), los datos de búsqueda de Google disponibles públicamente son suficientes. La API SERP de Google de Scavio devuelve resultados orgánicos, resultados de compras y datos de gráficos de conocimiento que pueden mostrar listados de bienes raíces e información sobre vecindarios. Este tutorial crea una herramienta de investigación de propiedades que agrega datos de los resultados de búsqueda de Google.
Requisitos previos
- Python 3.8 o superior
- solicita biblioteca instalada
- Una clave API de Scavio
- Comprensión de la terminología inmobiliaria
Guia paso a paso
Paso 1: Busque propiedades por ubicación y tipo
Cree consultas específicas que muestren listados de bienes raíces de Zillow, Realtor.com y sitios similares en los resultados de Google.
def search_properties(location: str, property_type: str = "homes for sale") -> dict:
query = f"{property_type} in {location}"
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": query, "country_code": "us"})
r.raise_for_status()
return r.json()Paso 2: Extraer resultados del listado
Filtre los resultados orgánicos de los sitios de listados de bienes raíces buscando dominios conocidos en la URL.
LISTING_SITES = ["zillow.com", "realtor.com", "redfin.com", "trulia.com"]
def extract_listings(data: dict) -> list[dict]:
results = []
for r in data.get("organic_results", []):
if any(site in r.get("link", "") for site in LISTING_SITES):
results.append({"title": r["title"], "snippet": r.get("snippet"), "link": r["link"]})
return resultsPaso 3: Obtener gráfico de conocimiento del vecindario
Obtenga el gráfico de conocimiento de un vecindario o ciudad para obtener población, ingreso medio y otros datos demográficos.
def get_neighborhood_info(location: str) -> dict | None:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": location, "country_code": "us"})
r.raise_for_status()
return r.json().get("knowledge_graph")Paso 4: Elaborar un resumen de investigación inmobiliaria
Combine los resultados del listado y el gráfico de conocimiento del vecindario en un informe estructurado de investigación de propiedades.
def research(location: str) -> dict:
prop_data = search_properties(location)
listings = extract_listings(prop_data)
kg = get_neighborhood_info(location)
return {
"location": location,
"listing_count": len(listings),
"top_listings": listings[:3],
"neighborhood": kg.get("title") if kg else None,
}Ejemplo en Python
import os
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
LISTING_SITES = ["zillow.com", "realtor.com", "redfin.com"]
def search(q: str) -> dict:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": q, "country_code": "us"})
r.raise_for_status()
return r.json()
def research(location: str, prop_type: str = "homes for sale") -> None:
data = search(f"{prop_type} in {location}")
listings = [r for r in data.get("organic_results", []) if any(s in r.get("link", "") for s in LISTING_SITES)]
kg = data.get("knowledge_graph")
print(f"Location: {location}")
print(f"Listing results found: {len(listings)}")
if kg:
print(f"Knowledge panel: {kg.get('title')} — {kg.get('description', '')[:100]}")
for listing in listings[:3]:
print(f" {listing['title'][:60]}")
if __name__ == "__main__":
research("Austin, Texas")Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
const LISTING_SITES = ["zillow.com", "realtor.com", "redfin.com"];
async function search(q) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: q, country_code: "us" })
});
return res.json();
}
async function research(location, propType = "homes for sale") {
const data = await search(`${propType} in ${location}`);
const listings = (data.organic_results || []).filter(r => LISTING_SITES.some(s => r.link.includes(s)));
console.log(`Location: ${location}`);
console.log(`Listings found: ${listings.length}`);
listings.slice(0, 3).forEach(l => console.log(` ${l.title.slice(0, 60)}`));
}
research("Austin, Texas").catch(console.error);Salida esperada
Location: Austin, Texas
Listing results found: 4
Knowledge panel: Austin — State capital of Texas, known for its technology industry...
Zillow: 2,847 Homes For Sale in Austin, TX
Realtor.com: Austin, TX Real Estate and Homes for Sale
Redfin: Austin TX Homes for Sale and Real Estate