Wallapop Scraper | Spain Listings & Sellers avatar

Wallapop Scraper | Spain Listings & Sellers

Pricing

$1.00 / 1,000 listing saveds

Go to Apify Store
Wallapop Scraper | Spain Listings & Sellers

Wallapop Scraper | Spain Listings & Sellers

Collect public Wallapop listings in Spain by keyword or category and postal code or town. Get prices, images, locations and shipping information, with optional item details and seller ratings. Apply price, distance and condition filters, then export JSON, CSV or Excel.

Pricing

$1.00 / 1,000 listing saveds

Rating

0.0

(0)

Developer

DataScraperES

DataScraperES

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Collect public Wallapop listings in Spain by keyword or category and a postal code or town. Get prices, images, locations and shipping information, with optional item details and seller ratings. Export structured results for marketplace and pricing research.

What this Actor does

This Actor searches Wallapop's public marketplace and saves one row per unique listing. You can run keyword searches, category searches, or several of both in a single run, and apply Wallapop's own filters for price, distance, condition, shipping and sort order. Results are paginated automatically and deduplicated by listing ID.

The Actor reads only publicly visible listings. It does not log in, does not use your Wallapop account, and does not access messages, purchases, payments or any private data.

Use cases

  • Monitor second-hand prices for a product across several Spanish cities.
  • Build a dataset of listings for market, pricing or demand analysis.
  • Collect seller context (rating, review count, validation badges) for marketplace research.
  • Feed a dashboard, spreadsheet or alerting workflow with fresh listings.

How to use

For one search, fill in Keywords, Location and Maximum items. Start with three listings. Expand Advanced filters only when you need price, radius, condition, shipping or category filters. Optional item and seller information is in Enrichment.

For several searches, expand Multiple searches (advanced) and add entries there. A non-empty list uses each entry's own location, filters and limit and replaces the single-search fields above. The Actor never adds an extra search from those fields. Enrichment and language apply to both formats.

Click Start, inspect the Dataset and Run summary, then export the saved results.

Input

Enter a keyword or category and a Spanish postal code or town. Locations and keywords shown in the initial form are examples, not automatic targets for API calls.

FieldValue when omittedMeaning
keywordsnoneWhat to find. May be empty when a category ID is supplied.
locationnone; required for a searchSpanish postal code or town, such as 28001, Tarragona or Mojácar.
maxItems100Maximum new unique listings for this single search, up to 2,000. The initial form suggests three.
distanceKm50Search radius, from zero to five hundred kilometres. Zero is preserved.
minPrice / maxPriceno price filterOptional nonnegative price limits in EUR.
conditionanyOptional item condition.
orderBymost_relevanceRelevance, closest, price ascending/descending or newest.
shippableOnlyfalseKeep only listings that can be shipped.
categoryId / subcategoryIdsnoneOptional category and comma-separated subcategory IDs. Category can replace keywords.
includeItemDetailsfalseAdd public item detail where available.
includeSellerDetailsfalseAdd public seller profile, rating and validation badges where available.
languagees-ESCategory/condition labels: es-ES or en-US; this does not change the supported market.
searchesomittedOptional advanced list of up to 20 independent searches. A non-empty list takes priority over all single-search fields.

Complete single-search example:

{
"searches": [],
"keywords": "bicicleta",
"location": "28001",
"distanceKm": 25,
"categoryId": "",
"subcategoryIds": "",
"minPrice": 10,
"maxPrice": 500,
"condition": "",
"shippableOnly": false,
"orderBy": "newest",
"maxItems": 3,
"includeItemDetails": false,
"includeSellerDetails": false,
"language": "es-ES"
}

Existing API integrations using searches remain supported. Each entry accepts the same eleven search fields listed above; enrichment and language stay outside the list. For example:

{
"searches": [
{
"keywords": "bicicleta",
"location": "28001",
"distanceKm": 25,
"categoryId": "",
"subcategoryIds": "",
"minPrice": 10,
"maxPrice": 500,
"condition": "",
"shippableOnly": false,
"orderBy": "newest",
"maxItems": 3
}
],
"includeItemDetails": false,
"includeSellerDetails": false,
"language": "es-ES"
}

Use either format. If both are submitted, a non-empty searches list has priority and the top-level single-search fields do not add targets or override the entries. An empty list falls back to an explicitly supplied single search. Missing targets or locations are reported without inventing a search. Each format keeps the same filters, output and billing rules.

Output

Results are saved to the default Dataset, one row per unique listing. The Run summary in the key-value store shows per-search counts, enrichment counts and any failed search. You can export the Dataset as JSON, CSV, Excel or XML.

Rows include listing identity, title, description, price, currency, category path, condition, shipping flags, approximate location, images, seller identifiers, timestamps and collection metadata. Enrichment fields are null when the corresponding switch is off or when the source does not expose them.

