▸ Gana dineroPaso 1 gratis

Quién va a reformar este mes en tu ciudad: la lista que un instalador te paga cada mes

Para hacer una obra o abrir un local hay que avisar al ayuntamiento, y algunos publican esas declaraciones en datos abiertos: tipo de obra, distrito, dirección y fecha. Con un script de Python sacas las del último mes, solo de empresas y comunidades de vecinos, y se las vendes a gremios que viven de llegar primero: climatización, carpintería, mudanzas, limpieza de fin de obra.

El negocio en 30 segundos

Solo en Madrid se registran miles de declaraciones responsables de obra y de actividad al año, y el ayuntamiento las publica cada mes en datos abiertos. Detrás de cada una hay alguien que va a necesitar instaladores, carpinteros, mudanzas o limpieza en las próximas semanas.

Lo que enseñas
Le enseñas a una empresa de climatización un mapa con las 60 obras de empresas y comunidades declaradas el mes pasado en su distrito: «Estas son las obras que empiezan ahora a 10 minutos de tu taller».
Dónde están los clientes
Instaladores de climatización, electricistas, carpinterías, cristalerías, empresas de mudanzas, de limpieza de fin de obra, de alarmas y de rótulos (para los locales nuevos). Los encuentras en Google Maps buscando su gremio en tu ciudad.
Lo que recibe el cliente
Una hoja y un mapa cada mes con las obras y locales nuevos de su zona.
Se cobra
Se cobra entre 50 y 150 € al mes por gremio y distrito, más si le das el distrito en exclusiva (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 obras y locales nuevos de un mes en Madrid, solo de empresas y comunidades.
  • Cómo buscar los mismos datos de tu ciudad en el catálogo nacional.
  • Un mapa con las obras de un distrito para enseñar a un instalador.
  • 20 gremios de tu zona, un precio mensual y un guion de llamada legal.

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

  1. 1Instala Python y saca las obras del mes5 min
  2. 2El mercado: qué significa cada tipo10 min
  3. 3Paso legal: solo empresas y comunidades10 min
  4. 4Encuentra 20 gremios20 min
  5. 5Haz la demo: el mapa de su distrito15 min
  6. 6Ponle precio10 min
  7. 7Contacta sin saltarte la ley15 min
  8. 8Repite y escala15 min

1 h 40 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 obras del mes

    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 ~/obras
      $cd ~/obras
    2. 2

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

      obras.py
      1# Obras y locales que se declararon en Madrid un mes concreto, solo de empresas y comunidades. Solo usa Python.
      2import collections, csv, io, sys, urllib.request
      3
      4MES = (sys.argv[1] if len(sys.argv) > 1 else "septiembre").lower()
      5AÑO = sys.argv[2] if len(sys.argv) > 2 else "2026"
      6URL = "https://datos.madrid.es/dataset/133556-0-declaraciones-responsables/resource/133556-0-declaraciones-responsables/download/dr.csv"
      7
      8req = urllib.request.Request(URL, headers={"User-Agent": "obras/1.0"})
      9with urllib.request.urlopen(req, timeout=120) as r:
      10 filas = list(csv.DictReader(io.StringIO(r.read().decode("utf-8-sig")), delimiter=";"))
      11
      12año = next(k for k in filas[0] if k.endswith("Año"))
      13mes = next(k for k in filas[0] if k.endswith("Mes"))
      14quedan = [f for f in filas if f[año] == AÑO and f[mes].lower() == MES
      15 # Solo empresas y comunidades: la dirección de una obra de un particular es un dato personal
      16 and f["PERSONA_INTERESADA"] in ("Persona Jurídica", "Comunidad de Propietarios")]
      17
      18salida = f"obras-madrid-{MES}-{AÑO}.csv"
      19with open(salida, "w", newline="", encoding="utf-8-sig") as f:
      20 w = csv.writer(f)
      21 w.writerow(["expediente", "tipo", "distrito_u_organo", "quien", "direccion", "fecha"])
      22 for x in quedan:
      23 w.writerow([x["Nº_EXPEDIENTE"], x["TIPO"].replace("Declaración Responsable - ", ""), x["ORGANO_COMPETENTE"],
      24 x["PERSONA_INTERESADA"], f"{x['VIA']} {x['DIRECCION']} {x['Nº']}", x["FECHA_ALTA"]])
      25print(f"{len(quedan)} obras de empresas y comunidades en {MES} de {AÑO} → {salida}")
      26for tipo, n in collections.Counter(x["TIPO"].replace("Declaración Responsable - ", "") for x in quedan).most_common():
      27 print(f" {n:5} {tipo}")
      TerminalmacOS
      $python3 obras.py septiembre 2026

      Así debería verse

      El conjunto de datos se actualiza cada mes. Cada fila trae número de expediente, tipo (residencial, actividad, primera ocupación, funcionamiento), órgano o distrito, si la presentó una persona jurídica, física o una comunidad de propietarios, dirección y fecha. No trae nombres.

      Truco

      🎉 Si sale «N obras de empresas y comunidades…» con el recuento por tipo, ¡nivel 1 superado! Cambia el mes por el último que haya (el archivo va con un mes o dos de retraso).

    ¿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 obras-madrid-….csv con las obras del mes.

    Si algo falla (5)
    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 «0 obras»
    Ese mes aún no está publicado: prueba con el mes anterior. Escribe el mes en español y sin mayúsculas (septiembre, octubre…).
    Tarda un rato antes de decir nada
    Es normal: el archivo de Madrid pesa unos 17 MB y trae varios años. Déjalo terminar.

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

  2. Lo que desbloqueas

    7 pasos · 1 errores típicos resueltos

    1. 2El mercado: qué significa cada tipo~10 min

      Cada fila, un cliente distinto.

    2. 3Paso legal: solo empresas y comunidades~10 min

      Lo que no se toca.

    3. 4Encuentra 20 gremios~20 min

      Tu hoja de compradores.

    4. 5Haz la demo: el mapa de su distrito~15 min

      Que lo vea en 10 segundos.

      1 error resuelto · comprobación incluida

    5. 6Ponle precio~10 min

      Por gremio y distrito.

    6. 7Contacta sin saltarte la ley~15 min

      Llamada o visita, no correo masivo.

    7. 8Repite y escala~15 min

      Cada mes, igual.

    Pasos 2–8 con el plan Anual

Primeros logros

Ya lo tienes funcionando. Pruébalo con esto:

Filtra por distrito

Una lista para cada gremio.

Prompt para tu IA

Tengo un CSV con las columnas tipo, distrito_u_organo, quien, direccion y fecha. Escríbeme en Python 6 líneas que guarden en otro CSV solo las filas cuyo distrito esté en esta lista: [CHAMBERI, SALAMANCA, CENTRO].

Tu guion para el instalador

30 segundos y una pregunta.

Prompt para tu IA

Voy a llamar a una empresa de [aire acondicionado / carpintería / mudanzas] para ofrecerle cada mes la lista de obras y locales nuevos declarados en su distrito (datos abiertos del ayuntamiento). Escríbeme un guion de 30 segundos que termine pidiendo permiso para mandarle la lista de este mes gratis.

Siguiente nivel: cobra legal desde el primer cliente

Antes de facturar a tus gremios, alta, IVA y facturas en orden.

Siguiente misión

Cómo deshacerlo

Borra la carpeta obras. Si creaste un mapa en Google My Maps, bórralo desde My Maps.

Borrar la carpetamacOS
$rm -rf ~/obras

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 · 27 de 33Cobra legal desde el primer cliente: alta de autónomo, IVA, facturas y Verifactu sin lío
Tu progreso 0/8Paso 1 →