Wallapop Cars Scraper — Used Cars & Vans in Spain
Pricing
from $0.80 / 1,000 listing scrapeds
Wallapop Cars Scraper — Used Cars & Vans in Spain
Scrape used car and van listings from Wallapop Spain: price, mileage, year, fuel, gearbox, city and photos. Filter by brand, model, price, year or city. Incremental mode returns only new or changed listings. No login or API key. $1 per 1,000 listings.
Pricing
from $0.80 / 1,000 listing scrapeds
Rating
5.0
(1)
Developer
Rastriq — Structured data from the world
Maintained by CommunityActor stats
0
Bookmarked
48
Total users
6
Monthly active users
1 days
Issues response
6 days ago
Last modified
Categories
Share
Wallapop Cars Scraper — Used Car Listings, Prices & Sellers

Extract used car and van listings from Wallapop Spain — price, mileage, year, fuel, gearbox, city, postal code, photos and publication date — as JSON, CSV or Excel. Made for dealers, price analysts, insurers and marketplaces that need Spanish used-car prices without a Wallapop login or API key. Search by brand, model, price, year or city (cars, vans and, optionally, motorbikes).
Real cost: $1.00 per 1,000 listings + $0.005 per run. A 50-listing test costs about $0.055 and finishes in seconds. Unchanged listings in incremental mode are never charged.
Try it free — your first $5 of usage is on Apify. No credit card required.
🔍 What is Wallapop Cars Scraper?
Wallapop Cars Scraper is an unofficial Wallapop API that extracts car listings from Spain's most popular classifieds platform.
Use Wallapop Cars Scraper to:
- Cap your spend — the run stops cleanly when your maximum cost per run is reached
- Monitor used car prices — track prices for any make, model, or region across Spain
- Compare private vs dealer pricing — analyze how private-seller prices differ from professional dealers
- Build vehicle databases — extract price, mileage, year, specs, and location for thousands of listings
- Detect new listings instantly — incremental mode delivers only new or changed listings, skipping duplicates
- Automate market intelligence — schedule daily runs and integrate via API, Make, or Zapier
📋 What data does Wallapop Cars Scraper extract?
| Field | Type | Description |
|---|---|---|
id | string | Unique Wallapop listing identifier |
url | string | Direct link to the listing |
title | string | Listing title |
brand | string | Car brand (BMW, Seat, Audi, etc.) |
model | string | Car model (Serie 3, Leon, A3, etc.) |
version | string | Trim/version (320d, FR, S-Line, etc.) |
year | integer | Registration year |
km | integer | Mileage in kilometers |
price | integer | Asking price in EUR |
engine | string | Fuel type (Diesel, Gasolina, Híbrido, Eléctrico) |
horsepower | integer | Engine power in HP |
gearbox | string | Transmission type |
seller_type | string | null in listing rows (Wallapop's search does not return it). For private vs professional use the sellerType filter, or look up dealers with sellerProfiles |
city | string | Seller's city |
region | string | Autonomous community |
postal_code | string | Postal code |
latitude / longitude | number | Exact listing coordinates |
image_url | string | Main listing photo URL |
is_refurbished | boolean | Whether the car is refurbished |
has_warranty | boolean | Whether warranty is included |
reserved | boolean | Whether the listing is reserved |
created_at | datetime | When the listing was published |
description | string | Seller's description text |
Browse sample data — see exactly what you'll get before running.
📦 Output example
Each result is a structured JSON object. Real listing from a 50-item test run (12 Oct 2026; user_id, description, latitude and longitude are also returned but omitted here):
{"id": "ejkmlynolpzx","title": "BMW Serie 3 1992","brand": "bmw","model": "serie 3","version": null,"year": 1992,"km": 327000,"horsepower": 112,"engine": "Gasolina","gearbox": "Manual","seller_type": null,"price": 1900,"currency": "EUR","city": "Leganés","region": "Comunidad de Madrid","postal_code": "28913","country": "ES","is_refurbished": false,"has_warranty": false,"reserved": false,"image_url": "https://cdn.wallapop.com/images/10420/lp/cj/__/c10420p1312364647/i6792904214.jpg?pictureSize=W800","url": "https://es.wallapop.com/item/bmw-serie-3-1992-1312364647","created_at": "2026-10-12T15:45:49+00:00","modified_at": "2026-10-12T15:47:03+00:00","source": "wallapop","scraped_at": "2026-10-12T19:42:55+00:00"}
Data quality — rows are flagged by nature, never filtered: some listings have
km: null, and dealers sometimes post a monthly instalment (e.g. 183) or a symbolic 1 € asprice. Filter them downstream withminPriceor your own rules.
Download results from Wallapop Cars Scraper in JSON, CSV, Excel, XML, or HTML from the Output tab, or pull them via API.
Browse sample records — see exactly what you'll get before running.
GDPR note — Seller identity and free-text fields (
user_id, description) are replaced with"GDPR Protection"in the public sample dataset. The live Actor returns full values — your data, your responsibility.
See real records before you run it
Browse sample data extracted by this Actor — fields, format and structure, ready to inspect before your first run.
🚀 How to use Wallapop Cars Scraper
- Create a free Apify account at apify.com — your first $5 is free
- Open Wallapop Cars Scraper and click Try for free
- Enter a search (e.g.,
BMW Serie 3) and select a city - Click Start — default settings return ~50 listings in under 1 minute
- Preview your data in the Output tab
- Export in JSON, CSV, or Excel — or connect via API, Make, or Zapier
Tip: Start with the default input (BMW Serie 3 in Madrid) to see the output format before customizing.
⚙️ Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
keywords | string | BMW Serie 3 | Free-text search — brand, model, or any keyword. Leave empty to browse all cars |
location | select | madrid | City used as geographic center (Madrid, Barcelona, Valencia, Sevilla, Bilbao, Málaga, Zaragoza, or all Spain) |
vehicleCategory | select | cars | cars (default, includes vans) or motorbikes |
minPrice / maxPrice | integer | — | Price range filter in EUR |
minYear / maxYear | integer | — | Registration year range |
engine | select | — | Fuel type: Petrol, Diesel, Electric/Hybrid, Hybrid, Plug-in Hybrid, LPG |
gearbox | select | — | Manual, Automatic, or Semi-automatic |
sellerType | select | — | Private sellers, Professional dealers, or both |
distanceKm | integer | — | Radius in km around the search centre (use with orderBy: closest) |
customLatitude / customLongitude | number | — | Exact GPS centre; overrides the city dropdown (any town or island) |
timeFilter | select | — | today / lastWeek by last modification, not publication date |
orderBy | select | most_relevance | Sort: Most relevant, Newest, Price low→high, Price high→low, Closest |
maxItems | integer | 50 | Hard cap on listings (50 ≈ 1 min, 500 ≈ 1 min, 5000 ≈ 5–8 min) |
maxPages | integer | 0 | Pages to sweep (~35 listings each). 0 = automatic |
enableCursor | boolean | false | Incremental mode — return only new or changed listings |
cursorId | string | — | Namespaces the incremental ledger |
emitSeenIds | boolean | false | Write observed IDs for delisting detection |
stripSellerPII | boolean | false | Remove personal data of private sellers (see Privacy) |
sellerProfiles | array | — | Seller user_id list. When set, switches to seller-profile mode (no listing search) |
💰 How much does it cost to use Wallapop Cars Scraper?
Pay per event, no subscription: $0.001 per listing + $0.005 per run (Free/Bronze plan; $0.0009 Silver, $0.0008 Gold and above).
| Listings | Approx. cost (Free plan) |
|---|---|
| 30 (default test) | $0.035 |
| 50 | $0.055 |
| 1,000 | $1.005 |
| 5,000 | $5.005 |
Your $5 free credit covers ~4,900 listings. Incremental mode charges only new or changed listings; seller-profile mode charges per professional profile. Set a maximum cost per run in the run options to cap spend.
🔄 Incremental ingestion — keep a catalogue up to date
Turn on Incremental mode and Wallapop Cars Scraper returns only what changed since your last run.
How it works
The actor keeps a ledger of every listing ID it has already delivered, together with a fingerprint of price / km / title / reserved. On each run:
| Situation | Result |
|---|---|
| Listing not in ledger | Emitted with _delta_status: "new" |
| Fingerprint changed | Emitted with _delta_status: "updated" + _changed_fields, _previous_price, _price_delta |
| Seen before, unchanged | Skipped — not charged |
Extra fields in incremental mode
| Field | Description |
|---|---|
_delta_status | "new" or "updated" |
_changed_fields | Which fields moved — ["price"], ["km"], ["other"] |
_previous_price | Price at the previous sighting (updates only) |
_price_delta | Signed price change in € — negative means a price drop |
Detecting sold vehicles
Enable Emit seen ids and the Actor writes every ID observed during the sweep to SEEN_IDS in the run's key-value store. Compare across runs and mark anything absent for N consecutive sweeps as sold. No extra cost.
Suggested pattern
- Run 1 —
enableCursor: true, generousmaxItemsandmaxPages. Captures a full baseline. - Runs 2..n — same input, 2–3× daily. Returns only new and changed listings.
- Weekly — one run with
emitSeenIds: trueto reconcile and expire sold vehicles.
👤 Seller profiles — dealer identity by user ID
The listing output carries each seller's user_id. To know who a professional account is, pass those IDs in Seller profiles (sellerProfiles). When the list has at least one ID, the actor does not search listings: it fetches the public Wallapop profile of each account (/api/v3/users/{id} + /stats, 2 requests per professional account, 4 in parallel with retries) and outputs one record per account. Search filters are ignored in this mode. Leave the field empty and the actor works exactly as before.
{ "sellerProfiles": ["<user_id_1>", "<user_id_2>"] }
| Field | Description |
|---|---|
record_type | Always "seller_profile" |
user_id | Wallapop account ID (as given) |
name | Public display name (micro_name), e.g. Dealer Name M. |
is_professional | true for professional accounts, false for private individuals |
account_type / seller_type / seller_verified / badge_type | Wallapop account type (professional), seller type (Shop, PRO), verified flag and badge |
shop_name | Always null: Wallapop exposes no commercial name separate from name |
city / postal_code / country | Profile location |
address | Shop address set by the dealer |
latitude / longitude | Shop coordinates (or the profile's approximate location if the dealer set none) |
website / phone / description | Commercial contact data published on the profile (description truncated to 500 chars) |
listings_count | Published-listings counter of the account (publish in Wallapop's profile stats; all categories, all of Spain) |
sold_count / reviews_count / rating_average | Profile counters |
profile_url | https://es.wallapop.com/user/{slug} |
register_date | Account creation date (ISO 8601) |
fetched_at | When the profile was fetched |
error | null, or not_found (unknown ID), http_403, http_429, … — the run continues with the next account |
🔒 Private accounts are never profiled. If an ID turns out to belong to a private individual, the record keeps only user_id and is_professional: false; every other field is null. This applies whether or not stripSellerPII is enabled.
🔒 Privacy — GDPR compliance
Enable Strip seller personal data (stripSellerPII: true) to remove personal data of private sellers from the output:
| Field | Action |
|---|---|
user_id | Set to null |
latitude / longitude | Truncated to ~1 km precision (2 decimals) |
description | Phone numbers and emails replaced with [REDACTED] |
Professional seller data is never affected — their contact details are commercial, not personal under GDPR.
When stripSellerPII is off (the default), the actor behaves exactly as before — all fields are emitted as-is.
💡 Use cases
- Used car market analysis — benchmark private-seller prices for any make and model across Spain
- Geographic price comparison — compare asking prices between cities or regions
- Dealer vs. private pricing — track how private market prices differ from professional dealers
- Inventory monitoring — catch underpriced cars or fast-moving inventory daily
- Valuation datasets — build datasets for used car valuation, insurance pricing, or consumer research
🔗 Integrations & scheduling
- Schedule daily or weekly runs from the Apify Console for automated data collection
- Push results to Google Sheets, Slack, Zapier, Make, webhooks, or any database
- Fetch datasets via the Apify REST API or the official JavaScript/Python clients
- Use Apify integrations to connect to 200+ apps
🧪 Ready-made examples
Start from a pre-configured task and adapt it to your needs:
- Find used BMW cars for sale on Wallapop
- Find affordable diesel cars on Wallapop
- Used Cars Under €10,000 in Madrid
- Electric Cars Listings from Wallapop Spain
- Find cheap used cars in Barcelona on Wallapop
- Used vans (furgonetas) for sale in Madrid
- Cheapest used vans in Spain on Wallapop
- Used cars in Valencia on Wallapop
- Used cars in Sevilla on Wallapop
- Monitor new used-car listings in Madrid (incremental)
🏎️ Related Rastriq Actors — Used Cars
| Actor | Description |
|---|---|
| Wallapop Scraper — All Categories | Any Wallapop category, not only cars |
| Coches.net Scraper | Spain's largest dealer marketplace — prices, specs, and dealer data |
| Milanuncios Scraper | Spanish classifieds — cars, real estate, and more |
| Autoscout24 Scraper | Pan-European used car marketplace |
| Mobile.de Scraper | Germany's largest car marketplace |
| Collecting Cars Scraper | UK's leading online car auction platform |
Copy to your AI assistant
Copy the Apify Store URL for this Actor and paste it into ChatGPT, Claude, or any LLM with web access:
https://apify.com/rastriq/wallapop-cars-scraper
The model will read the Actor description, input schema, and field list — then help you build the right API call or integration.
About the data
This Actor is built and maintained by Rastriq, a data intelligence company specializing in structured extraction for market research and competitive analysis. Browse our full field reference and methodology (en español: datos de coches de segunda mano).
❓ FAQ
Is scraping Wallapop legal?
Wallapop Cars Scraper only accesses publicly available data — information visible to any visitor without logging in. You are responsible for using the extracted data in compliance with Wallapop's Terms of Service and applicable data protection laws (including GDPR).
Does Wallapop Cars Scraper require a login?
No. Wallapop Cars Scraper works with public data only — no login, API key, or cookies required.
Can I search all of Spain?
Yes. Select espana as the search center, or pick any city — Wallapop sorts by proximity but returns results from across Spain. For the widest coverage, use espana or madrid as the center.
What's the maximum number of results?
There is no fixed cap: set Max results up to 100,000 per run (5,000 listings take roughly 5–8 minutes). Wallapop shows a limited window per search, so for very large catalogues combine filters (city, price, year) or use incremental mode to build the catalogue over time.
How does incremental mode save money?
Incremental mode keeps a ledger of previously seen listings. On each run, only new or changed listings are emitted and charged — unchanged listings are skipped for free. A typical delta run scans hundreds of listings but emits only a handful.
Can I detect when a car is sold?
Yes. Enable Emit seen ids and compare the SEEN_IDS key-value store across consecutive runs. Any listing absent for N consecutive sweeps can be marked as sold.
What export formats are supported?
Wallapop Cars Scraper outputs JSON, CSV, Excel (XLSX), XML, and HTML table. You can also push data directly to Google Sheets or any webhook endpoint.
Does it cover vans (furgonetas) and motorbikes?
Vans: yes — they live in Wallapop's cars category, so use keywords such as furgoneta, Peugeot Boxer or Renault Trafic. Motorbikes: set vehicleCategory to motorbikes (Wallapop's separate motorbike category). Fields such as brand, model, year and km are filled when Wallapop provides them; coverage is lighter than for cars.
Why is seller_type null?
Wallapop's search results do not include the seller account. Use the sellerType filter (private / professional) to split the market, and sellerProfiles to identify professional dealers by user_id.
How fast is Wallapop Cars Scraper?
Wallapop Cars Scraper processes ~500 listings per minute on default settings. A typical 50-listing run finishes in under 60 seconds.