# Wallapop Search API Documentation

Search current Wallapop listings with keyword, category, price, condition, shipping and market filters. Listings resolve from the Spain, Italy and Portugal markets. radius_km filters the returned page on the distance each listing already carries; the marketplace index itself has no radius parameter.

- **Documentation:** [https://scrappa.co/docs/wallapop-api/wallapop_search](https://scrappa.co/docs/wallapop-api/wallapop_search)
- **API group:** Wallapop API
- **Endpoint:** `GET https://scrappa.co/api/wallapop/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `keywords` | string | No | Free-text search terms. |
| `category_id` | string | No | Numeric category ID from the categories endpoint. |
| `min_price` | number | No | Minimum sale price. |
| `max_price` | number | No | Maximum sale price. |
| `latitude` | number | No | Listing latitude. Wallapop has no geocoder endpoint, so resolve coordinates externally. |
| `longitude` | number | No | Listing longitude. |
| `radius_km` | number | No | Filters the returned page on the distance each listing carries. Page filtering, not index filtering. |
| `condition` | string | No | One or more of new, as_good_as_new, good, fair, has_given_it_all, comma separated. An unpublished value is rejected. |
| `is_shippable` | boolean | No | Keep only listings that support shipping. |
| `time_filter` | string | No | Publication window: today, lastWeek or lastMonth. Other values are rejected instead of ignored. |
| `order_by` | string | No | A sort value published by the filters endpoint. Unknown values are rejected instead of silently defaulted. |
| `search_country` | string | No | ES, IT or PT. In-market listings come first, then a small cross-border allowance; both counts are reported in applied_filters. |
| `cursor` | string | No | Cursor from pagination.next_cursor. Send it instead of repeating the search parameters. It already carries the sort, so order_by cannot be combined with it and the pairing is rejected. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/wallapop/search?keywords=bici&search_country=ES&latitude=40.4168&longitude=-3.7038"
```

## Example response

```json
{
    "success": true,
    "data": {
        "items": [],
        "pagination": {
            "count": 0,
            "next_cursor": null
        },
        "applied_filters": {
            "radius_km": null,
            "radius_filtering": "client_side_on_returned_page",
            "search_country": null
        }
    },
    "meta": {
        "endpoint_family": "search"
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 404 | Not Found | The requested listing, seller or review does not exist. This response is not billable. |
| 422 | Invalid Arguments | A filter value was rejected, including a sort value the marketplace does not publish. This response is not billable. |
| 502 | Marketplace Unavailable | The marketplace did not answer the request. This response is not billable. |
| 503 | Service Unavailable | The service could not obtain a complete result. This response is not billable. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
