---
title: Filtros, campos y paginacion — construir queries
section: webservice
slug: filtering
description: "Como filtrar, seleccionar campos y paginar en la API REST de PrestaShop: filter[], display, limit, sort y combinaciones."
keywords: prestashop webservice filtros filter display limit sort paginacion campos API REST
last_updated: 2024-12-01
source_url: "https://ayudaprestashop.es/webservice/filtering"
---

# Filtros, campos y paginacion — construir queries

> Como filtrar, seleccionar campos y paginar en la API REST de PrestaShop: filter[], display, limit, sort y combinaciones.

La API REST de PrestaShop permite filtrar, seleccionar campos especificos, paginar y ordenar los resultados mediante parametros de query string.

## Seleccion de campos con display

*Parametro display — seleccionar campos*

```bash
# Todos los campos (por defecto)
curl -u "API_KEY:" "https://tienda.com/api/products?display=full&output_format=JSON"

# Solo campos especificos (mucho mas rapido)
curl -u "API_KEY:" "https://tienda.com/api/products?display=[id,reference,price,active]&output_format=JSON"

# Solo los IDs (para obtener lista de IDs rapidamente)
curl -u "API_KEY:" "https://tienda.com/api/products?output_format=JSON"
# Sin display ni filter, solo devuelve lista de IDs

# Un solo recurso por ID — siempre devuelve todos los campos
curl -u "API_KEY:" "https://tienda.com/api/products/42?output_format=JSON"
```

## Filtros con filter[]

*Tipos de filtros disponibles*

```bash
# ── Igualdad exacta ──
curl -u "K:" "https://t.com/api/products?filter[active]=1&output_format=JSON"
curl -u "K:" "https://t.com/api/orders?filter[current_state]=5&output_format=JSON"

# ── Rango (intervalo [min,max]) ──
curl -u "K:" "https://t.com/api/products?filter[price]=[10,100]&output_format=JSON"
curl -u "K:" "https://t.com/api/products?filter[date_add]=[2024-01-01,2024-12-31]&output_format=JSON"

# ── LIKE (busqueda parcial con %) ──
curl -u "K:" "https://t.com/api/products?filter[reference]=%REF%&output_format=JSON"
curl -u "K:" "https://t.com/api/customers?filter[email]=%@gmail%&output_format=JSON"

# ── Empieza por ──
curl -u "K:" "https://t.com/api/products?filter[reference]=REF%&output_format=JSON"

# ── Multiples filtros (se combinan con AND) ──
curl -u "K:" "https://t.com/api/products?\
filter[active]=1&\
filter[id_manufacturer]=3&\
filter[price]=[0,50]&\
output_format=JSON"
```

## Paginacion con limit

*Parametro limit para paginacion*

```bash
# Primeros 20 resultados
curl -u "K:" "https://t.com/api/products?limit=20&output_format=JSON"

# 20 resultados desde la posicion 40 (pagina 3 con 20/pagina)
curl -u "K:" "https://t.com/api/products?limit=40,20&output_format=JSON"
# formato: limit={offset},{cantidad}

# Pagina 1 (primeros 10)
curl -u "K:" "https://t.com/api/products?limit=0,10&output_format=JSON"
# Pagina 2 (siguientes 10)
curl -u "K:" "https://t.com/api/products?limit=10,10&output_format=JSON"
# Pagina 3 (siguientes 10)
curl -u "K:" "https://t.com/api/products?limit=20,10&output_format=JSON"

# ── En PHP — calculo de offset ──
// $page empezando en 1, $perPage = 20
$offset = ($page - 1) * $perPage;
$params = ['limit' => $offset . ',' . $perPage, 'output_format' => 'JSON'];
```

## Ordenacion con sort

*Parametro sort para ordenar resultados*

```bash
# Ordenar por precio ascendente
curl -u "K:" "https://t.com/api/products?sort=[price_ASC]&output_format=JSON"

# Ordenar por fecha descendente
curl -u "K:" "https://t.com/api/products?sort=[date_add_DESC]&output_format=JSON"

# Multiples criterios de ordenacion
curl -u "K:" "https://t.com/api/products?sort=[price_ASC,date_add_DESC]&output_format=JSON"

# Por referencia alfabetica
curl -u "K:" "https://t.com/api/products?sort=[reference_ASC]&output_format=JSON"
```

## Ejemplos combinados

*Queries avanzadas combinando parametros*

```php
<?php

// ── Productos activos de una categoria, ordenados y paginados ──
$params = [
    'output_format'        => 'JSON',
    'filter[active]'       => 1,
    'filter[id_category_default]' => 5,
    'display'              => '[id,reference,name,price]',
    'sort'                 => '[price_ASC]',
    'limit'                => '0,20',  // Primeros 20
];
$url = 'https://mitienda.com/api/products?' . http_build_query($params);

// ── Pedidos del ultimo mes ──
$params = [
    'output_format'    => 'JSON',
    'filter[date_add]' => '[' . date('Y-m-d', strtotime('-30 days')) . ',' . date('Y-m-d') . ']',
    'display'          => '[id,reference,total_paid_tax_incl,current_state,date_add]',
    'sort'             => '[date_add_DESC]',
    'limit'            => 50,
];

// ── Clientes con email especifico ──
$params = [
    'output_format' => 'JSON',
    'filter[email]' => pSQL($email),
    'display'       => '[id,firstname,lastname,email,date_add]',
    'limit'         => 1,
];
```


---

*Fuente: [https://ayudaprestashop.es/webservice/filtering](https://ayudaprestashop.es/webservice/filtering). Version Markdown generada automaticamente para consumo por LLMs.*
