ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo encontrar empresas sin sitios web a escala
Tutorial

Cómo encontrar empresas sin sitios web a escala

Utilice datos SERP para identificar empresas locales que carecen de un sitio web. Cree una lista de clientes potenciales de prospectos de diseño web a partir de los resultados de búsqueda a $0,005/consulta.

Obtener clave API gratisDocumentacion API

Millones de empresas locales todavía operan sin un sitio web y dependen únicamente de Google Business Profile, Yelp o Facebook. Estos son excelentes prospectos para agencias de diseño web, servicios locales de SEO y marketing digital. Este tutorial utiliza datos SERP para identificar empresas que aparecen sólo en listados de directorios pero que carecen de su propio dominio. Cada búsqueda cuesta $0,005 y normalmente muestra entre 3 y 5 empresas sin sitios web por consulta.

Requisitos previos

  • Python 3.9+ instalado
  • solicita biblioteca instalada
  • Una clave API de Scavio de scavio.dev

Guia paso a paso

Paso 1: Busque empresas locales y clasifique los resultados

Busque una categoría y ubicación de empresa, luego clasifique cada resultado como si tuviera su propio sitio web o solo apareciera en directorios.

Python
import requests, os, re

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']

DIRECTORY_DOMAINS = {
    'yelp.com', 'yellowpages.com', 'facebook.com', 'bbb.org',
    'angi.com', 'homeadvisor.com', 'thumbtack.com', 'mapquest.com',
    'manta.com', 'chamberofcommerce.com', 'google.com',
    'nextdoor.com', 'bark.com', 'expertise.com'
}

def classify_result(result: dict) -> str:
    link = result.get('link', '')
    domain = link.split('/')[2] if '/' in link else ''
    base = '.'.join(domain.split('.')[-2:])  # e.g., yelp.com
    if base in DIRECTORY_DOMAINS:
        return 'directory'
    return 'own_website'

def find_no_website(category: str, location: str) -> list:
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
        json={'query': f'{category} in {location}', 'country_code': 'us', 'num_results': 10})
    results = resp.json().get('organic_results', [])
    directory_only = []
    for r in results:
        if classify_result(r) == 'directory':
            # Extract business name from directory listing title
            name = r['title'].split(' - ')[0].split(' | ')[0].strip()
            directory_only.append({
                'name': name, 'listing_url': r['link'],
                'directory': r['link'].split('/')[2],
                'snippet': r.get('snippet', ''),
                'category': category, 'location': location
            })
    return directory_only

prospects = find_no_website('plumber', 'Austin TX')
print(f'Found {len(prospects)} businesses without websites')
for p in prospects[:5]:
    print(f'  {p["name"]} (via {p["directory"]})')

Paso 2: Verificar que las empresas realmente carecen de un sitio web

Vuelva a verificar buscando cada nombre comercial directamente. Si no aparece ningún dominio propio en los resultados, es probable que no tengan un sitio web.

Python
import time

def verify_no_website(business_name: str, location: str) -> dict:
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
        json={'query': f'{business_name} {location}',
              'country_code': 'us', 'num_results': 5})
    results = resp.json().get('organic_results', [])
    for r in results:
        if classify_result(r) == 'own_website':
            return {'has_website': True, 'website': r['link']}
    return {'has_website': False, 'website': None}

# Verify top prospects
verified_prospects = []
for p in prospects[:5]:
    check = verify_no_website(p['name'], p['location'])
    p['verified_no_website'] = not check['has_website']
    p['found_website'] = check['website']
    if not check['has_website']:
        verified_prospects.append(p)
    status = 'NO WEBSITE' if not check['has_website'] else f'Has: {check["website"]}'
    print(f'  {p["name"]}: {status}')
    time.sleep(0.3)

print(f'\nVerified {len(verified_prospects)} businesses without websites')

Paso 3: Escalar en múltiples ubicaciones y exportar

Ejecute el canal a través de muchos pares de ubicación-categoría y exporte los prospectos verificados.

