List Filters
curl --request GET \
--url https://scrapebadger.com/v1/wallapop/filters \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/wallapop/filters"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://scrapebadger.com/v1/wallapop/filters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/wallapop/filters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/wallapop/filters"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/wallapop/filters")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/wallapop/filters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"filters": [
{
"id": "<string>",
"title": {},
"type": {},
"params": [
"<string>"
],
"multi": {},
"options": [
{
"id": "<string>",
"title": {}
}
],
"options_endpoint": true
}
],
"market": "<string>"
}Reference
List Filters
The search filters Wallapop offers for a category or query — condition, colour, brand, model, price, and more — with their option ids.
GET
/
v1
/
wallapop
/
filters
List Filters
curl --request GET \
--url https://scrapebadger.com/v1/wallapop/filters \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/wallapop/filters"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://scrapebadger.com/v1/wallapop/filters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/wallapop/filters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/wallapop/filters"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/wallapop/filters")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/wallapop/filters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"filters": [
{
"id": "<string>",
"title": {},
"type": {},
"params": [
"<string>"
],
"multi": {},
"options": [
{
"id": "<string>",
"title": {}
}
],
"options_endpoint": true
}
],
"market": "<string>"
}The filters Wallapop offers for a category or search text, with the option ids each filter accepts. Use the option ids as values for the matching search parameters, such as
condition and color.
Filters with long option lists, such as brand and model, return no options here and are flagged options_endpoint: true. Fetch their options from /v1/wallapop/filters/{filter_id}/options.
Credits: 2. Empty results are not charged.
Authorization
string
required
Your ScrapeBadger API key.
Query Parameters
integer
Category the filters apply to, from
/v1/wallapop/categories. Use 100 for car filters.string
Search text the filters apply to, e.g.
iphone.string
default:"es"
es, it, or pt. Sets the language of filter and option titles. See /v1/wallapop/markets.Response
SearchFilter[]
Available filters, in Wallapop’s order.
Show SearchFilter
Show SearchFilter
string
Filter id, e.g.
condition, color, brand, model, price, time_filter.string | null
Localised filter title.
string | null
Filter type:
list, toggle, slider, location, or tree.string[]
The Wallapop search parameters this filter sets, e.g.
min_sale_price and max_sale_price for price.boolean | null
For
list filters, whether several options can be combined (comma-separated). null for other types.FilterOption[]
boolean
true when the options are too long to inline — fetch them from /v1/wallapop/filters/{filter_id}/options.string
The market used for the request.
Example
curl "https://scrapebadger.com/v1/wallapop/filters?query=iphone&market=es" \
-H "X-API-Key: YOUR_API_KEY"
import requests
res = requests.get(
"https://scrapebadger.com/v1/wallapop/filters",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"query": "iphone", "market": "es"},
)
data = res.json()
const res = await fetch(
"https://scrapebadger.com/v1/wallapop/filters?" +
new URLSearchParams({ query: "iphone", market: "es" }),
{ headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const data = await res.json();
scrapebadger wallapop filters --query iphone --market es
Response
{
"filters": [
{
"id": "time_filter",
"title": "Fecha de publicación",
"type": "list",
"params": ["time_filter"],
"multi": false,
"options": [
{ "id": "today", "title": "Hoy" },
{ "id": "lastWeek", "title": "Últimos 7 días" },
{ "id": "lastMonth", "title": "Últimos 30 días" }
],
"options_endpoint": false
},
{
"id": "price",
"title": "Precio",
"type": "slider",
"params": ["min_sale_price", "max_sale_price"],
"multi": null,
"options": [],
"options_endpoint": false
},
{
"id": "condition",
"title": "Estado",
"type": "list",
"params": ["condition"],
"multi": true,
"options": [
{ "id": "un_opened", "title": "Sin abrir" },
{ "id": "in_box", "title": "En su caja" },
{ "id": "new", "title": "Nuevo" },
{ "id": "as_good_as_new", "title": "Como nuevo" },
{ "id": "good", "title": "En buen estado" },
{ "id": "fair", "title": "En condiciones aceptables" },
{ "id": "has_given_it_all", "title": "Lo ha dado todo" }
],
"options_endpoint": false
},
{
"id": "brand",
"title": "Marca",
"type": "list",
"params": ["brand"],
"multi": true,
"options": [],
"options_endpoint": true
},
{
"id": "model",
"title": "Modelo",
"type": "list",
"params": ["model"],
"multi": true,
"options": [],
"options_endpoint": true
},
{
"id": "has_warranty",
"title": "Garantía incluida",
"type": "toggle",
"params": ["has_warranty"],
"multi": null,
"options": [],
"options_endpoint": false
},
{
"id": "color",
"title": "Color",
"type": "list",
"params": ["color"],
"multi": true,
"options": [
{ "id": "black", "title": "Negro" },
{ "id": "blue", "title": "Azul" },
{ "id": "space_gray", "title": "Gris espacial" },
{ "id": "white", "title": "Blanco" }
],
"options_endpoint": false
}
],
"market": "es"
}
The
params names are Wallapop’s own. On ScrapeBadger’s search endpoint, min_sale_price / max_sale_price are min_price / max_price, is_shippable is shippable, and distance_in_km is distance_km. Option ids are passed unchanged.Listing filters costs 2 credits. Empty results and failed requests are not charged.

