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

# Seguimiento de menciones

`/mentions` devuelve publicaciones que mencionan una cuenta concreta. Úsalo para supervisar marcas, dirigir consultas de soporte, medir campañas y seguir a la competencia. Ofrece el conjunto de filtros más amplio de los endpoints de búsqueda de Sorsa: los mínimos de interacción y las fechas son parámetros directos del cuerpo de la solicitud. Devuelve hasta 20 publicaciones por página.

> **Nota:** consulta código de producción, seguimiento multicanal y análisis competitivo en la [guía de seguimiento de menciones mediante API](https://api.sorsa.io/blog/twitter-mentions-api).

## Inicio rápido

```bash theme={null}
curl -X POST https://api.sorsa.io/v3/mentions \
  -H "ApiKey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "AppleSupport",
    "order": "latest",
    "min_likes": 10,
    "since_date": "2026-03-01"
  }'
```

> **Consejo:** prueba `/mentions` sin código en [API Playground](https://api.sorsa.io/playground). Cada cuenta incluye 100 solicitudes gratuitas, sin tarjeta.

***

## Referencia del endpoint

```text theme={null}
POST https://api.sorsa.io/v3/mentions
```

| Parámetro      | Tipo    | Obligatorio | Descripción                                                                     |
| :------------- | :------ | :---------- | :------------------------------------------------------------------------------ |
| `query`        | string  | Sí          | Nombre de la cuenta sin @. Ejemplo: `"elonmusk"`.                               |
| `order`        | string  | No          | `"latest"` (predeterminado, recientes primero) o `"popular"` (por interacción). |
| `since_date`   | string  | No          | Fecha inicial en formato `YYYY-MM-DD`.                                          |
| `until_date`   | string  | No          | Fecha final en formato `YYYY-MM-DD`.                                            |
| `min_likes`    | integer | No          | Mínimo de Me gusta de una mención.                                              |
| `min_retweets` | integer | No          | Mínimo de retuits.                                                              |
| `min_replies`  | integer | No          | Mínimo de respuestas.                                                           |
| `next_cursor`  | string  | No          | Cursor devuelto por la respuesta anterior.                                      |

Cada llamada consume una solicitud de tu cuota, tanto si devuelve una mención como veinte.

***

## Respuesta

```json theme={null}
{
  "tweets": [
    {
      "id": "2031847200012345678",
      "full_text": "@AppleSupport My iPhone keeps restarting after the latest update. Anyone else?",
      "created_at": "2026-03-08T14:22:31Z",
      "lang": "en",
      "likes_count": 47,
      "retweet_count": 12,
      "reply_count": 8,
      "quote_count": 2,
      "view_count": 15200,
      "is_reply": false,
      "is_quote_status": false,
      "user": {
        "id": "9876543210",
        "username": "frustrated_user",
        "display_name": "Alex",
        "followers_count": 1240,
        "verified": false
      }
    }
  ],
  "next_cursor": "DAABCgABGSmiaxkA..."
}
```

Cada mención incluye métricas de interacción y el perfil completo del autor en `user` (recortado en el ejemplo). Las fechas utilizan ISO 8601. Si aparece `next_cursor`, hay más páginas; si es `null` o no aparece, has llegado al final. Consulta [Paginación](https://docs.sorsa.io/es/pagination) y [Formato de respuesta](https://docs.sorsa.io/es/response-format).

***

## /mentions frente a /search-tweets

Estos endpoints cubren necesidades diferentes:

* Utiliza `/mentions` para publicaciones que etiquetan una cuenta (`@brand`): menciones, respuestas y referencias. Admite `min_likes`, `min_retweets`, `min_replies`, `since_date` y `until_date` como parámetros directos.
* Utiliza [`/search-tweets`](https://docs.sorsa.io/es/search-tweets) para palabras clave sin etiqueta de cuenta. `"Nike" -from:Nike lang:en` encuentra publicaciones que nombran la marca en el texto. También permite lógica booleana, filtros multimedia y otros operadores.

Para ampliar la cobertura de marca, ejecuta ambos y elimina duplicados por ID de publicación.

***

## Patrones habituales

### Filtrar por interacción

Recupera menciones que ya han alcanzado una audiencia. Es útil para paneles de reputación y relaciones públicas.

```python theme={null}
import requests

API_KEY = "YOUR_API_KEY"
URL = "https://api.sorsa.io/v3/mentions"

body = {"query": "nike", "order": "popular", "min_likes": 100}
resp = requests.post(URL, headers={"ApiKey": API_KEY, "Content-Type": "application/json"}, json=body)
resp.raise_for_status()
mentions = resp.json().get("tweets", [])
```

### Recuperar todas las menciones para soporte

Omite los filtros de interacción y ordena cronológicamente para incluir menciones sin interacciones.

```python theme={null}
body = {"query": "YourBrandSupport", "order": "latest", "since_date": "2026-05-10"}
resp = requests.post(URL, headers={"ApiKey": API_KEY, "Content-Type": "application/json"}, json=body)
```

### Analizar una campaña por fechas

Limita el intervalo con `since_date` y `until_date` y recorre `next_cursor` hasta agotarlo.

```python theme={null}
import time

def all_mentions(handle, since, until, max_pages=50):
    out, cursor = [], None
    for _ in range(max_pages):
        body = {"query": handle, "order": "latest", "since_date": since, "until_date": until}
        if cursor:
            body["next_cursor"] = cursor
        resp = requests.post(URL, headers={"ApiKey": API_KEY, "Content-Type": "application/json"}, json=body)
        resp.raise_for_status()
        data = resp.json()
        out.extend(data.get("tweets", []))
        cursor = data.get("next_cursor")
        if not cursor:
            break
        time.sleep(0.1)
    return out
```

### Consultar nuevas menciones periódicamente

Conserva el ID más reciente entre iteraciones para mostrar solo menciones nuevas. Compara los IDs numéricamente, ya que se devuelven como cadenas.

```python theme={null}
last_seen_id = None
while True:
    resp = requests.post(URL, headers={"ApiKey": API_KEY, "Content-Type": "application/json"},
                         json={"query": "yourbrand", "order": "latest"})
    resp.raise_for_status()
    tweets = resp.json().get("tweets", [])
    if tweets and last_seen_id is None:
        last_seen_id = max((t["id"] for t in tweets), key=int)
    elif tweets:
        new = [t for t in tweets if int(t["id"]) > int(last_seen_id)]
        # handle `new` mentions
        if new:
            last_seen_id = max((t["id"] for t in new), key=int)
    time.sleep(15)
```

Este ejemplo de primera página establece un punto inicial al arrancar y no emite las menciones ya presentes. En flujos con mucho volumen, recorre las páginas del intervalo pendiente antes de avanzar el punto de control; conserva solapamiento y elimina duplicados para manejar resultados tardíos. Guarda `last_seen_id` en disco o Redis para sobrevivir a reinicios y añade `try`/`except` con esperas entre reintentos. Consulta el patrón completo en [Supervisión en tiempo real](https://docs.sorsa.io/es/real-time-monitoring).

***

## Errores habituales

* **Un `min_likes` demasiado alto para soporte.** Un informe de fallo con 2 Me gusta puede importar más que un meme con 500. Para soporte, usa 0 y clasifica por palabras clave.
* **Leer solo una página de cuentas con muchas menciones.** Cada solicitud devuelve hasta 20. Recorre `next_cursor` y presupuesta una solicitud por página.
* **Considerar `/mentions` una cobertura completa.** Solo recoge referencias con @. Combínalo con `/search-tweets` para referencias sin etiqueta.
* **Consultar demasiado a menudo cuentas poco activas.** Ajusta el intervalo al volumen: cada 15 segundos para marcas con mucha actividad y cada minuto o dos para cuentas pequeñas. Todos los planes tienen un límite de 20 solicitudes por segundo; consulta [Límites de solicitudes](https://docs.sorsa.io/es/rate-limits).
* **No guardar el estado entre reinicios.** Sin un punto de control persistente, el proceso puede volver a alertar sobre menciones antiguas u omitir el intervalo pendiente.

***

## Próximos pasos

* [Búsqueda de publicaciones](https://docs.sorsa.io/es/search-tweets): referencias de marca sin etiqueta.
* [Operadores de búsqueda](https://docs.sorsa.io/es/search-operators): consultas multimedia, geográficas y booleanas.
* [Supervisión en tiempo real](https://docs.sorsa.io/es/real-time-monitoring): consultas periódicas, deduplicación y reintentos.
* [Datos históricos](https://docs.sorsa.io/es/historical-data): publicaciones antiguas por fechas.
* [Referencia del endpoint](https://docs.sorsa.io/es/api-reference/b%C3%BAsqueda/buscar-menciones): especificación completa.
