Wallapop Cars Scraper — Used Cars & Vans in Spain avatar

Wallapop Cars Scraper — Used Cars & Vans in Spain

Pricing

from $0.80 / 1,000 listing scrapeds

Go to Apify Store
Wallapop Cars Scraper — Used Cars & Vans in Spain

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

Actor stats

0

Bookmarked

48

Total users

6

Monthly active users

1 days

Issues response

6 days ago

Last modified

Share

Wallapop Cars Scraper — Used Car Listings, Prices & Sellers

wallapop cars

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?

FieldTypeDescription
idstringUnique Wallapop listing identifier
urlstringDirect link to the listing
titlestringListing title
brandstringCar brand (BMW, Seat, Audi, etc.)
modelstringCar model (Serie 3, Leon, A3, etc.)
versionstringTrim/version (320d, FR, S-Line, etc.)
yearintegerRegistration year
kmintegerMileage in kilometers
priceintegerAsking price in EUR
enginestringFuel type (Diesel, Gasolina, Híbrido, Eléctrico)
horsepowerintegerEngine power in HP
gearboxstringTransmission type
seller_typestringnull in listing rows (Wallapop's search does not return it). For private vs professional use the sellerType filter, or look up dealers with sellerProfiles
citystringSeller's city
regionstringAutonomous community
postal_codestringPostal code
latitude / longitudenumberExact listing coordinates
image_urlstringMain listing photo URL
is_refurbishedbooleanWhether the car is refurbished
has_warrantybooleanWhether warranty is included
reservedbooleanWhether the listing is reserved
created_atdatetimeWhen the listing was published
descriptionstringSeller'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 € as price. Filter them downstream with minPrice or 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

  1. Create a free Apify account at apify.com — your first $5 is free
  2. Open Wallapop Cars Scraper and click Try for free
  3. Enter a search (e.g., BMW Serie 3) and select a city
  4. Click Start — default settings return ~50 listings in under 1 minute
  5. Preview your data in the Output tab
  6. 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

ParameterTypeDefaultDescription
keywordsstringBMW Serie 3Free-text search — brand, model, or any keyword. Leave empty to browse all cars
locationselectmadridCity used as geographic center (Madrid, Barcelona, Valencia, Sevilla, Bilbao, Málaga, Zaragoza, or all Spain)
vehicleCategoryselectcarscars (default, includes vans) or motorbikes
minPrice / maxPriceinteger—Price range filter in EUR
minYear / maxYearinteger—Registration year range
engineselect—Fuel type: Petrol, Diesel, Electric/Hybrid, Hybrid, Plug-in Hybrid, LPG
gearboxselect—Manual, Automatic, or Semi-automatic
sellerTypeselect—Private sellers, Professional dealers, or both
distanceKminteger—Radius in km around the search centre (use with orderBy: closest)
customLatitude / customLongitudenumber—Exact GPS centre; overrides the city dropdown (any town or island)
timeFilterselect—today / lastWeek by last modification, not publication date
orderByselectmost_relevanceSort: Most relevant, Newest, Price low→high, Price high→low, Closest
maxItemsinteger50Hard cap on listings (50 ≈ 1 min, 500 ≈ 1 min, 5000 ≈ 5–8 min)
maxPagesinteger0Pages to sweep (~35 listings each). 0 = automatic
enableCursorbooleanfalseIncremental mode — return only new or changed listings
cursorIdstring—Namespaces the incremental ledger
emitSeenIdsbooleanfalseWrite observed IDs for delisting detection
stripSellerPIIbooleanfalseRemove personal data of private sellers (see Privacy)
sellerProfilesarray—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).

ListingsApprox. 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:

SituationResult
Listing not in ledgerEmitted with _delta_status: "new"
Fingerprint changedEmitted with _delta_status: "updated" + _changed_fields, _previous_price, _price_delta
Seen before, unchangedSkipped — not charged

Extra fields in incremental mode

FieldDescription
_delta_status"new" or "updated"
_changed_fieldsWhich fields moved — ["price"], ["km"], ["other"]
_previous_pricePrice at the previous sighting (updates only)
_price_deltaSigned 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

  1. Run 1 — enableCursor: true, generous maxItems and maxPages. Captures a full baseline.
  2. Runs 2..n — same input, 2–3× daily. Returns only new and changed listings.
  3. Weekly — one run with emitSeenIds: true to 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>"] }
FieldDescription
record_typeAlways "seller_profile"
user_idWallapop account ID (as given)
namePublic display name (micro_name), e.g. Dealer Name M.
is_professionaltrue for professional accounts, false for private individuals
account_type / seller_type / seller_verified / badge_typeWallapop account type (professional), seller type (Shop, PRO), verified flag and badge
shop_nameAlways null: Wallapop exposes no commercial name separate from name
city / postal_code / countryProfile location
addressShop address set by the dealer
latitude / longitudeShop coordinates (or the profile's approximate location if the dealer set none)
website / phone / descriptionCommercial contact data published on the profile (description truncated to 500 chars)
listings_countPublished-listings counter of the account (publish in Wallapop's profile stats; all categories, all of Spain)
sold_count / reviews_count / rating_averageProfile counters
profile_urlhttps://es.wallapop.com/user/{slug}
register_dateAccount creation date (ISO 8601)
fetched_atWhen the profile was fetched
errornull, 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:

FieldAction
user_idSet to null
latitude / longitudeTruncated to ~1 km precision (2 decimals)
descriptionPhone 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:


ActorDescription
Wallapop Scraper — All CategoriesAny Wallapop category, not only cars
Coches.net ScraperSpain's largest dealer marketplace — prices, specs, and dealer data
Milanuncios ScraperSpanish classifieds — cars, real estate, and more
Autoscout24 ScraperPan-European used car marketplace
Mobile.de ScraperGermany's largest car marketplace
Collecting Cars ScraperUK'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

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.