Quitar duplicados de un CSV
Fusione dos exportaciones de contactos, reimporte un archivo por accidente o agregue feeds de varias fuentes, y casi siempre se cuelan filas duplicadas. Esta API para deduplicar CSV elimina duplicados exactos según las columnas que especifique, ya sea la fila completa o solo una dirección de correo, conservando la primera aparición y descartando el resto.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
De dónde vienen realmente las filas duplicadas
Los duplicados casi nunca aparecen porque alguien escribió la misma fila dos veces a propósito; surgen de volver a correr una importación que no era idempotente, de combinar una exportación antigua con una nueva que se traslapa en el rango de fechas, de fusionar listas de prospectos de dos herramientas de marketing que capturaron el mismo registro, o de una sincronización programada que se disparó dos veces tras un reintento. Sin eliminarlos, los duplicados inflan los conteos de filas, distorsionan cualquier agregación o reporte basado en conteos y, peor aún en una lista de contactos, hacen que la misma persona reciba dos correos.
Cómo funciona la coincidencia por columnas
Llama a POST /data/dedupe-csv con su archivo y una lista de las columnas que definen una coincidencia, y recibe un task_id de inmediato ya que la tarea corre de forma asíncrona. Si especifica todas las columnas, solo se eliminan las filas idénticas en todo el registro; si especifica solo una columna de correo o de ID de pedido, cualquier fila que comparta ese valor con una fila anterior se descarta aunque otros campos difieran, algo relevante cuando el mismo cliente aparece dos veces con una dirección ligeramente actualizada. La coincidencia es exacta, no difusa, así que 'Acme Inc.' y 'ACME INC' se tratan como distintos a menos que normalice las mayúsculas antes, típicamente con un paso de limpieza de CSV primero.
Coincidencia exacta frente a coincidencia difusa, y por qué la exacta va primero
La deduplicación siempre se ha dividido en dos familias: la coincidencia exacta, donde la igualdad es inequívoca y el resultado es determinista, y la coincidencia difusa, donde registros casi idénticos se juzgan similares mediante alguna heurística de puntuación que puede no coincidir con el criterio de una persona. La deduplicación exacta por columnas es la opción correcta por defecto para la mayoría de las tuberías porque nunca produce una fusión falsa — dos filas solo se combinan cuando son comprobablemente iguales en las columnas que importan — y por eso debe ser el primer paso antes de recurrir a las técnicas difusas, que exigen más criterio.
Dónde encaja la deduplicación en una tubería automatizada
Ejecute este paso después de fusionar archivos de varias fuentes, después de limpiar un CSV para que las diferencias de espacios y mayúsculas no oculten duplicados reales, y antes de cargar los datos en cualquier sistema donde las filas duplicadas causen daño más adelante, como un CRM, un sistema de facturación o una lista de envío de correos. Se combina de forma natural como el segundo paso de una tubería de dos etapas: limpiar primero para normalizar los datos, y luego deduplicar según las columnas que definen unicidad para su caso de uso.
Entrega, precio y estado
El CSV deduplicado se entrega por un webhook firmado, recomendado para tuberías de importación, o un enlace firmado válido durante 24 horas; el origen y la salida se eliminan tras la ventana de retención y nunca se usan para entrenar modelos. El precio es un fijo de $0.002 por solicitud sin importar el número de filas, y una tarea fallida — por ejemplo, especificar el nombre de una columna que no existe en el archivo — nunca se cobra tras los tres reintentos estándar. Este endpoint está activo ahora.
Qué puede hacer con ella
Fusionar listas de contactos sin enviar correos duplicados
Combine exportaciones de dos herramientas de marketing y deduplique por la columna de correo, conservando un solo registro por dirección antes de que la lista llegue a su plataforma de envío.
Corregir una doble importación accidental
Elimine las filas duplicadas exactas creadas cuando el mismo archivo, o una exportación traslapada, se importó dos veces al mismo conjunto de datos.
Deduplicar registros de pedidos por ID de pedido
Descarte las filas repetidas que comparten el mismo ID de pedido tras agregar feeds de varios canales de venta, conservando el primer registro de cada pedido.
Preparar una lista limpia antes de importar a un CRM
Deduplique una lista de prospectos por nombre de empresa y dominio antes de cargarla en un CRM, evitando registros de cuenta duplicados que fragmentan el historial de ventas.
Preguntas frecuentes
¿Cómo elimino duplicados de un CSV con una API?
Envíe el archivo a POST /data/dedupe-csv junto con las columnas que definen una coincidencia; un task_id se devuelve de inmediato, y el CSV deduplicado llega a su webhook firmado o a un enlace firmado cuando termina el procesamiento.
¿La API para deduplicar CSV es gratis?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Puedo deduplicar por una sola columna en vez de toda la fila?
Sí. Especifique cualquier subconjunto de columnas, como solo un correo o un ID de pedido, y las filas que compartan ese valor con una fila anterior se eliminan aunque otros campos difieran.
¿Hace coincidencia difusa para filas casi duplicadas?
No, la coincidencia es exacta sobre las columnas que elija; los casi duplicados que difieren en espacios o mayúsculas solo se detectan si limpia el CSV primero para normalizar esas diferencias.
¿Qué fila duplicada se conserva?
Se conserva la primera aparición en el archivo y se eliminan las filas coincidentes posteriores, así que el orden de su archivo de entrada determina qué versión de un duplicado sobrevive.
¿Puedo deduplicar archivos CSV grandes?
Sí, dentro de los límites de tamaño publicados para el endpoint; el precio se mantiene como una tarifa fija por solicitud sin importar cuántas filas tenga el archivo.
¿Puedo deduplicar CSV por lotes?
Sí. Cada solicitud es una tarea asíncrona independiente, así que puede enviar muchos archivos en paralelo y recoger cada resultado deduplicado por webhook a medida que termina.
¿Debo limpiar un CSV antes de deduplicarlo?
Es una buena práctica: la limpieza recorta espacios y normaliza la codificación primero, así que la deduplicación exacta sobre un campo de texto como correo o nombre de empresa detecta duplicados que un formato inconsistente ocultaría.
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/dedupe-csv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/dedupe-csv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/dedupe-csv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/dedupe-csv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/dedupe-csv", 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
{
"text": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.dedupe_csv",
"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. |