> ## Documentation Index
> Fetch the complete documentation index at: https://glasser.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Descripción general de las soluciones

> Explora las seis capacidades de datos predefinidas de GTM y sus acciones compatibles.

Una **Solution** es un conjunto predefinido de capacidades de datos para un tipo de usuario.
Actualmente, Glasser ofrece la **GTM Solution** (`gtm`) para la investigación de ventas y marketing,
con las seis capacidades que se indican a continuación.

Una **Capability** es un elemento de esa Solution, como `company_intelligence`
o `people_search`. Cada una tiene un conjunto fijo de acciones y entradas compatibles.

## ¿Por qué usar una Solution?

Por ejemplo, **Company intelligence** puede buscar una empresa por dominio. Envías
`domain`; Glasser selecciona un proveedor de datos compatible, asigna la entrada a su endpoint
y puede probar otro proveedor de datos elegible si se producen errores compatibles.

Así, los formatos de entrada específicos de cada proveedor de datos quedan fuera de tu integración: envías
`domain`, independientemente de que el proveedor de datos seleccionado espere `domain`, `website` o
`company_website`.

Usa una Solution cuando sus entradas cubran tu tarea. Si necesitas un endpoint específico,
todas sus opciones de entrada o su Price exacto antes de la ejecución, usa
[search](https://glasser.ai/docs/es/api-reference/endpoints/search.md), [inspect](https://glasser.ai/docs/es/api-reference/endpoints/inspect.md)
y [run](https://glasser.ai/docs/es/api-reference/runs/create.md) para seleccionarlo y llamarlo directamente.

## Capacidades disponibles

Cada Capability tiene su propia ruta de solicitud en `/v1/solutions/gtm/`.

| Capability | Qué puedes solicitar |
| - | - |
| [Web research](https://glasser.ai/docs/es/api-reference/solutions/gtm/web_research.md) | Búsqueda web y de noticias, lugares, resultados de compras y contenido de páginas. |
| [Company intelligence](https://glasser.ai/docs/es/api-reference/solutions/gtm/company_intelligence.md) | Perfiles de empresas, tecnología, tráfico, competidores, financiación y noticias. |
| [People search](https://glasser.ai/docs/es/api-reference/solutions/gtm/people_search.md) | Encontrar personas, enriquecer perfiles y consultar información de contacto empresarial. |
| [SEO research](https://glasser.ai/docs/es/api-reference/solutions/gtm/seo_research.md) | Datos de palabras clave, posiciones, backlinks, competidores de búsqueda, brechas de palabras clave y backlinks, historial de posiciones, rastreos de sitios, comprobaciones de páginas y citas de respuestas de IA. |
| [Social research](https://glasser.ai/docs/es/api-reference/solutions/gtm/social_research.md) | Perfiles, publicaciones, comentarios y resultados de búsqueda específicos de cada plataforma. |
| [Market data](https://glasser.ai/docs/es/api-reference/solutions/gtm/market_data.md) | Registros de propiedades de EE. UU., estimaciones de valor y alquiler, anuncios y cotizaciones bursátiles. |

La referencia de cada Capability enumera sus acciones compatibles, proveedores de datos y
campos obligatorios. La mayoría usa `action` para seleccionar qué hacer; Social research usa
`platform` y `mode`.

## Ejemplo: obtener el perfil de una empresa

Configura tu Key como se describe en la [descripción general de la API](https://glasser.ai/docs/es/api-reference/overview.md).
Esta solicitud ejecuta una recuperación de datos de pago:

```bash theme={null}
curl --request POST \
  --url https://api.glasser.ai/v1/solutions/gtm/company_intelligence \
  --header "Authorization: Bearer $GLASSER_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: company-profile-glasser-001" \
  --data '{"domain":"glasser.ai"}'
```

Para esta Capability, `domain` es el único campo obligatorio del cuerpo. Si omites `action`
se usa `enrich`; si omites `provider` se usa `auto`. `metadata` es opcional y puede
omitirse. Conserva el mismo `Idempotency-Key` al reintentar esta solicitud; elige un valor nuevo para una
consulta nueva o una solicitud diferente.

## Cómo funciona la selección del proveedor de datos

| Opción | Comportamiento |
| - | - |
| `provider: "auto"` (predeterminado) | Usa el primer proveedor de datos elegible según el orden de preferencias de Glasser. No compara precios en tiempo real. |
| Un proveedor de datos concreto, como `"apollo"` | Usa solo ese proveedor de datos, sin alternativa. Debe admitir la solicitud y estar permitido por tu Key. |

Con `auto`, Glasser puede probar el siguiente proveedor de datos elegible después de un error del proveedor de datos,
un tiempo de espera o la indisponibilidad del endpoint. La búsqueda no cambia de proveedor de datos si el resultado está vacío.
Fetch (`scrape`) también puede cambiar de proveedor de datos si la salida está vacía o no es válida, o si faltan
formatos compatibles, dentro del presupuesto de la solicitud. El texto y la longitud del contenido no activan el cambio de proveedor.
Cada endpoint seleccionado debe admitir tus entradas y estar permitido por tu Key.

## Resultados y cargos

Cada acción de Web research devuelve `output` normalizado. Scrape expone
`text`, `markdown`, `html` y `raw_html`; los formatos que faltan son null. Search expone
`output.results[]`; news, places, scholar, shopping, images, videos y similares exponen
`output.items[]` con campos fijos por fila; answer expone `output.answer` y `citations[]`. La salida nativa del proveedor de datos no se repite en `output`; permanece
en el Run y se puede leer con Get Run. Glasser no convierte HTML en texto ni combina capturas.

Lee `result_status` para conocer la entrega: `success`, `partial`, `no_result`, `error` o
`pending`. Los formatos solicitados que faltan aparecen en `missing_formats`. Los errores de entrega
tienen `output: null` y un `error`. La semántica del contenido no está verificada.

`charge_usd` es el total de los `runs` enumerados, incluidos los errores con cargo y
los resultados vacíos. Cada Run tiene su propio cargo y cláusula en `runs[]`. Un Run
no liquidado hace que el total sea null; varios Run no tienen un único `charge_basis` de nivel superior.
`id`, `provider` y `status` en mayúsculas siguen describiendo el Run final.

POST devuelve HTTP 200 para un Run terminado y 202 mientras está en curso. Consulta el
`result_url` devuelto en el origen de la API con tu Key para conservar la salida normalizada
y los cargos totales. Esta lectura devuelve HTTP 200 incluso mientras está pendiente; comprueba el cuerpo.
La consulta no crea Run y no reanuda el cambio de proveedor de datos. [Get Run](https://glasser.ai/docs/es/api-reference/runs/get.md)
conserva la salida nativa y el cargo individual. Los plugins antiguos que solo consultan Get Run
deben actualizar su ruta de consulta. `COMPLETED` por sí solo no demuestra que el contenido sea utilizable.

SEO research devuelve `output` normalizado para cada acción. Las acciones de lista exponen
`output.items[]` con campos fijos por fila (por ejemplo, ranked\_keywords: `keyword`,
`position`, `url`, `volume`, `cpc_usd`, `traffic`); las acciones de resumen exponen
campos fijos de nivel superior (por ejemplo, backlinks\_overview: `backlinks`, `referring_domains`,
`semrush_authority_score`, `dataforseo_rank`, `serpstat_domain_rank`, `dofollow_backlinks`,
`nofollow_backlinks`). La salida nativa del proveedor de datos seleccionado
permanece en el Run, no en `output`. Un valor que el proveedor de datos no informa es `null`; el dinero siempre está en USD. Las puntuaciones de autoridad no se convierten entre proveedores de datos: cada uno conserva su propio nombre y escala, y solo se completa el campo del proveedor de datos que responde. `volume`, `traffic` y `cpc_usd`
son estimaciones propias de cada proveedor de datos; compáralas dentro de un mismo proveedor de datos. `result_status` es `success`, `no_result`, `error` o `pending`, y las reglas de cargos y consultas anteriores se aplican sin cambios. La lista de campos por acción está en la referencia de
[SEO research](https://glasser.ai/docs/es/api-reference/solutions/gtm/seo_research.md).

Company intelligence devuelve `output` normalizado para cada acción: `enrich` y `traffic`
exponen campos fijos de nivel superior, `tech_stack`, `competitors`, `news` y `jobs` exponen `output.items[]`,
`funding` expone `total_funding_usd` más `items[]`, y `ads` expone `total_ads` más `items[]`. Los grupos de empleados e ingresos se
separan en `*_range_min` / `*_range_max`, y las puntuaciones de similitud incluyen el nombre del proveedor de datos
(`predictleads_similarity_score`, `exa_similarity_score`). La lista de campos por acción está en la referencia de
[Company intelligence](https://glasser.ai/docs/es/api-reference/solutions/gtm/company_intelligence.md).

Market data devuelve `output` normalizado para cada acción con un conjunto de campos de propiedades
(`address`, `property_type`, `bedrooms`, `bathrooms`, `living_area_sqft`, `lot_size_sqft`,
`year_built`, `latitude`, `longitude`). La búsqueda de propiedades añade campos del propietario; los anuncios añaden
campos del anuncio, MLS, HOA, agente y oficina; los anuncios de venta usan `price_usd` y los anuncios de alquiler
`monthly_rent_usd`; las estimaciones informan `comparables_count`. Las cotizaciones bursátiles incluyen `currency`,
`price` de la sesión ordinaria, `change`, `change_percent` (puntos porcentuales), la
cotización `extended_hours_*` y `as_of_text`. Consulta la referencia de [Market data](https://glasser.ai/docs/es/api-reference/solutions/gtm/market_data.md)
para ver los campos de cada acción.

Social research devuelve `output` normalizado por modo, compartido por las seis plataformas: una
cuenta para `profile`, `output.items[]` de publicaciones para `search` y `feed`, una publicación para `post` y
`output.profiles[]` para `find`. Las publicaciones incluyen `title`, `text` (solo el cuerpo) y
`published_at`; consulta la referencia de [Social research](https://glasser.ai/docs/es/api-reference/solutions/gtm/social_research.md).

People search devuelve `output` normalizado para cada acción: `search` expone `total_matches`
y `output.items[]`, una fila por persona, y `enrich` y `find_email` exponen una persona con
los mismos campos en el nivel superior. Los nombres, cargos, `seniority` y `department` son los que
informa el proveedor de datos. `email_status` es la etiqueta de verificación propia del proveedor de datos; léela con
`email_catch_all` y `email_source` (Hunter `generated` significa que la dirección se creó a partir del
patrón del dominio). `find_email` sin correo electrónico es `no_result`. Consulta la referencia de
[People search](https://glasser.ai/docs/es/api-reference/solutions/gtm/people_search.md) para ver los campos.

## Convenciones de campos

Cada `output` normalizado sigue las mismas reglas de nomenclatura:

| Regla | Significado |
| - | - |
| Puntuaciones con nombre del proveedor de datos | Un valor del modelo o escala propios de un proveedor de datos (puntuación, valoración, rango, dificultad, probabilidad o confianza) se denomina `<provider>_<metric>`, como `ahrefs_domain_rating` o `exa_similarity_score`. Solo lo completa el proveedor de datos que responde; los demás son `null`, y los valores nunca se convierten entre proveedores de datos. Las etiquetas como `industry`, `category`, `round` o `intent` conservan nombres simples y usan el vocabulario del proveedor de datos que responde. |
| Fechas y horas | `*_at` es una marca de tiempo UTC en formato ISO 8601. `*_date` es `YYYY-MM-DD`. `*_text` es texto de presentación exactamente como se devuelve y nunca se analiza; el texto relativo, como "hace 3 horas", es relativo al `completed_at` del Run. Un valor que no se puede analizar es `null`, no una estimación. |
| Dominios y URL | `domain` y `*_domain` son nombres de host sin formato: en minúsculas, sin `www.` y sin puerto. |
| Dinero | Un número denominado `*_usd`. Un precio en otra divisa es un número más un campo `currency`. Los precios mostrados son `*_text`. |
| Recuentos y rangos | Los recuentos son sustantivos plurales simples. Los rangos son `*_min` / `*_max`. El orden de una lista basado en 1 es `position`. |
| Respuestas vacías | Una respuesta válida pero vacía conserva la estructura de la acción: cada campo es `null`, o la lista es `[]`, con `result_status: "no_result"`. Esto se aplica tanto si el proveedor de datos envió un cuerpo vacío como si informó "no encontrado" de una forma que no genera cargos, como un 404 o un mensaje de "sin resultados". Nunca es `null`, `{}` ni el cuerpo nativo del proveedor de datos. `scrape` de Web research es la única excepción: no tiene una respuesta vacía, y una página que no se puede entregar es un `error` con `output: null`. |
| Nombres compartidos | Los campos con el mismo significado y unidad tienen el mismo nombre en todas las capacidades: `organic_traffic`, `organic_keywords`, `organic_traffic_value_usd`, `published_at`, `source`. |

Los controles de Fetch son `formats`, `timeout_ms` (predeterminado: 90000), `max_charge_usd`
(opcional) y `cache_max_age_seconds` (opcional). Los formatos orientan la selección y el cambio de proveedor de datos;
los formatos disponibles aparecen en los campos de salida fijos. El límite de cargos incluye
todos los Run de esta solicitud, incluidos los Run repetidos. Un Run no liquidado detiene el cambio de proveedor de datos.
Reintentar con la misma clave reutiliza los Run e inicia una nueva ventana de tiempo de solicitud.

Auto usa Serper y después Firecrawl. Las solicitudes de HTML o de antigüedad de caché explícita van
directamente a Firecrawl. Las rutas de enriquecimiento de X/Twitter y LinkedIn están excluidas de Firecrawl.
Las solicitudes explícitas de solo texto usan Serper. Exa está disponible mediante selección explícita.
Cada llamada al proveedor de datos comienza con la ventana de su Endpoint; cuando esa ventana
excedería el presupuesto de la solicitud, Serper, Firecrawl y Exa usan la ventana de llamadas
restante real y reservan tiempo para la liquidación y la respuesta; si queda menos de un segundo
de tiempo de llamada, se omite ese paso.
Si no se puede admitir ningún Run, la API devuelve el error de admisión. Si el presupuesto
impide continuar con el cambio de proveedor de datos, informa de la entrega del último Run admitido y de todos los cargos admitidos.

Las Firecrawl Data Sources usan la misma salida nativa del Run y no
cambian de proveedor de datos. Fetch Solution añade enrutamiento, comprobaciones estructurales,
comprobaciones de formato y un presupuesto de solicitud compartido. Su respuesta de search/scrape sigue el contrato normalizado anterior.
El `metadata` opcional almacena tus valores de seguimiento y no afecta a la selección del proveedor de datos ni al Price.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.