▸ Gana dineroPaso 1 gratis

Cada mañana, la lista de empresas que nacieron ayer en tu provincia (y quién te la paga)

El BORME publica cada día laborable las sociedades que se acaban de constituir: nombre, actividad, domicilio y capital. Con un script de Python sin librerías extra sacas las de tu provincia en una hoja, la filtras por actividad y se la ofreces a quien vive de captar empresas nuevas: gestorías, asesorías, agencias o proveedores.

El negocio en 30 segundos

En España se crean miles de sociedades cada mes (7.526 solo en agosto de 2026, según el INE) y todas necesitan gestoría, banco, seguro, web y proveedores. El BORME las publica cada mañana, gratis, pero casi nadie lo lee porque viene en PDF por provincias.

Lo que enseñas
Le enseñas a una gestoría la hoja de ayer con las sociedades nuevas de su provincia: «Estas 40 empresas nacieron esta semana a 10 km de tu oficina».
Dónde están los clientes
Gestorías, asesorías, agencias de marketing, corredores de seguros y empresas de renting que buscan empresas recién nacidas. Los encuentras en Google Maps y en el colegio de gestores de tu provincia.
Lo que recibe el cliente
Una hoja (CSV o Excel) cada semana con las sociedades nuevas de su zona y su actividad.
Se cobra
Se cobra entre 30 y 80 € al mes por una lista semanal filtrada por provincia y actividad (orientativo)

Los precios son orientativos: lo que se suele cobrar en España, no lo que vas a ganar. Depende de tu zona, tu oferta y de cuántos clientes contactes.

Al terminar tendrás

  • Una hoja con las empresas nuevas de tu provincia, sacada del BORME oficial.
  • Un filtro por actividad (hostelería, construcción, comercio…) para cada tipo de cliente.
  • 20 posibles compradores de la lista, un precio en 3 paquetes y un guion de llamada legal.

En esta misión · 8 pasos · 1 h 45 min

  1. 1Instala Python y saca las empresas de ayer5 min
  2. 2El mercado: quién paga por esto10 min
  3. 3Encuentra 20 compradores20 min
  4. 4Haz la demo para uno de ellos15 min
  5. 5El entregable que se repite solo15 min
  6. 6Ponle precio10 min
  7. 7Contacta sin saltarte la ley15 min
  8. 8Repite y escala15 min

1 h 45 min €0 4 GB RAM · sin GPU macOS · Windows

