Nota, agosto de 2026: este pipeline se construyó acá y hoy corre en MappingBitcoin, donde vive el directorio. También es uno de los proyectos que enlazamos desde nuestra página de proyectos, cosa que vale la pena decir antes de un artículo que cita su documentación de punta a punta. La descripción de abajo sigue lo que esa documentación afirma, y en su mayor parte aplica a cualquier mapa construido sobre los mismos datos.
Con qué se termina
Una comprensión de las cuatro etapas que hay entre una etiqueta de OpenStreetMap y una ficha en un mapa, y una consulta propia que devuelve los registros crudos que alimentan la primera etapa, para que el pipeline deje de ser una caja negra que hay que aceptar por confianza.
El final de este artículo es una consulta que se puede correr en un navegador contra una API pública, y un número en una página en vivo contra el cual contrastarla. Si los dos no coinciden para un país, ya se sabe por dónde empezar a mirar.
Antes de empezar
- Un navegador. Es genuinamente todo lo que hace falta para la consulta.
- Una ciudad o región en mente, e idealmente una expectativa de cuántos comercios bitcoin tiene, para que el resultado tenga contra qué contrastarse.
- Cómo leer una ficha ayuda, porque los modos de falla de abajo son las razones por las que esas fichas no son confiables.
Comprobado el 20 de agosto de 2026 contra la documentación publicada de MappingBitcoin sobre sincronización con OSM, enriquecimiento de datos y la API, contra sus páginas de estadísticas y de país, y contra el endpoint público de Overpass, que devolvió las cuentas citadas abajo.
El costo que se está aceptando
Cada etapa de abajo cambia cobertura por corrección, y no hay ajuste que dé las dos cosas. Una detección lo bastante estricta como para evitar ruido se pierde comercios reales; una lo bastante amplia como para atraparlos a todos arrastra registros que no son comercios. La misma elección reaparece en cada etapa. Cuando un directorio parece inusualmente completo, suele estar inusualmente equivocado en algún lado, y cuando parece inusualmente limpio, suele faltarle cosas.
1. Detección
La fuente es OpenStreetMap, una base de datos geográfica colaborativa que cualquiera puede editar. Un negocio se marca como que acepta bitcoin etiquetándolo, y la documentación de sincronización de MappingBitcoin enumera las cuatro etiquetas que vigila:
currency:XBT
payment:bitcoin
payment:lightning
bitcoin
Carga el conjunto inicial a través de la API Overpass sobre nodos, ways y relaciones, y después sigue el feed de replicación de OpenStreetMap: un trabajo corre cada minuto, parsea los diffs en XML, registra altas, modificaciones y bajas, y encola lo que cambió para la etapa siguiente.
Dónde falla: las etiquetas no están estandarizadas tan firmemente como uno esperaría.
currency:XBT y payment:onchain significan cosas sutilmente distintas, una dice que los
precios están denominados en bitcoin y la otra que se acepta bitcoin como pago, y quienes
contribuyen las usan indistintamente. Los directorios además no coinciden en qué etiquetas
cuentan, así que el mismo café puede estar en uno y faltar en otro sin que nadie se haya
equivocado. La detección tiene que ser permisiva, y eso implica arrastrar ruido.
2. Enriquecimiento geográfico
Los registros crudos de OSM son inconsistentes. Un local puede tener coordenadas y un nombre de calle pero ninguna ciudad, o una ciudad escrita de tres formas distintas en tres registros, o una dirección en un alfabeto local sin transliteración.
Por eso cada registro se enriquece desde sus coordenadas con país, provincia, ciudad y una dirección formateada, tratando a las coordenadas mismas como el campo autoritativo, porque son lo único que casi siempre está presente y casi siempre es correcto. La documentación de enriquecimiento describe la ciudad como la más cercana encontrada mediante un índice espacial, y dice que para un local mapeado como área y no como punto, el centro se calcula desde los nodos del contorno.
Dónde falla: la ciudad más cercana no es la misma pregunta que en qué ciudad está un lugar. Se equivoca con seguridad cerca de fronteras, en territorios disputados y en cualquier parte donde los límites administrativos no coinciden con cómo la gente describe dónde vive. Un local puede terminar archivado bajo la región equivocada mientras está en coordenadas perfectamente correctas.
3. Categorización
Un directorio solo sirve si se puede filtrar: comida, alojamiento, comercio, servicios. OSM
tiene su propio vocabulario de etiquetado para eso (amenity=restaurant, shop=clothes y
varios cientos más), así que la primera pasada es un mapeo directo de etiquetas OSM a
categorías del directorio, y la documentación ubica el tamaño de ese diccionario en más de
cien subcategorías.
Eso cubre la mayoría de los registros. La segunda pasada no es inferencia: un local cargado por el formulario propio de MappingBitcoin trae una categoría que eligió quien lo cargó de una lista obligatoria, y eso es lo que cubre el hueco cuando las etiquetas de OSM no coinciden con nada del diccionario.
Dónde falla: una categoría autodeclarada es una afirmación como cualquier otra, y las categorías de bordes más flojos se tragan la dificultad en lugar de resolverla. El 20 de agosto de 2026 la página de estadísticas mostraba "Other" como la cuarta categoría más grande, 3.503 registros sobre 28.408. Un lugar llamado "The Vault" podría ser un bar, un gimnasio o un espacio de coworking, y un directorio que tiene que adivinar debería decir que adivinó.
4. Nombres y deduplicación
Cada local recibe un slug de URL generado desde su nombre y su ubicación, y la regla documentada para colisiones es mecánica: si el slug ya existe, se agrega la ubicación, y si todavía colisiona, se agrega un contador.
Lo que vale la pena notar es lo que no está. No hay una etapa publicada de moderación aparte. La deduplicación ocurre en los dos extremos: el formulario de carga busca locales existentes mientras se escribe el nombre, y OpenStreetMap es donde quienes mapean fusionan los nodos duplicados.
Dónde falla: el mismo café físico existe con frecuencia como varios nodos de OSM creados por distintas personas a lo largo de varios años, y ninguno de los dos extremos lo detecta de manera confiable. Quien carga el lugar con el nombre escrito distinto pasa de largo por la búsqueda, y la fusión en OpenStreetMap solo ocurre si alguien lo nota y le importa. En esta etapa se decide la calidad real de un directorio, y es la menos automatizable.
El problema que hay debajo de todo
Cada etapa de arriba trata sobre higiene de datos. El problema difícil es otro: el mapa no puede decir si una ficha sigue siendo cierta.
Una etiqueta agregada en 2021 por un turista bienintencionado se ve exactamente igual que una
agregada la semana pasada por la dueña, salvo que alguien haya anotado una fecha. Algunos lo
hacen: de los 90 registros etiquetados con bitcoin dentro del recuadro de Buenos Aires que
figura más abajo, consultados el 20 de agosto de 2026, 71 llevaban check_date:currency:XBT
y 10 llevaban survey:date. Pero una fecha es una afirmación sobre cuándo miró alguien, no
sobre quién era ni sobre si preguntó.
Ese es el problema al que apunta MappingBitcoin usando Nostr: una dueña prueba que la ficha es suya por correo, por un registro DNS o por un archivo en su propio sitio, la prueba queda atada a una clave pública de Nostr, y el peso de esa prueba viene de la red de confianza alrededor de esa clave y no de la decisión de un moderador. Es temprano. El 20 de agosto de 2026 la página de estadísticas informaba 29 negocios verificados contra 28.408 comercios, así que el mecanismo existe y casi no se usó. Tampoco vuelve ciertas a las fichas. Separa "alguien en internet lo dijo" de "lo dijo la dueña, y puede probar que la cuenta es suya".
Correr la primera etapa por cuenta propia
No hay un endpoint público con el conjunto de datos terminado. La referencia de API de MappingBitcoin documenta endpoints de reseñas y de verificación, y enumera la búsqueda y la lectura de locales como todavía pendientes, así que la vía pública a los datos es la fuente misma: OpenStreetMap, a través de Overpass.
- Abrir overpass-turbo.eu. Sin cuenta y sin clave.
- Pegar esto y ejecutarlo. Pide todo lo que haya en un recuadro con la etiqueta:
[out:json][timeout:60];
nwr["currency:XBT"="yes"](-34.75,-58.60,-34.50,-58.30);
out center;
- Las coordenadas de arriba cubren Buenos Aires; se reemplazan por el recuadro propio.
Conviene usar
nwry nonode: un negocio mapeado como el contorno de un edificio es un way, no un nodo, y pedir solamente nodos lo descarta en silencio. - Cambiar
out center;porout count;cuando solo interese el número. Ejecutada el 20 de agosto de 2026, esa consulta devolvió 90 registros para Buenos Aires, todos ellos nodos. - Para contar un país entero en lugar de un recuadro, se lo nombra por su código ISO:
[out:json][timeout:150];
area["ISO3166-1"="AR"][admin_level=2]->.a;
nwr["currency:XBT"="yes"](area.a);
out count;
- Abrir la página de país correspondiente, con la forma mappingbitcoin.com/bitcoin-shops-in-argentina, y leer el número que declara. Esa es la comparación de la que trata la sección siguiente.
Cómo comprobar que salió bien
- Contar los dos lados. El 20 de agosto de 2026, Overpass devolvió 251 registros para
Argentina solo con
currency:XBT=yes, 245 nodos y 6 ways, y la página de país decía 249 lugares. - Los números no van a coincidir exactamente, y esa brecha es el punto. Dos cuentas separadas por unos pocos registros significan que el directorio está leyendo esencialmente el mismo conjunto que se pidió. Una brecha de decenas o centenas significa que está descartando registros, o leyendo etiquetas que no se le pidieron.
- Ampliar la consulta a las etiquetas que el directorio realmente vigila y ver qué se
mueve. Agregar
payment:bitcoinypayment:lightninga la consulta de Argentina llevó el total de Overpass de 251 a 252, así que en Argentina esas etiquetas casi nunca se usan solas. En otro lugar esa diferencia va a ser grande, y eso es un dato sobre las costumbres locales de mapeo. - Elegir un registro presente en Overpass y ausente del mapa, y leer sus etiquetas.
Nueve de cada diez veces la explicación se ve de inmediato: falta
currency:XBT, hay un error de tipeo, o el nodo duplica a otro ya listado. - Revisar la forma de lo que se contó. En la muestra de Buenos Aires de arriba, 75
registros llevaban
payment:onchain, 72 llevabanpayment:lightningy 7 llevabanpayment:lightning_contactless. Si esas tres cuentas propias dan todas iguales al total, lo más probable es que se esté leyendo la salida normalizada de un directorio y no las etiquetas crudas.
Si algo sale mal
Overpass no devuelve nada. Revisar el orden del recuadro. Overpass toma
(sur,oeste,norte,este), y un par transpuesto describe en silencio una región vacía de
océano.
Overpass da timeout. La consulta es demasiado grande o el timeout demasiado corto. Las instancias públicas de Overpass son un recurso compartido, así que conviene acotar un recuadro a una ciudad, y darle a una consulta por área de país un timeout más largo en lugar de un recuadro más grande.
La consulta por área devuelve cero para un país que seguro tiene comercios. El código ISO o el nivel administrativo están mal, y un filtro de área que no coincide con nada devuelve un conjunto vacío en lugar de un error. Conviene revisar el código contra la relación de OpenStreetMap del propio país.
La cuenta propia da muchísimo más que la del directorio. Revisar qué se está contando.
Las casas de cambio y los cajeros llevan la misma etiqueta de moneda que los comercios, y 8
de los 90 registros de Buenos Aires estaban etiquetados como amenity=bureau_de_change en
lugar de ser lugares donde comprar algo. La mayoría de los directorios los separan, y una
cuenta cruda de Overpass no.
Por qué OpenStreetMap
Sería más fácil correr una base de datos privada. OSM vale el desorden por una sola razón: no es de nadie. Los datos no se pueden revocar, ni volver a tarifar, ni condicionar a un acuerdo de API. Toda herramienta construida encima lee la misma fuente, así que el esfuerzo puesto en etiquetar un café beneficia a MappingBitcoin, a BTC Map y a todo lo demás que lea los mismos registros, y no al producto de una empresa.
Para un directorio de negocios que aceptan un dinero que nadie controla, un conjunto de datos que nadie controla es la elección consistente.
Corrección, 20 de agosto de 2026. Dos afirmaciones de hecho de este artículo estaban mal y fueron reemplazadas. Decía que la etapa de categorización usaba un modelo de lenguaje para inferir una categoría desde el nombre y la descripción del local; la documentación publicada de enriquecimiento de MappingBitcoin no describe ningún paso así, y la segunda pasada es una categoría que elige quien carga el lugar en el formulario. También describía una etapa de moderación que deduplicaba y descartaba errores antes de publicar; no hay una etapa publicada de moderación aparte, y la sección ahora dice dónde ocurre realmente la deduplicación. El recorrido práctico antes corría contra la API de BTC Map como salida terminada. Esa API es real y sigue funcionando, pero este artículo trata sobre el pipeline detrás de MappingBitcoin, que no tiene endpoint público para su conjunto de datos, así que el recorrido ahora corre contra OpenStreetMap por Overpass y contrasta el resultado con una cuenta publicada.