{
"id": "p618n9rv35z5",
"url": "https://es.wallapop.com/item/bicicleta-infantil-btwin-alu-16-1314110407",
"title": "Bicicleta Infantil BTWIN ALU 16",
"description": "Bicicleta infantil BTWIN con cuadro de aluminio en un bonito color azul. Poco uso, bien cuidada.",
"price": 100.0,
"currency": "EUR",
"categoryId": "17000",
"categoryName": "Bicicletas Infantiles",
"taxonomy": [
{ "id": "17000", "name": "Bicicletas" },
{ "id": "10056", "name": "Bicicletas y triciclos" },
{ "id": "10216", "name": "Bicicletas Infantiles" }
],
"condition": "as_good_as_new",
"conditionText": "Como nuevo",
"shippingItemShippable": true,
"shippingUserAllows": false,
"location": {
"city": "Madrid",
"province": "Madrid",
"region": "Comunidad de Madrid",
"postalCode": "28041",
"countryCode": "ES",
"latitude": 40.3538304,
"longitude": -3.6962713,
"approximated": false
},
"city": "Madrid",
"province": "Madrid",
"images": [
{
"id": "v6g0vre5g1mj",
"small": "https://cdn.wallapop.com/images/10420/lq/dy/__/c10420p1314110407/i6803291016.jpg?pictureSize=W320",
"medium": "https://cdn.wallapop.com/images/10420/lq/dy/__/c10420p1314110407/i6803291016.jpg?pictureSize=W640",
"big": "https://cdn.wallapop.com/images/10420/lq/dy/__/c10420p1314110407/i6803291016.jpg?pictureSize=W800"
}
],
"seller": {
"id": "g0j2n597lvjy",
"name": null,
"type": null,
"isTopProfile": false,
"ratingAverage": null,
"reviewCount": null,
"validations": null
},
"sellerName": null,
"sellerRating": null,
"sellerReviewCount": null,
"createdAt": "2026-10-17T14:24:18.150000+00:00",
"modifiedAt": "2026-10-25T17:13:58.916000+00:00",
"reserved": false,
"favorited": false,
"isRefurbished": false,
"hasWarranty": false,
"views": 44,
"favorites": 1,
"conversations": 0,
"searchQuery": "bicicleta",
"scrapedAt": "2026-10-26T19:52:57.816635+00:00",
"detailEnriched": true,
"sellerEnriched": false
}

Pricing

This Actor uses pay-per-event billing. The billable event is item-scraped, charged once for each unique listing saved to the Dataset.

$1.00 per 1,000 listings ($0.001 per listing). Item-detail and seller enrichment do not create additional charge events.

Check the Pricing tab for the current effective price before starting a large run.

ActorBest for
OLX Brazil Scraper | Listings, Prices & PhotosSecond-hand marketplace listings in Brazil, same research workflow in another market.
Idealista Property Listings Scraper | Sale & RentSpanish real-estate listings when you need property data beyond Wallapop's real-estate category.
Fotocasa Spain Property Listings ScraperA second Spanish property source to cross-check prices and inventory.

Limits and data quality

  • Only public listings are collected. Sold or removed listings may not appear in search results.
  • Wallapop's date filter is not exposed because the source does not apply it reliably.
  • Seller profile enrichment adds up to three requests per unique seller and is off by default to keep runs fast.
  • Listings are deduplicated by ID across all searches in the same run.
  • A temporary source problem, empty search or invalid input has a controlled terminal outcome. Check the Run summary: completed, empty, partial, source_unavailable, time_limit, charge_limit and stopped outcomes distinguish complete work from incomplete collection. Existing verified listings are retained; a successful platform status alone does not prove complete data.
  • Interrupted runs verify the same input and saved listing identities before resuming. Unverified delivery or billing stops further paid work without blindly repeating writes or charges. A recovery record created by an older incompatible version needs verification before it can be resumed.
  • Oversized optional content can be omitted while the base listing is retained; the summary records incomplete coverage.
  • Prices, availability and descriptions change over time. The scrapedAt field records when each row was collected.
  • Locations are geocoded at run time with Photon and Nominatim using OpenStreetMap data, and cached for 30 days. A geocoder outage can make a search fail.
  • Very large runs take longer because requests are spaced out to stay polite to the source.

Frequently asked questions

Do I need a Wallapop account?

No. The Actor collects public listings anonymously and never asks for credentials.

Can I search several cities in one run?

Yes. Add one entry per postal code or town to searches, up to 20 entries.

Can I search any town in Spain?

Yes. Enter any Spanish postal code or town name in location. The Actor geocodes it at run time, so there is no fixed city list.

Why are some seller fields empty?

Seller fields are only filled when includeSellerDetails is enabled. Without enrichment the row still contains the seller ID.

Can I filter by publication date?

No. The date filter is not offered because the source does not apply it consistently.

How many listings can I collect?

Up to 2000 per search and up to 20 searches per run, subject to matching public listings and the available execution budget. These are ceilings, not guaranteed counts. If the time or spending budget is reached, inspect the summary and retain the results already saved.

Responsible use

You are responsible for using this Actor lawfully and in line with Wallapop's terms, applicable privacy rules and local regulations. The Actor collects only publicly visible marketplace data. Do not use it to contact sellers at scale, to build profiles of individuals, or for any purpose that requires data the source does not publish.

Support

Open an issue in the Issues tab with a reproducible input and the run ID. Please avoid including personal data from listings in the report.

Examples and integration guide on GitHub.