El problema
Los datos inmobiliarios se encuentran dispersos en Zillow, Realtor.com, Redfin y los feeds locales de MLS. Cada fuente tiene una API diferente, un formato de datos diferente y una cobertura diferente. Crear una herramienta integral de investigación de propiedades significa integrar de 3 a 5 fuentes, cada una con su propia autenticación, límites de tarifas y esquema. La mayoría de las API de bienes raíces cobran cientos por mes y todavía no cubren todos los listados en todos los mercados. El resultado son datos incompletos que omiten listados de las fuentes que usted no integró.
La solucion de Scavio
Scavio busca en Google listados de propiedades en todas las fuentes simultáneamente y arroja resultados estructurados que incluyen precios de listado, direcciones y URL de origen. Una única búsqueda captura listados de Zillow, Realtor.com, Redfin y sitios locales de MLS en una sola consulta. Los resultados se introducen en un proceso de normalización que extrae detalles de la propiedad de los resultados orgánicos. Por $0,005/crédito, obtiene cobertura de fuentes múltiples sin pagar API de bienes raíces individuales.
Antes
Antes de Scavio, agregar listados de propiedades significaba integrar entre 3 y 5 API de bienes raíces que costaban cientos por mes cada una, y aún faltaban listados de fuentes sin API públicas.
Después
Después de Scavio, una única búsqueda en Google captura listados de todas las principales plataformas inmobiliarias. El proceso de normalización extrae datos de propiedades estructurados a $0,005/consulta, lo que elimina la necesidad de múltiples y costosas integraciones de API.
Para quien es
Constructores de tecnología inmobiliaria, aplicaciones de agregación de propiedades y herramientas de investigación de inversores que necesitan datos de listados de múltiples fuentes sin integrarse con API de bienes raíces individuales.
Beneficios clave
- Una búsqueda captura listados de los sitios Zillow, Realtor.com, Redfin y MLS
- No se requieren integraciones de API de bienes raíces individuales
- Los resultados estructurados incluyen precios, direcciones y URL de origen
- Cobertura multimercado sin tarifas API por mercado
- $0,005/consulta frente a cientos por mes para API de bienes raíces individuales
Ejemplo en Python
import requests
import json
from datetime import datetime
API_KEY = "your_scavio_api_key"
def search_listings(location: str, property_type: str = "house") -> list[dict]:
query = f"{property_type} for sale {location}"
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": query, "num": 20},
timeout=15,
)
res.raise_for_status()
listings = []
for item in res.json().get("organic", []):
link = item.get("link", "")
source = "unknown"
if "zillow.com" in link:
source = "zillow"
elif "realtor.com" in link:
source = "realtor"
elif "redfin.com" in link:
source = "redfin"
listings.append({
"title": item.get("title", ""),
"snippet": item.get("snippet", ""),
"link": link,
"source": source,
})
return listings
def aggregate_market(location: str) -> dict:
listings = search_listings(location)
by_source = {}
for listing in listings:
src = listing["source"]
by_source.setdefault(src, []).append(listing)
return {
"location": location,
"total_results": len(listings),
"by_source": {k: len(v) for k, v in by_source.items()},
"listings": listings,
"checked_at": datetime.utcnow().isoformat(),
}
result = aggregate_market("Austin TX 78704")
print(f"Found {result['total_results']} listings in {result['location']}")
for source, count in result["by_source"].items():
print(f" {source}: {count} listings")Ejemplo en JavaScript
const API_KEY = "your_scavio_api_key";
async function searchListings(location, propertyType = "house") {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query: `${propertyType} for sale ${location}`, num: 20 }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
return (await res.json()).organic?.map((item) => {
const link = item.link ?? "";
let source = "unknown";
if (link.includes("zillow.com")) source = "zillow";
else if (link.includes("realtor.com")) source = "realtor";
else if (link.includes("redfin.com")) source = "redfin";
return { title: item.title ?? "", snippet: item.snippet ?? "", link, source };
}) ?? [];
}
const listings = await searchListings("Austin TX 78704");
console.log(`Found ${listings.length} listings`);
const bySource = {};
for (const l of listings) bySource[l.source] = (bySource[l.source] ?? 0) + 1;
for (const [src, count] of Object.entries(bySource)) console.log(` ${src}: ${count}`);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA