← Volver a la Mesa de Esquelas

Automatiza la caza de dominios expirados con Python

Publicado por Peter Nagy · Con ayuda de IA · 8 de agosto de 2026 · 5 min de lectura

La caza automatizada de dominios expirados consiste en reemplazar la revisión manual de listas con un script en Python que consulte listas de drops, filtre por métricas y te envíe alertas. Usarás requests, BeautifulSoup y un cron job simple. No es sofisticado, pero convierte horas en minutos. Y si encuentras un fiasco, siempre puedes enterrarlo después.

¿Qué hace exactamente la caza automatizada de dominios expirados?

Convierte una tarea aburrida y repetitiva en un script que configuras y olvidas. Escribes código Python que obtiene listas de dominios expirados de fuentes públicas, verifica cada nombre contra tus reglas y te envía un mensaje cuando algo coincide. No más despertarte a las 3 AM para ver si ese .io de 4 letras finalmente cayó.

El ciclo principal es simple: obtener, filtrar, alertar. Puedes ejecutarlo en un VPS barato o en tu propia máquina con un cron job. Todo se puede construir en una tarde, incluso si no eres un desarrollador profesional.

Requisitos: ¿Qué necesitas antes de escribir un script?

Unos pocos básicos. Necesitas Python 3.8 o superior instalado, más un editor de texto. También necesitarás una cuenta gratuita en un servicio de API de dominios como WhoisXMLAPI o RDAP para verificar fechas de registro. Presupuesta cero dólares para este paso, a menos que quieras pagar por límites de tasa más altos.

También necesitas un filtro claro. Separa lo que buscas: cantidad de palabras, longitud, extensión, backlinks o un nicho específico. Escríbelo antes de programar, o terminarás con un script que te alerta sobre cada dominio aleatorio en internet.

Paso 1: ¿Cómo obtienes listas de dominios expirados?

Empieza con listas de drops públicas. Servicios como ExpiredDomains.net y NameJet publican listas diarias, aunque no siempre son fáciles de scrapear. Usa requests y BeautifulSoup para obtener el HTML y analizar las filas de la tabla.

import requests
from bs4 import BeautifulSoup

url = "https://www.expireddomains.net/expired-domains/"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

Eso te da la página cruda. Luego extraes los nombres de dominio de la tabla. La mayoría de las listas usan una estructura similar, así que unas pocas llamadas find_all te llevarán allí. Sé respetuoso con los límites de tasa, o te bloquearán.

Paso 2: ¿Cómo filtras dominios con Python?

Los filtros son donde ocurre la magia. Escribe una función que tome un dominio y devuelva True o False según tus reglas. Por ejemplo, podrías querer solo dominios .com con exactamente 6 letras y sin guiones.

def is_worth_checking(domain):
    name, ext = domain.split(".")
    return ext == "com" and len(name) == 6 and "-" not in name

También puedes filtrar por listas de palabras clave. Si buscas dominios de fitness, mantén una lista de palabras relevantes y verifica si alguna aparece. Usa re para coincidencias regex si necesitas patrones más complejos.

Paso 3: ¿Cómo verificas disponibilidad y métricas del dominio?

Una vez que tienes una lista filtrada, necesitas saber si el dominio realmente está expirando. Usa RDAP para verificar el estado de registro. La librería rdap lo hace fácil.

import rdap

def check_status(domain):
    data = rdap.query(domain)
    return data.get("status", [])

Si el estado incluye "pending delete" o "redemption period", probablemente está expirando. También puedes verificar backlinks usando una API gratuita como Open PageRank, aunque necesitarás una clave API. Mantén las verificaciones ligeras, porque demasiadas solicitudes te ralentizarán.

Paso 4: ¿Cómo programas el script para que se ejecute automáticamente?

Usa cron en Linux o el Programador de Tareas en Windows. Ejecuta el script una vez al día, o cada pocas horas si persigues drops calientes. Una línea de cron simple se ve así:

0 6 * * * cd /ruta/al/script && python3 caza.py

Eso lo ejecuta cada mañana a las 6 AM. Obtendrás resultados antes del apuro diario. También puedes usar la librería schedule si prefieres mantener todo en Python.

Paso 5: ¿Cómo recibes alertas cuando hay una coincidencia?

Correo electrónico, Telegram o Slack. Lo más fácil es Telegram, porque puedes enviar un mensaje con una simple solicitud POST. Crea un bot, obtén el ID del chat y usa requests.post para enviar un mensaje cuando tu filtro encuentre algo.

