Normalizar nombres y direcciones
El mismo cliente aparece como "Jon Smith", "SMITH, JOHN" y "Jhon Smith Jr." en tres hojas de cálculo distintas, y ningún script de deduplicación las une sin ayuda. Este endpoint toma un lote de cadenas de nombre y dirección tal como llegaron y devuelve un registro normalizado por cada ítem, con mayúsculas y orden consistentes, para que los sistemas siguientes por fin tengan algo confiable con qué comparar.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El desorden que resuelve
Los nombres y direcciones llegan de una docena de fuentes: un formulario de compra, una importación de CRM, una factura escaneada que alguien tecleó a mano, un CSV exportado de un sistema que truncó los segundos nombres. Cada fuente tiene sus propias mañas y ninguna coincide en mayúsculas, abreviaturas u orden de los campos. Una persona que lee "J. VAN DER BERG" y "Van der Berg, J." sabe al instante que probablemente son la misma persona; una comparación de cadenas ingenua no lo sabe, y de esa brecha nacen los registros duplicados y las entregas fallidas.
Qué hace realmente la normalización
La api normalizar direcciones toma cada cadena tal como llegó y produce una versión estructurada y limpia: mayúsculas consistentes para los nombres, abreviaturas de calle y unidad expandidas o estandarizadas, un orden de campos predecible y la separación de componentes como nombre, apellido y sufijo cuando se pueden identificar con confianza. No adivina la identidad de una persona ni enriquece el registro con datos externos; hace que la forma en que se representa lo que ya tiene sea lo bastante consistente para comparar, ordenar y deduplicar.
Cómo funciona la solicitud y el precio
Envía un lote de ítems con un POST a /data/normalize-names y la llamada devuelve un task_id de inmediato, porque normalizar muchos registros es trabajo real que no debería mantener una conexión abierta. El lote limpio llega a su webhook firmado o mediante un enlace firmado válido por 24 horas al terminar el proceso. El precio es transparente: $0.003 por solicitud más $0.0135 por ítem, así que un lote de 200 registros tiene un costo fijo y calculable antes de enviarlo, y un trabajo fallido se reintenta tres veces y nunca se cobra.
Por qué esto es más difícil que un buscar y reemplazar
El formato de nombres y direcciones varía enormemente según el país y la costumbre: algunas culturas ponen el apellido primero, algunas direcciones ponen el número de unidad antes de la calle y otras después, y los hábitos de abreviatura como "Av." frente a "Avenida" cambian según la región y según quién esté tecleando. Un conjunto rígido de expresiones regulares se rompe apenas aparece un formato para el que no fue escrito, y por eso este problema suele reaparecer cada vez que una empresa suma una fuente de datos nueva en lugar de resolverse de una vez.
Dónde encaja en un flujo de datos
Como los resultados llegan estructurados y de forma asíncrona, la normalización encaja justo antes de un paso de deduplicación, una importación a CRM o una exportación de lista de correo, atajando la inconsistencia en la puerta en lugar de después de que ya causó registros duplicados o correo devuelto. El acceso requiere saldo prepago, lo que mantiene el endpoint rápido y libre de tráfico abusivo. Este endpoint está activo ahora.
Qué puede hacer con ella
Deduplicación de CRM antes de fusionar
Un equipo de operaciones comerciales normaliza dos CRM antes de fusionarlos, para que "Robert Chen" y "CHEN, ROB" colapsen en un solo registro comparable en lugar de crear un contacto duplicado.
Limpieza de listas de correo
Una empresa de logística normaliza direcciones de clientes recolectadas en cinco años de formularios de compra para que las etiquetas de envío dejen de fallar por abreviaturas inconsistentes como "Apto" frente a "Apartamento".
Importación desde un sistema heredado
Un proyecto de migración normaliza decenas de miles de nombres de clientes exportados de una base de datos que se retira, antes de cargarlos en un sistema nuevo con reglas de formato más estrictas.
Consolidación de listas de prospectos
Un equipo de marketing normaliza prospectos recolectados en varios formularios y proveedores para que el mismo posible cliente no reciba tres contactos bajo tres variantes ligeramente distintas de su nombre.
Preguntas frecuentes
¿Cómo normalizo nombres y direcciones con una API?
Envíe un POST a /data/normalize-names con un lote de cadenas de nombre y dirección. La api normalizar direcciones devuelve un task_id de inmediato y entrega el lote limpio a su webhook o a un enlace firmado al terminar el proceso.
¿Esta API es gratis?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Verifica que una dirección realmente exista?
No, estandariza el formato, las mayúsculas y la estructura de la dirección que envía; no valida si es entregable ni confirma que exista en el mundo real.
¿Funciona en varios idiomas y países?
Está construida para manejar una amplia variedad de convenciones de nombres y direcciones, aunque las normas de formato varían tanto por región que siempre conviene revisar los resultados con formatos poco habituales.
¿Puedo normalizar un lote grande en una sola solicitud?
Sí, envía un lote de ítems en una sola solicitud y cada ítem se cobra individualmente a $0.0135, con todo el lote procesado de forma asíncrona y entregado junto.
¿Fusiona los registros duplicados por mí?
Normaliza cada registro a un formato consistente que hace fácil detectar duplicados con una comparación simple; la decisión y lógica de fusión quedan en su propio flujo de trabajo.
¿La API Normalizar Nombres y Direcciones ya está activa?
Sí, este endpoint está activo hoy al precio publicado de $0.003 por solicitud más $0.0135 por ítem.
¿Qué pasa con mis datos después de normalizarlos?
Los registros enviados y el resultado normalizado se eliminan tras la ventana de retención y jamás se usan para entrenar nada. La entrega es por webhook firmado o por un enlace firmado válido por 24 horas.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/normalize-names \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/data/normalize-names", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/normalize-names",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/normalize-names", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/normalize-names", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.normalize_names",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |