Leer datos EXIF
Cada foto que produce una cámara o un teléfono lleva dentro un segundo archivo silencioso: el modelo de cámara, el segundo exacto en que se tomó, a veces las coordenadas exactas de dónde ocurrió. Este endpoint lee esos metadatos incrustados en una imagen y los devuelve como datos estructurados, sin tocar un solo píxel de la foto.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
El archivo dentro del archivo
Un JPEG o un TIFF no son solo píxeles: desde mediados de los años noventa, las cámaras incrustan un bloque de metadatos estandarizado llamado EXIF junto a los datos de la imagen, que registra lo que el sensor sabía en el momento de la captura: marca y modelo, ajustes de exposición, orientación, marca de tiempo y, si los servicios de ubicación estaban activos, coordenadas GPS. La mayoría de las veces nadie lo mira, pero ahí está en cada foto sin modificar, esperando a ser leído.
Quién necesita realmente leerlo
Plataformas de gestión de fotos que ordenan y fechan bibliotecas grandes según la fecha real de captura y no la de carga, procesos de seguros y reclamos que verifican cuándo y aproximadamente dónde se tomó una foto, flujos de verificación de contenido y análisis forense que revisan los datos de origen de una foto antes de confiar en su contexto, herramientas inmobiliarias y de inspección que confirman que las coordenadas GPS de una foto de sitio coinciden con la propiedad a la que está asociada.
Qué regresa la lectura
Envía la imagen, recibe de inmediato un task_id, y la tarea devuelve los campos de metadatos presentes en el archivo —marca y modelo de cámara, marca de tiempo de captura, orientación, y latitud y longitud GPS cuando existen— como datos estructurados, sin añadir nada ni inventar nada si un campo simplemente no está presente.
Un paso de automatización silencioso pero esencial
Como es una lectura rápida y de precio plano, sin ninguna transformación de imagen de por medio, encaja como un paso temprano y económico en casi cualquier flujo de fotos: llega una carga, primero se lee el EXIF para fecharla y geolocalizarla correctamente, y solo entonces la imagen avanza hacia almacenamiento, moderación o cualquier procesamiento visual.
Metadatos que no siempre sobreviven
Vale la pena saber de antemano que los datos EXIF no están garantizados: muchas redes sociales y apps de mensajería los eliminan al subir la foto por razones de privacidad, y una captura de pantalla o una imagen reguardada suele no llevar ninguno. Este endpoint lee fielmente los metadatos que el archivo realmente contiene; no puede recuperar lo que ya se eliminó antes de que la foto llegara a él.
Qué puede hacer con ella
Organización de bibliotecas de fotos
Una plataforma de medios lee la marca de tiempo de captura de cada foto cargada para ordenar la biblioteca según cuándo se tomó realmente.
Verificación de reclamos de seguros
Un proceso de reclamos lee las coordenadas GPS y la marca de tiempo incrustadas en una foto enviada para comprobar que coinciden con el incidente reportado.
Verificación de origen de contenido
Un flujo forense o de moderación revisa los metadatos de cámara y la marca de tiempo de una foto antes de dar por confiable el contexto que se le atribuye.
Confirmación de inspecciones de campo
Una herramienta de inspección de propiedades lee los datos GPS de una foto de sitio para confirmar que se tomó en la dirección a la que está asociada.
Preguntas frecuentes
¿Cómo leo los datos EXIF de una imagen con esta API?
Envía un POST a /image/exif-read con la imagen; los campos de metadatos presentes en el archivo llegan como datos estructurados por webhook o enlace firmado.
¿Tiene prueba gratuita?
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.
¿Cómo se cobra?
$0.002 por solicitud, una tarifa plana publicada sin componente adicional por imagen, ya que no ocurre ninguna transformación de la imagen.
¿Toda foto tiene datos GPS?
No, las coordenadas GPS solo aparecen si los servicios de ubicación estaban activos cuando se tomó la foto; de lo contrario el campo simplemente no existe.
¿Por qué mi imagen descargada no tiene datos EXIF?
Muchas plataformas sociales y de mensajería eliminan los metadatos EXIF al subir la foto por privacidad del usuario, así que una foto vuelta a descargar suele no tener nada que leer.
¿Qué formatos llevan metadatos EXIF?
Los archivos JPEG y TIFF son los que más comúnmente llevan EXIF; otros formatos admiten metadatos incrustados similares, pero la cobertura y los campos pueden variar.
¿Esto modifica la imagen?
No, es una operación de solo lectura. La foto en sí nunca se altera; solo se extraen y devuelven sus metadatos existentes.
¿Se cobra si la lectura falla?
No. Una tarea fallida se reintenta automáticamente hasta tres veces y nunca se cobra; en su lugar recibe un error claro.
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/image/exif-read \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/exif-read", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/exif-read",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/exif-read", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/exif-read", 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
{
"image": "https://ejemplo.com/imagen.jpg"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.exif_read",
"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 | 15 |
max_megapixels | 12 |
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. |