Antes de empezar

  • Saber abrir la terminal y copiar y pegar órdenes.
  1. 1Paso 01 de 08 · ~5 min

    Instala Python y saca las empresas de ayer

    Premio en 5 minutos: tu primera lista.

    1. 1

      Abre la terminal. En Mac: pulsa Cmd+Espacio, escribe Terminal y pulsa Enter. En Windows: pulsa la tecla Windows, escribe PowerShell y pulsa Enter.

      TerminalmacOS
      $brew install [email protected]
      TerminalmacOS
      $mkdir ~/empresas-nuevas
      $cd ~/empresas-nuevas
    2. 2

      Crea dentro de esa carpeta un archivo llamado nuevas.py, pega esto y guárdalo:

      nuevas.py
      1# Empresas que se constituyeron en el BORME de un día, en una provincia. Solo usa Python, sin instalar nada más.
      2import csv, datetime, html, json, re, sys, urllib.request
      3
      4PROVINCIA = (sys.argv[1] if len(sys.argv) > 1 else "MADRID").upper()
      5dia = datetime.date.today()
      6if len(sys.argv) > 2:
      7 dia = datetime.datetime.strptime(sys.argv[2], "%Y%m%d").date()
      8
      9def leer(url, json_=False):
      10 req = urllib.request.Request(url, headers={"Accept": "application/json" if json_ else "text/html", "User-Agent": "empresas-nuevas/1.0"})
      11 with urllib.request.urlopen(req, timeout=30) as r:
      12 return r.read().decode("utf-8")
      13
      14# Busca hacia atrás el último día con BORME (no sale los fines de semana ni festivos)
      15for _ in range(7):
      16 try:
      17 sumario = json.loads(leer(f"https://www.boe.es/datosabiertos/api/borme/sumario/{dia:%Y%m%d}", True))
      18 break
      19 except urllib.error.HTTPError:
      20 dia -= datetime.timedelta(days=1)
      21else:
      22 sys.exit("No encuentro BORME en la última semana")
      23
      24seccion_a = next(s for s in sumario["data"]["sumario"]["diario"][0]["seccion"] if s["codigo"] == "A")
      25items = seccion_a["item"] if isinstance(seccion_a["item"], list) else [seccion_a["item"]]
      26item = next((i for i in items if PROVINCIA in i["titulo"].upper()), None)
      27if not item:
      28 sys.exit(f"Hoy no hay {PROVINCIA}. Provincias de {dia}: " + ", ".join(i["titulo"] for i in items))
      29
      30texto = leer(item["url_html"])
      31filas = []
      32for nombre, parrafo in re.findall(r'<h5 class="articulo">\d+ - (.*?)</h5>\s*<p class="parrafo">(.*?)</p>', texto, re.S):
      33 p = html.unescape(re.sub("<.*?>", "", parrafo))
      34 if not p.startswith("Constitución"):
      35 continue
      36 campo = lambda k: (re.search(k + r": (.*?)\.(?: [A-Z][a-zé]+[ .:]|$)", p) or [None, ""])[1].strip()
      37 filas.append({"fecha_borme": f"{dia}", "provincia": item["titulo"], "empresa": html.unescape(nombre).rstrip("."),
      38 "comienzo": campo("Comienzo de operaciones"), "actividad": campo("Objeto social")[:300],
      39 "domicilio": campo("Domicilio"), "capital": (re.search(r"Capital: ([\d.,]+ Euros)", p) or [None, ""])[1]})
      40
      41salida = f"empresas-nuevas-{PROVINCIA.split('/')[0].lower()}-{dia:%Y%m%d}.csv"
      42with open(salida, "w", newline="", encoding="utf-8-sig") as f:
      43 w = csv.DictWriter(f, fieldnames=["fecha_borme", "provincia", "empresa", "comienzo", "actividad", "domicilio", "capital"])
      44 w.writeheader(); w.writerows(filas)
      45print(f"{len(filas)} empresas nuevas en {item['titulo']} (BORME del {dia}) → {salida}")
      TerminalmacOS
      $python3 nuevas.py madrid

      Así debería verse

      La API devuelve el sumario del día en JSON: data › sumario › diario › seccion. La sección A («Actos inscritos») trae un item por provincia con su enlace al texto. Los días sin BORME (fines de semana y festivos) no hay sumario, y el script prueba el día anterior.

      Truco

      🎉 Cambia madrid por tu provincia. Si sale «N empresas nuevas en…» y aparece un .csv en la carpeta, ¡nivel 1 superado! Ábrelo con Excel, Numbers o LibreOffice.

    ¿Tu Mac dice «brew: command not found»? Instala Homebrew una vez

    Homebrew es el instalador de programas que usamos en todas las misiones de Mac. Pega esto en la Terminal (es el comando oficial de brew.sh). Te pedirá la contraseña del Mac: al escribirla no se ve nada, es normal.

    Instala HomebrewmacOS
    $/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    Al terminar, copia y ejecuta las líneas que salen bajo «Next steps», cierra la Terminal y ábrela de nuevo. Comprueba con brew --version.

    Comprueba que funcionaTienes un archivo empresas-nuevas-….csv con nombre, actividad, domicilio y capital.

    Si algo falla (4)
    Sale «brew: command not found»
    Te falta Homebrew. Instálalo con el comando de su web oficial, brew.sh, cierra la terminal, ábrela otra vez y repite.
    En Windows dice que no reconoce el comando nuevo
    Cierra PowerShell y ábrelo otra vez: la ventana vieja no sabe que acabas de instalar algo. Si lo que no reconoce es winget, actualiza «Instalador de aplicación» desde Microsoft Store.
    Sale «CERTIFICATE_VERIFY_FAILED»
    Tu Python es el de python.org y no tiene los certificados. Abre Aplicaciones › Python 3.x y haz doble clic en «Install Certificates.command», o usa el python3 de Homebrew del paso 1.
    Sale «Hoy no hay …» con una lista de provincias
    Ese día tu provincia no publicó nada o se escribe distinto (ALICANTE/ALACANT, BALEARS…). Copia el nombre tal cual de la lista o prueba con otra fecha: py nuevas.py alicante 20261030.

    ¿Sigues atascado? Pregunta en la comunidad Avisar de un error en este paso

  2. Lo que desbloqueas

    7 pasos · 2 comandos · 1 errores típicos resueltos

    1. 2El mercado: quién paga por esto~10 min

      Antes de vender, entiende el porqué.

    2. 3Encuentra 20 compradores~20 min

      Tu primera hoja de clientes.

    3. 4Haz la demo para uno de ellos~15 min

      Su lista, con su zona y su sector.

      2 comandos · 1 error resuelto · comprobación incluida

    4. 5El entregable que se repite solo~15 min

      Cada lunes, sin pensarlo.

    5. 6Ponle precio~10 min

      Tres paquetes y una cuenta de horas.

    6. 7Contacta sin saltarte la ley~15 min

      Llamada o visita, no correo masivo.

    7. 8Repite y escala~15 min

      Del primer cliente a la cuota fija.

    Pasos 2–8 con el plan Anual

Primeros logros

Ya lo tienes funcionando. Pruébalo con esto:

Filtra por actividad

Una lista para cada comprador.

Prompt para tu IA

Tengo un CSV de empresas nuevas con una columna «actividad». Escríbeme en Python 5 líneas que guarden en otro CSV solo las filas cuya actividad contenga alguna de estas palabras: [restaurante, bar, hostelería].

Tu guion de llamada

Para la primera gestoría.

Prompt para tu IA

Voy a llamar a una gestoría para ofrecerle cada semana la lista de sociedades recién creadas en su provincia (sacada del BORME). Escríbeme un guion de 30 segundos, natural, que termine pidiendo permiso para mandarle una muestra gratis por correo.

Siguiente nivel: sal en Google Maps

Vende a esas empresas nuevas lo primero que necesitan: que las encuentren.

Siguiente misión

Cómo deshacerlo

Borra la carpeta empresas-nuevas. Python puedes dejarlo: lo usan muchas misiones.

Borrar la carpetamacOS
$rm -rf ~/empresas-nuevas

Haciendo esta misión juntos

Sé de los primeros en terminarla. Si te atascas, pregunta: quien ya la hizo te puede ayudar.

Logros recientes

Preguntas

Siguiente misión · Gana dinero con IA · 24 de 33Mira qué compra tu ayuntamiento sin concurso (webs, redes, formación) y preséntate antes del próximo
Tu progreso 0/8Paso 1 →