import requests

def send_alert(domain):
    token = "TU_TOKEN_DEL_BOT"
    chat_id = "TU_ID_DE_CHAT"
    text = f"Encontrado: {domain}"
    url = f"https://api.telegram.org/bot{token}/sendMessage"
    requests.post(url, data={"chat_id": chat_id, "text": text})

Ahora recibes notificaciones en tu teléfono sin tocar el script. Solo recuerda mantener privado el token del bot.

Paso 6: ¿Cómo manejas los resultados y decides qué comprar?

Cuando llegue la alerta, aún necesitas hacer verificaciones manuales. Usa un registrador como Namecheap o GoDaddy para ver el precio exacto, y revisa Wayback Machine para ver el contenido histórico. No todos los dominios expirados valen la tarifa de registro.

Si compras uno y resulta ser un fiasco, puedes enterrar tu proyecto muerto por un dólar. Es una forma barata de soltar. Y si buscas inspiración o una ganga, explora el cementerio para ver qué han abandonado otros.

¿Qué puede salir mal con la caza automatizada?

Mucho. Tu script podría romperse cuando el sitio web cambie su estructura HTML. Podrías ser limitado por tasa o bloqueado por IP. Podrías filtrar demasiado agresivamente y perderte buenos nombres, o demasiado permisivamente y recibir una avalancha de basura.

Además, el mercado de dominios se mueve rápido. Un nombre que parece libre podría ser registrado por otra persona antes de que tu cron job se ejecute. Eso es normal. Incorpora un reintento o una espera, y no te encariñes con ningún dominio en particular.

¿Realmente necesitas automatizar esto?

Si revisas drops una vez por semana, no. Pero si actualizas listas a diario, un script te ahorra horas. También te permite actuar más rápido cuando aparece un buen nombre. La velocidad importa en la caza de dominios expirados, porque los buenos nombres desaparecen en minutos.

La desventaja es que la automatización puede hacerte creer que estás siendo productivo. No es así. Solo estás filtrando más rápido. El verdadero trabajo sigue estando en la revisión manual.

¿Por dónde seguir?

Empieza pequeño. Elige una fuente, un filtro y un método de alerta. Haz que funcione antes de agregar complejidad. Luego expande a más fuentes o más filtros. El script no necesita ser perfecto, solo necesita ejecutarse.

Y si terminas con un dominio que no quieres, no lo dejes pudrirse. Entiérralo en dead.domains y deja que alguien más le dé una segunda vida. Ese es el ciclo de la propiedad digital, y es extrañamente satisfactorio.

Dirígete a dead.domains para ver lo que ya ha sido enterrado.

FAQ

¿Es legal hacer scraping de listas de dominios expirados?

Sí, siempre que respetes robots.txt y los límites de tasa. Las listas públicas están hechas para ser vistas, pero raspar demasiado rápido puede hacer que te bloqueen. Usa demoras razonables y un user-agent adecuado. Si un sitio tiene una API de pago, considera usarla para evitar problemas legales.

¿Cuál es la mejor librería de Python para analizar HTML?

BeautifulSoup es la opción más común porque es fácil de aprender y funciona bien con HTML desordenado. Para análisis más complejos, podrías usar lxml o Scrapy. Empieza con BeautifulSoup y cámbiala solo cuando encuentres límites de rendimiento.

¿Con qué frecuencia debo ejecutar mi script de dominios expirados?

Una vez al día suele ser suficiente para la mayoría de los nichos. Si persigues drops de alto valor, ejecútalo cada pocas horas. Ten en cuenta que ejecuciones más frecuentes aumentan tu probabilidad de ser limitado por tasa, así que equilibra velocidad con seguridad.

¿Puedo automatizar todo el proceso de compra?

Parcialmente. Puedes automatizar la verificación de disponibilidad e incluso la preorden, pero el registro real generalmente requiere confirmación manual. Algunos registradores ofrecen APIs para compras automatizadas, pero a menudo tienen saldos mínimos o requieren aprobación. No esperes un pipeline completamente automático.

¿Qué hago si mi script deja de funcionar?

Primero revisa la estructura HTML del sitio. Los sitios cambian de diseño a menudo, por lo que tus selectores podrían romperse. Agrega manejo de errores a tu script para que registre el problema y te alerte. Luego actualiza los selectores y vuelve a ejecutar. Es una tarea de mantenimiento normal.