# Paginación

> Cómo paginar la lista de artículos de la API de Blogenia con page y limit, y cómo sincronizar solo las novedades.

Versión web: https://blogelia.com/docs/paginacion

La lista de artículos se pagina con `page` y `limit`. El orden es siempre el de publicación, del más reciente al más antiguo.

**Parámetros**

| Nombre | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `page` | integer | No | Número de página, desde 1 (por defecto 1). Máximo 500. |
| `limit` | integer | No | Artículos por página, de 1 a 50 (por defecto 20). |

**Campos de la respuesta**

| Campo | Tipo | Descripción |
| --- | --- | --- |
| `data` | array | Artículos de la página. |
| `page` | integer | Página devuelta. |
| `limit` | integer | Tamaño de página aplicado. |
| `total` | integer | Artículos publicados que cumplen el filtro, en todas las páginas. |

Hay más páginas mientras `page * limit` sea menor que `total`. Una página sin resultados devuelve `data: []`.

**Recorrer todos los artículos**

*Node.js*

```js
const base = 'https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/articles';
const headers = { Authorization: 'Bearer ' + process.env.BLOGENIA_API_KEY };

const articles = [];
for (let page = 1; ; page++) {
  const res = await fetch(base + '?limit=50&page=' + page, { headers });
  if (!res.ok) throw new Error('HTTP ' + res.status);
  const body = await res.json();
  articles.push(...body.data);
  if (page * body.limit >= body.total) break;
}
```

*Python*

```python
import os
import requests

base = "https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/articles"
headers = {"Authorization": "Bearer " + os.environ["BLOGENIA_API_KEY"]}

articles, page = [], 1
while True:
    res = requests.get(base, params={"limit": 50, "page": page}, headers=headers, timeout=10)
    res.raise_for_status()
    body = res.json()
    articles += body["data"]
    if page * body["limit"] >= body["total"]:
        break
    page += 1
```

## Solo las novedades

Para no leer siempre toda la lista, usa `publishedAfter` (fecha ISO 8601) y recibirás solo los artículos publicados después de esa fecha. Guarda en tu sistema el `publishedAt` más reciente que hayas leído y úsalo en la siguiente consulta.

> **Nota:** Cada petición cuenta para tu [límite de uso](https://blogelia.com/docs/limites). Con `limit=50` necesitas menos peticiones.

> **Nota:** Las listas de [cuenta y analítica](https://blogelia.com/docs/cuenta) usan los mismos `page` y `limit` y responden con `{ data, page, limit, total }`, pero `page` admite hasta 10000.
