Wallapop Scraper & Monitor: New Listing, Price Drop Alerts
Pricing
from $0.50 / 1,000 listing returneds
Wallapop Scraper & Monitor: New Listing, Price Drop Alerts
Wallapop scraper and monitor. Search by keyword or paste a Wallapop link, get every listing newest first, and have new listings and price drops posted to Discord, Slack or Telegram. You are billed only for listings you did not already have. No login, no API key.
Pricing
from $0.50 / 1,000 listing returneds
Rating
0.0
(0)
Developer
Adriana Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Search Wallapop by keyword or pasted link and get every listing, newest first, as clean rows: title, price, category, city, postal code, photos, shipping flags and a link. Turn on monitoring and the actor remembers what it has already returned, so each scheduled run delivers (and bills) only the new listings and price drops, and can post them straight to Discord, Slack or Telegram.
No login, no cookies and no API key are needed. This actor is not affiliated with Wallapop.
What it does
- One line, one search. Type keywords (
bicicleta,iphone 13) or paste a Wallapop search link. From a link it takes the keywords, price range, category and area; every other link filter is named inignoredSearchFiltersinstead of being silently dropped. - Newest first, always. Each search returns Wallapop's newest listings first, 40 per page, up to 400 per search per run.
- Filters Wallapop applies for you (so you never pay for rows you did not want): minimum and maximum price, category ID, and an area (latitude, longitude and a radius in km).
- Filters the actor applies after fetching, before billing: countries, cities, postal-code prefixes and words to skip. A listing dropped here is never remembered as seen and never billed.
- Monitoring. "Only return listings that are new, or cheaper, since the last run" turns a search into a watchlist. A quiet run costs one request, returns one summary row (or nothing, if you choose) and bills only the start fee.
- Optional details. "Fetch listing details" opens each returned listing (up to 100 per search) for views, favourites, conversations and condition. It is billed separately and only for listings whose details arrived.
- Privacy. Sellers appear as a one-way hash, never the raw seller ID. Phone numbers, emails and chat links are removed from descriptions. Coordinates are not returned.
How to use
- In the Apify Console. Open the actor page and click Start — the
searchesfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~wallapop-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"searches":["bicicleta"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"searches": ["bicicleta"]}
One search per line: plain keywords (bicicleta, iphone 13) or a pasted Wallapop search link. A link's keywords, price range, category and area are used; any other link filter is named in ignoredSearchFilters. Results are always newest first. Accepted formats: bicicleta, iphone 13, https://es.wallapop.com/search?keywords=bicicleta&min_sale_price=100.
Searching one area (read this)
Wallapop's own newest-first search is country-wide: asking for Madrid does not narrow a newest-first search to Madrid, and one page can mix Valencia, Badajoz, Almería and Italy. Two ways to get an area:
- Give a centre and a radius (
latitude,longitude,distanceKm). Wallapop then returns only listings within that distance and the actor keeps newest-first order. This is the right choice for a city or region. (Madrid centre: 40.4168, -3.7038.) - Filter by city or postal code after fetching. City, postal code, region and country are filled on every row, so
cities,postalCodePrefixesandcountrieswork, but the actor first has to read the country-wide feed (up to 400 rows per search), so it is slower and a quiet area may return few rows.
Price drops
With monitoring on, a listing already seen whose price fell by at least the percentage you set (default 5%) comes back with changeType: "price-drop", previousPrice and priceDropPct. Wallapop sorts by publication date, not by edit date, so price drops are noticed on listings that are still near the top of the newest-first list when the run reads it. A price drop on a listing buried deep in the feed is not seen.
Example runs
Saved-search alerts (for a reseller who wants new ads only): change searches to your keyword.
{ "searches": ["bicicleta"], "onlyNewSinceLastRun": true, "deltaName": "wallapop-new-listing-alerts" }
Bargain finder (for a buyer with a budget): change maxPrice; Wallapop applies it, so you pay only for matches.
{ "searches": ["bicicleta"], "maxPrice": 100, "onlyNewSinceLastRun": true, "deltaName": "wallapop-bargain-finder" }
New listings near Madrid (for a local buyer): change distanceKm.
{ "searches": ["bicicleta"], "latitude": 40.4168, "longitude": -3.7038, "distanceKm": 15, "onlyNewSinceLastRun": true, "deltaName": "wallapop-madrid-new-listings" }
Alerts to Discord, Slack or Telegram
- In Discord, open the channel's settings, then Integrations, then Webhooks, create a webhook and copy its URL. (Slack: an incoming webhook. Telegram: a bot token and a chat ID.)
- Paste it into Send alerts to. For Telegram use
https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat id>. - Turn on Only return listings that are new, or cheaper, since the last run and give the watchlist a name.
- Optional: tick Seed silently so the first run only remembers what is on Wallapop today and the channel is not flooded.
- Save the actor as a Task and schedule it, for example every 10 minutes or hourly.
Each new listing or price drop arrives as one message with photo, title, price, place and link, with a NEW or PRICE DROP -X% badge. Messages are free, and they are posted only after the listing has been billed. A message that fails never fails the run: the row's notifyErrors says why. Above "Most alert messages per run" one "+N more" message sums up the rest. The webhook link is stored encrypted and never logged.
Limits
- At most 400 listings per search per run (40 per page), and at most 100 detail lookups per search.
- No sold or removed signal. Wallapop's search has no sold flag and a sold listing simply leaves the results; this actor does not report listings that disappear.
- No seller pages. It searches listings; it does not list one seller's items.
- Prices come back in the listing's own currency (euros on the rows seen).
- Wallapop can refuse a request. A refused run returns a
BLOCKEDrow, costs nothing more and bills nothing; try again later. There is no residential or unblocker fallback. - Results depend on what Wallapop's public search returns at the moment of the run.
Output
One row per listing, for example:
| query | found | status | searchQuery | monitorStatus | listingCount | newCount | priceDropCount | url | title | price | currency | description | category | city | postalCode | region | countryCode | createdAt | shippable | imageUrl | listingId | sellerHash | isNew | changeType | firstSeenAt | scrapedAt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| bicicleta | true | OK | <price> | <seller (hashed)> | <is this listing new?> | 1970-01-01T00:00:00.000Z |
A search that finds nothing, a refused request or an unusable line comes back as a row with "found": false and a status (NOT_FOUND, BLOCKED, REQUEST_REJECTED or BAD_FORMAT) and is never charged.
Pricing
- Listing returned: $1 per 1,000 listings
- Listing details added: $1 per 1,000 listings
Plus a $0.003 start fee per run. Each event above is billed independently, only when it actually returns data — misses (found:false) are never charged.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~wallapop-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"searches":["bicicleta"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~wallapop-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"searches":["bicicleta"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~wallapop-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"searches":["{{search}}"]}, mapping the row's search into the searches array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Wallapop scraper with new listing and price drop alerts" — the agent will find and run this actor.