Les équipes B2B qui vendent aux courtiers immobiliers ont besoin de signaux frais : mouvements de courtage, annonces d'embauche, commentaires de marché. L'accès direct au MLS est verrouillé et coûteux. Les SERP publiques et Reddit couvrent 80% du même signal pour une fraction du coût. Ce tutoriel présente la construction en deux jours avec Claude Code qui a atterri sur Reddit en 2026.
Prérequis
- Python 3.10+
- Une clé API Scavio
- Clé API Anthropic pour Claude Code
Parcours
Étape 1: Définir le marché et la pratique
Paramétrer la ville et le domaine de pratique.
def query_for(city, practice):
return f'{practice} brokerages {city} 2026 hiring OR new listings'Étape 2: Lancer la découverte SERP
Top 25 résultats organiques plus actualités des courtiers.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def discover(query):
r = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': query, 'num_results': 25})
return r.json().get('organic_results', [])Étape 3: Signal Reddit par marché
Recherche Reddit pour les fils d'embauche et les avis.
def reddit_signal(city, practice):
r = requests.post('https://api.scavio.dev/api/v1/reddit/search',
headers={'x-api-key': API_KEY},
json={'query': f'{city} {practice} brokerage'})
return r.json().get('posts', [])[:10]Étape 4: Extraire les pages de contact
Utiliser l'endpoint d'extraction de Scavio sur chaque site candidat.
def contacts(url):
r = requests.post('https://api.scavio.dev/api/v1/extract',
headers={'x-api-key': API_KEY}, json={'url': url})
return r.json().get('content', '')Étape 5: Noter et classer
Claude note chaque prospect selon la récence et l'adéquation.
import anthropic
client = anthropic.Anthropic()
def score(prospect):
msg = client.messages.create(
model='claude-sonnet-4-6', max_tokens=200,
messages=[{'role':'user','content':f'Score 1-10 fit: {prospect}'}])
return msg.content[0].textÉtape 6: Résumé par email
Top 25 prospects avec justification en une ligne.
# SMTP wiring left to reader; output is markdown digest.Exemple Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def daily_engine(city, practice):
serp = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': f'{practice} brokerages {city} 2026'}).json()
rdt = requests.post('https://api.scavio.dev/api/v1/reddit/search',
headers={'x-api-key': API_KEY},
json={'query': f'{city} {practice} brokerage'}).json()
return {'prospects': serp.get('organic_results',[])[:25], 'signal': rdt.get('posts',[])[:10]}
print(daily_engine('austin', 'commercial'))Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function dailyEngine(city, practice) {
const [serp, rdt] = await Promise.all([
fetch('https://api.scavio.dev/api/v1/google', { method:'POST', headers:{'x-api-key':API_KEY,'Content-Type':'application/json'}, body: JSON.stringify({ query: `${practice} brokerages ${city} 2026` }) }).then(r => r.json()),
fetch('https://api.scavio.dev/api/v1/reddit/search', { method:'POST', headers:{'x-api-key':API_KEY,'Content-Type':'application/json'}, body: JSON.stringify({ query: `${city} ${practice} brokerage` }) }).then(r => r.json())
]);
return { serp, rdt };
}Sortie attendue
Daily morning email with top 25 brokerage prospects per market, scored by Claude on recency and fit. Reddit signal flags hiring threads and brokerage reviews.