Wallapop Scraper — Phones & Battery Health
Pricing
from $1.00 / 1,000 listings
Wallapop Scraper — Phones & Battery Health
Searches Wallapop for used phones and keeps only listings that clear a battery-health floor you set. Reads battery health, screen and battery replacement, price, distance and shipping from each ad, and drops anything advertised as damaged.
Pricing
from $1.00 / 1,000 listings
Rating
0.0
(0)
Developer
reventadata
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Unofficial. This Actor is not affiliated with, authorised by, endorsed by, or in any way officially connected to Wallapop. "Wallapop" is a trademark of its respective owner and is used here only to describe what this tool reads. It reads the same public pages a browser does.
Wallapop Phone Finder searches Wallapop, Spain's largest second-hand marketplace, for used phones, and returns only the listings worth opening. It reads each seller's own Spanish text, pulls out the stated battery health, flags replaced screens and batteries, and throws away cracked screens, dead units, parts sales, phone cases and repair-shop adverts before anything reaches your dataset.
This is a phone tool, not a general Wallapop search. The filters are second-hand phone vocabulary. Searching bicycles or guitars will silently drop good listings unless you turn
excludeAccessoriesoff.
Optional: it can also read a second website. Switch on
benchmarkAgainstShopand the Actor makes one extra request per keyword to Cash Converters, a Spanish second-hand chain, to work out what the same phone costs from a shop. It is off by default, it only ever adds columns, and it never removes a listing. If that lookup fails, your Wallapop results are unaffected and the run says so.
What does Wallapop Phone Finder do?
A normal Wallapop search for a used phone is mostly noise. Sort by price and the first three pages are €1 silicone cases. Filter by price and you still get "for parts", "screen cracked", and shops advertising battery replacements. This Actor removes all of that, and adds the one field that actually decides a second-hand phone purchase — battery health — which Wallapop does not expose as a filter at all.
It calls Wallapop's own JSON search endpoint, so results are the same data the website shows, not a fragile HTML scrape.
Why use Wallapop Phone Finder?
- Buy a used phone without reading 200 adverts. Set a battery floor and a price cap.
- Track prices for a model over time by scheduling daily runs.
- Spot new listings early — schedule a daily run and sort the dataset by
createdAt.
How to use Wallapop Phone Finder
- Enter one or more search keywords, for example
iphone 13 mini. - Set near latitude/longitude and a radius for the local pass.
- Set minimum price above zero. This matters more than it sounds — see Tips.
- Set a maximum price and minimum battery health, for example
85. - Leave proxy on Apify Proxy. Optional, but it spreads out bigger sweeps.
- Click Start and read the Matches table.
Input
| Field | Type | What it does |
|---|---|---|
searchQueries | array | One search per keyword, repeated around every origin. |
cities | array | Origins for pass 2. Search origins, not filters — more means wider coverage. |
searchNearby | boolean | Pass 1: search close to home and keep anything inside the radius. |
nearLatitude / nearLongitude | number | Centre of the local search. Defaults to Madrid. |
radiusKm | integer | Enforced by Wallapop, and re-checked here to fill in distanceKm. |
searchAllSpainWithShipping | boolean | Pass 2: sweep the rest of the country from 12 city origins. |
requireShipping | boolean | Whether pass 2 keeps only sellers who post. On by default. Off shows every distant listing; sellerAllowsShipping still tells you which is which. |
minPrice / maxPrice | integer | Price band in EUR. |
minBattery | integer | Drops listings below this stated battery health. |
allowUnknownBattery | boolean | Keep listings that never mention battery health. |
excludeDamaged | boolean | Drops cracked screens, dead units, parts sales. |
excludeAccessories | boolean | Drops cases, protectors, spare parts, repair adverts. |
conditions | array | Wallapop's own condition filter, server-side. One extra request per condition. |
benchmarkAgainstShop | boolean | Add a shop reference price from Cash Converters, a chain that grades its own stock and prices identically nationwide. Off by default; one extra request per keyword. |
requireKeywordMatch | boolean | Drops listings whose title lacks a word of your query. Leave on. |
maxItems | integer | Hard cap on rows for the whole run. |
orderBy | string | Sort order. Leave on relevance — newest narrows the feed sharply. |
proxyConfiguration | object | Optional. Leave as Apify Proxy. |
{"searchQueries": ["iphone 13 mini"],"searchNearby": true,"nearLatitude": 40.4168,"nearLongitude": -3.7038,"radiusKm": 100,"searchAllSpainWithShipping": true,"requireShipping": true,"minPrice": 90,"maxPrice": 190,"minBattery": 85,"conditions": ["as_good_as_new"],"excludeDamaged": true,"proxyConfiguration": { "useApifyProxy": true }}
Output
{"stage": "shipping","batteryHealth": 87,"batteryReplaced": false,"shopPriceFrom": 283.95,"percentOfShopPrice": 60,"savingVsShop": 113.95,"screenReplaced": false,"distanceKm": 308.2,"price": 170,"currency": "EUR","title": "iPhone 13 mini 128GB negro","description": "- Capacidad batería al 87%\n- Color negro (medianoche)\n…","city": "Coslada","region": "Comunidad de Madrid","postalCode": "28820","reserved": false,"sellerAllowsShipping": true,"isRefurbished": false,"hasWarranty": false,"createdAt": 1755600000000,"url": "https://es.wallapop.com/item/iphone-13-mini-128gb-negro-1292117598","imageUrl": "https://cdn.wallapop.com/images/…","matchedKeyword": "iphone 13 mini"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Data fields
| Field | Meaning |
|---|---|
stage | Which pass found it: nearby or shipping. |
batteryHealth | Percentage parsed from the seller's text. null if never stated. |
batteryReplaced | The seller says the battery is non-original or was swapped. Read it next to batteryHealth: an aftermarket battery often reports 100% while performing worse than an original at 88%. false means not stated, not confirmed original. |
screenReplaced | The seller says the screen is new or was replaced. "Pantalla nueva" is ambiguous between a pristine screen and a swapped one, so this is a prompt to read the advert, not a verdict. |
shopPriceFrom / shopPriceMedian / shopCheapestGrade / shopUnitsSeen | What the same phone costs at Cash Converters right now. A reference, never a filter. |
savingVsShop / percentOfShopPrice | The gap to that shop price. A listing far below the trade price is what you are hunting for — and also what a scam looks like. Read it with batteryReplaced and screenReplaced, not on its own. |
distanceKm | Distance from your near-point, computed here. |
price / currency | Asking price. |
title / description | The seller's own words, unmodified. |
city / region / postalCode | Approximate location Wallapop publishes. |
reserved | True if the seller already marked it reserved for someone. |
sellerAllowsShipping | Whether this seller posts. Wallapop's item_is_shippable is about the category, not the seller. |
isRefurbished / hasWarranty | Wallapop's own flags. |
createdAt | Listing creation timestamp, milliseconds. |
url / imageUrl | Direct links. |
matchedKeyword | Which of your keywords found it. |
How much does it cost to scrape Wallapop?
Pricing is pay-per-event: a charge when the run starts, and a charge per result written to the dataset. You are billed for what you get, not for time.
For scale, the underlying compute of the default sweep (12 origins, one keyword) measures around $0.008, and a 20-keyword sweep across all 12 cities — 240 requests, five minutes — measures $0.021.
Two things multiply that: each extra keyword, and each entry in conditions — Wallapop takes
one condition per request, so selecting three conditions triples the requests. The run log
prints the planned feed count before each pass.
Tips
- Always set
minPriceabove zero. Wallapop's cheapest results are accessories and repair services. This single setting removes most of the noise before the filters even run. citiesare search origins, not location filters. Results still come from all over Spain. One feed is capped at 40 items, so adding origins is how you widen coverage.- Use
conditions: ["as_good_as_new"]when the phone has to look new. Wallapop applies it server-side, so the feed's 40 slots are spent on candidates instead of being filtered away afterwards. - Keep the query short. Every word of it must appear in the title, so
iphone 13 mini 128gbdrops listings that only mention the capacity in the description. Searchiphone 13 miniand let the other filters do the narrowing. - Turn on
allowUnknownBatteryif you get too few results. Most sellers never state battery health, and those listings are dropped by default when a floor is set. - Schedule it daily and sort the dataset by
createdAtto see only what is new.
FAQ and limitations
Why does it drop listings Wallapop returned? Wallapop's keyword search is fuzzy — a
search for iphone 13 mini also returns iPhone 8s, iPhone 11s and multi-model shop adverts.
requireKeywordMatch keeps only titles containing every word of your query.
Is the battery health reliable? No — it is whatever the seller typed. Treat it as a shortlist, not a fact. Always ask for a photo of Settings → Battery → Battery Health before paying.
Is a proxy required? No. Wallapop's endpoint rejects any request missing the
X-DeviceOS header, which this Actor always sends; the IP itself is not the problem.
A proxy is still useful for spreading out a large sweep.
Does it paginate? No. The endpoint caps a feed at 40 items and rejects an offset parameter. Coverage comes from sweeping multiple origins and keywords instead.
Legality. This Actor reads only public listing data that Wallapop serves to any visitor. It stores no personal data beyond the seller-supplied text shown on a public advert. You are responsible for using the output in line with Wallapop's Terms of Service and applicable law.