Search Listings
curl --request GET \
--url https://scrapebadger.com/v1/wallapop/search \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/wallapop/search"
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/search', 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/search",
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/search"
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/search")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/wallapop/search")
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{
"items": [
{
"id": "<string>",
"user_id": {},
"title": {},
"description": {},
"price": {},
"currency": {},
"category_id": {},
"taxonomy": [
{
"id": 123,
"name": {}
}
],
"condition": {},
"brand": {},
"model": {},
"attributes": {},
"images": [
{
"id": {},
"small": {},
"medium": {},
"large": {},
"average_color": {}
}
],
"location": {
"latitude": {},
"longitude": {},
"postal_code": {},
"city": {},
"region": {},
"region2": {},
"country_code": {},
"approximated": {}
},
"shippable": {},
"user_allows_shipping": {},
"reserved": {},
"bumped": true,
"bump_type": {},
"is_top_profile": {},
"is_refurbished": {},
"has_warranty": {},
"slug": {},
"url": {},
"created_utc": {},
"created_at": {},
"modified_utc": {},
"modified_at": {}
}
],
"result_count": 123,
"total_results": {},
"next_page": {},
"order_by": {},
"market": "<string>",
"country_code": {},
"search_id": {}
}Search
Search Listings
Search Wallapop second-hand listings in Spain, Italy, or Portugal with Wallapop’s own filters — price, condition, brand, model, colour, distance, listing age, shipping, and car filters.
GET
/
v1
/
wallapop
/
search
Search Listings
curl --request GET \
--url https://scrapebadger.com/v1/wallapop/search \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/wallapop/search"
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/search', 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/search",
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/search"
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/search")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/wallapop/search")
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{
"items": [
{
"id": "<string>",
"user_id": {},
"title": {},
"description": {},
"price": {},
"currency": {},
"category_id": {},
"taxonomy": [
{
"id": 123,
"name": {}
}
],
"condition": {},
"brand": {},
"model": {},
"attributes": {},
"images": [
{
"id": {},
"small": {},
"medium": {},
"large": {},
"average_color": {}
}
],
"location": {
"latitude": {},
"longitude": {},
"postal_code": {},
"city": {},
"region": {},
"region2": {},
"country_code": {},
"approximated": {}
},
"shippable": {},
"user_allows_shipping": {},
"reserved": {},
"bumped": true,
"bump_type": {},
"is_top_profile": {},
"is_refurbished": {},
"has_warranty": {},
"slug": {},
"url": {},
"created_utc": {},
"created_at": {},
"modified_utc": {},
"modified_at": {}
}
],
"result_count": 123,
"total_results": {},
"next_page": {},
"order_by": {},
"market": "<string>",
"country_code": {},
"search_id": {}
}Search Wallapop listings, 40 per page, with the same filters the Wallapop app offers. Send a
Car search — manual cars from 2015 on with under 100,000 km, closest to Madrid first:
Car listings carry their specs in
query, a category_id, or both.
Credits: 5 per page. Empty results are not charged.
Authorization
string
required
Your ScrapeBadger API key.
Query Parameters
string
Search text, e.g.
iphone 14, bicicleta montaña. Required unless you pass category_id; requests with neither return 422.string
default:"es"
es (Spain), it (Italy), or pt (Portugal). Sets the default search location (Madrid, Rome, or Lisbon) and the language of category and attribute text. Any other value returns 422. See /v1/wallapop/markets.number
Search centre latitude,
-90 to 90. Defaults to the market’s capital. The country searched follows the coordinates, not the market.number
Search centre longitude,
-180 to 180. Defaults to the market’s capital.integer
Radius around the search centre in kilometres,
1 to 500. Omit to search without a radius limit.integer
Category id from
/v1/wallapop/categories, e.g. 24200 (Technology & electronics) or 100 (Cars). Required unless you pass query.number
Minimum price in EUR,
0 or more.number
Maximum price in EUR,
0 or more.string
Comma-separated conditions:
un_opened, in_box, new, as_good_as_new, good, fair, has_given_it_all. Example: new,as_good_as_new.string
Brand option id, e.g.
Apple. Get valid ids from /v1/wallapop/filters/brand/options for your category or query.string
Model option id, e.g.
iPhone 14. Get valid ids from /v1/wallapop/filters/model/options.string
Colour option id, e.g.
black. Valid ids are listed under the color filter in /v1/wallapop/filters.string
Only listings published within:
today, lastWeek, or lastMonth.boolean
default:"false"
true returns only listings that can be shipped.boolean
default:"false"
true returns only listings with a warranty.boolean
default:"false"
true returns only refurbished listings.string
default:"most_relevance"
Sort order:
most_relevance, newest, closest, price_low_to_high, or price_high_to_low.string
Cursor from the previous response’s
next_page. Send it on its own (with the same market): the cursor carries the original query and filters, and all other search parameters are ignored.Car filters
These filters apply when you search cars withcategory_id=100.
integer
Earliest model year, e.g.
2015.integer
Latest model year.
integer
Minimum mileage in km,
0 or more.integer
Maximum mileage in km,
0 or more.string
manual or automatic.integer
Minimum engine power in hp,
0 or more.integer
Maximum engine power in hp,
0 or more.For car searches,
brand and model take the car make and model option ids from /v1/wallapop/filters/brand/options?category_id=100 and /v1/wallapop/filters/model/options?category_id=100.There is no sold-listings search: Wallapop search only returns live listings. To see what a seller has sold, read their reviews — reviews with
type: "sell" name the listing they sold.Response
SearchItem[]
Matching listings, up to 40 per page.
Show SearchItem
Show SearchItem
string
Listing id, e.g.
nzxeknm5x562. Use it with /v1/wallapop/items/{item_id}.string | null
Seller id. Use it with
/v1/wallapop/users/{user_id}.string | null
Listing title.
string | null
Listing description.
number | null
Asking price.
string | null
ISO 4217 currency code,
EUR.integer | null
Category id as Wallapop reports it in search (often the top-level category). See
taxonomy for the full path.TaxonomyNode[]
string | null
Condition id, e.g.
good, when the seller set one.string | null
Brand (or car make), when set.
string | null
Model, when set.
object
Category-specific attributes as flat key/value pairs. Cars include
brand, model, year, version, km, engine, gearbox, and horsepower.Image[]
Location | null
boolean | null
Whether the item can be shipped.
boolean | null
Whether the seller accepts shipping.
boolean | null
Whether the seller marked the listing as reserved.
boolean
Whether the listing is currently promoted.
string | null
Promotion type, e.g.
city, when bumped.boolean | null
Whether the seller is a Wallapop top profile.
boolean | null
Whether the item is refurbished.
boolean | null
Whether the item comes with a warranty.
string | null
Listing slug, e.g.
iphone-14-128gb-1311318554.string | null
Full listing URL on wallapop.com.
number | null
Publication time, Unix seconds.
string | null
Publication time, ISO 8601 UTC.
number | null
Last modification time, Unix seconds.
string | null
Last modification time, ISO 8601 UTC.
integer
Number of listings on this page.
integer | null
Wallapop’s own estimate of how many listings match the search.
null on the last page.string | null
Cursor for the next page. Pass it back as
next_page; null when there are no more results.string | null
The sort order Wallapop applied.
string
The market used for the request.
string | null
The country Wallapop searched in, which follows the search coordinates.
string | null
Wallapop’s id for this search.
Example
curl "https://scrapebadger.com/v1/wallapop/search?query=iphone&market=es&shippable=true" \
-H "X-API-Key: YOUR_API_KEY"
import requests
res = requests.get(
"https://scrapebadger.com/v1/wallapop/search",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"query": "iphone", "market": "es", "shippable": "true"},
)
data = res.json()
const res = await fetch(
"https://scrapebadger.com/v1/wallapop/search?" +
new URLSearchParams({ query: "iphone", market: "es", shippable: "true" }),
{ headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const data = await res.json();
scrapebadger wallapop search "iphone" --market es --shippable
curl "https://scrapebadger.com/v1/wallapop/search?category_id=100&min_year=2015&max_km=100000&gearbox=manual&order_by=closest" \
-H "X-API-Key: YOUR_API_KEY"
attributes:
"attributes": {
"brand": "SEAT",
"model": "Leon",
"year": 2017,
"version": "1.4 TSI ACT 150 FR Plus 5p S/S",
"km": 83000,
"engine": "Gasoline",
"gearbox": "Manual",
"horsepower": 150.0
}
Response
{
"items": [
{
"id": "nzxeknm5x562",
"user_id": "dqjwdd53wwzo",
"title": "iPhone 14 128GB Negro",
"description": "iPhone 14 de color negro, con 128GB de almacenamiento.\nEn perfectas condiciones, y la pantalla impecable, siempre usado con cristal protector y funda desde el primer día.",
"price": 250.0,
"currency": "EUR",
"category_id": 24200,
"taxonomy": [
{ "id": 24200, "name": "Tecnología y electrónica" },
{ "id": 24201, "name": "Telefonía: móviles y smartwatches" },
{ "id": 9447, "name": "Smartphones" }
],
"condition": null,
"brand": null,
"model": null,
"attributes": {},
"images": [
{
"id": "e65ve2rg0l2j",
"small": "https://cdn.wallapop.com/images/10420/lo/q3/__/c10420p1311318554/i6787540572.jpg?pictureSize=W320",
"medium": "https://cdn.wallapop.com/images/10420/lo/q3/__/c10420p1311318554/i6787540572.jpg?pictureSize=W640",
"large": "https://cdn.wallapop.com/images/10420/lo/q3/__/c10420p1311318554/i6787540572.jpg?pictureSize=W800",
"average_color": "13C1AC"
}
],
"location": {
"latitude": 40.47122907944395,
"longitude": -3.8786801592876357,
"postal_code": "28222",
"city": "Majadahonda",
"region": "Comunidad de Madrid",
"region2": "Madrid",
"country_code": "ES",
"approximated": null
},
"shippable": true,
"user_allows_shipping": true,
"reserved": false,
"bumped": true,
"bump_type": "city",
"is_top_profile": true,
"is_refurbished": false,
"has_warranty": false,
"slug": "iphone-14-128gb-1311318554",
"url": "https://es.wallapop.com/item/iphone-14-128gb-1311318554",
"created_utc": 1791580490.949,
"created_at": "2026-10-09T21:14:50.949000Z",
"modified_utc": 1791753563.082,
"modified_at": "2026-10-11T21:19:23.082000Z"
}
],
"result_count": 40,
"total_results": 49371,
"next_page": "eyJhbGciOiJIUzI1NiJ9.eyJwYXJhbXMiOnsic2VhcmNoUmVxdWVzdFBhcmFtcyI6eyJrZXl3b3JkcyI6ImlwaG9uZSIs...",
"order_by": "most_relevance",
"market": "es",
"country_code": "ES",
"search_id": "a6e9213a-8d01-481f-8f3d-bd6ffaf2a61c"
}
Errors
| Status | Cause |
|---|---|
422 | Neither query nor category_id was sent, a value is out of range, or market is not es, it, or pt. |
502 | Wallapop did not answer after retries. Not charged — retry the request. |
Each search request costs 5 credits. Pages with no results and failed requests are not charged.