Python
import csv

def pipeline(categories: list, locations: list) -> list:
    all_prospects = []
    queries = 0
    for loc in locations:
        for cat in categories:
            prospects = find_no_website(cat, loc)
            queries += 1
            for p in prospects[:3]:  # verify top 3 per query
                check = verify_no_website(p['name'], p['location'])
                queries += 1
                if not check['has_website']:
                    all_prospects.append(p)
                time.sleep(0.3)
    print(f'Queries used: {queries} (${queries * 0.005:.3f})')
    return all_prospects

categories = ['plumber', 'electrician']
locations = ['Austin TX', 'Denver CO']
prospects = pipeline(categories, locations)

if prospects:
    with open('no_website_leads.csv', 'w', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=['name', 'directory', 'listing_url',
                                                'category', 'location'])
        writer.writeheader()
        for p in prospects:
            writer.writerow({k: p[k] for k in writer.fieldnames})
    print(f'Exported {len(prospects)} leads to no_website_leads.csv')

Ejemplo en Python

Python
import requests, os

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
DIRS = {'yelp.com', 'yellowpages.com', 'facebook.com', 'bbb.org', 'angi.com'}

def find_no_website(category, location):
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
        json={'query': f'{category} in {location}', 'country_code': 'us', 'num_results': 10})
    prospects = []
    for r in resp.json().get('organic_results', []):
        domain = r['link'].split('/')[2] if '/' in r['link'] else ''
        base = '.'.join(domain.split('.')[-2:])
        if base in DIRS:
            prospects.append({'name': r['title'].split(' - ')[0], 'directory': base})
    return prospects

for p in find_no_website('plumber', 'Austin TX'):
    print(f'{p["name"]} (via {p["directory"]})')

Ejemplo en JavaScript

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
const DIRS = new Set(['yelp.com', 'yellowpages.com', 'facebook.com', 'bbb.org', 'angi.com']);

async function findNoWebsite(category, location) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: `${category} in ${location}`, country_code: 'us', num_results: 10 })
  });
  const data = await resp.json();
  return (data.organic_results || []).filter(r => {
    const domain = new URL(r.link).hostname.split('.').slice(-2).join('.');
    return DIRS.has(domain);
  }).map(r => ({ name: r.title.split(' - ')[0], directory: new URL(r.link).hostname }));
}

findNoWebsite('plumber', 'Austin TX').then(p => p.forEach(x => console.log(`${x.name} (${x.directory})`)));

Salida esperada

JSON
Found 5 businesses without websites
  Joe's Plumbing (via yelp.com)
  Reliable Plumbing Services (via yellowpages.com)
  Quick Fix Plumbing (via facebook.com)

  Joe's Plumbing: NO WEBSITE
  Reliable Plumbing Services: Has: reliableplumbingaustin.com
  Quick Fix Plumbing: NO WEBSITE

Verified 3 businesses without websites
Queries used: 10 ($0.050)
Exported 8 leads to no_website_leads.csv

Tutoriales relacionados

  • Cómo construir una canalización de clientes potenciales local con enriquecimiento SERP
  • Cómo crear una canalización de correo electrónico frío de Google Maps
  • Cómo ejecutar una auditoría SERP para personalización de correo electrónico en frío

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.9+ instalado. solicita biblioteca instalada. Una clave API de Scavio de scavio.dev. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Use Case

Acceso web de IA de código abierto 2026

Read more
Use Case

Recuperación de búsqueda web local LLM 2026

Read more
Glossary

Buscar Era del muro de pago (2026)

Read more
Best Of

Las mejores aplicaciones de productividad de IA en 2026

Read more
Best Of

Las mejores herramientas de raspado web de IA en 2026

Read more
Solution

Dale a tu agente acceso web confiable

Read more

Empieza a construir

Utilice datos SERP para identificar empresas locales que carecen de un sitio web. Cree una lista de clientes potenciales de prospectos de diseño web a partir de los resultados de búsqueda a $0,005/consulta.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad