Wallapop Spain Marketplace Listings Scraper avatar

Wallapop Spain Marketplace Listings Scraper

Pricing

Pay per event

Go to Apify Store
Wallapop Spain Marketplace Listings Scraper

Wallapop Spain Marketplace Listings Scraper

Extract public Wallapop Spain listings by keyword, location, price, category, condition, date, or search URL. Export typed prices, photos, seller IDs, shipping flags, and optional detail metricsโ€”no login required.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Extract public Wallapop Spain listings by keyword, location, category, price, condition, publication date, or a saved search URL. Get clean prices, photos, taxonomy, approximate location, seller identifiers, shipping signals, and optional engagement metrics without a login or API key.

This Wallapop scraper uses the marketplace's public JSON data route instead of loading heavy browser pages. That makes scheduled resale sourcing and market monitoring fast, predictable, and easy to export.

  • ๐Ÿ”Ž Search one or many product keywords
  • ๐Ÿ“ Target coordinates anywhere in Spain
  • ๐Ÿ’ถ Apply price, category, condition, and date filters
  • ๐Ÿ”— Reuse a Wallapop search URL
  • ๐Ÿ“Š Export JSON, CSV, Excel, XML, or RSS from Apify
  • โฐ Schedule recurring runs and receive dataset webhooks

What does Wallapop Marketplace Scraper do?

Wallapop Marketplace Scraper turns public classifieds from Wallapop Spain into one structured dataset row per listing. It follows Wallapop's opaque pagination cursor, removes duplicate listing IDs across searches, and stops exactly at your requested limit.

Use the lightweight default mode for high-frequency inventory monitoring. Enable detail enrichment only when you need condition, brand, model, characteristics, views, favorites, conversations, or hashtags.

Unlike browser-heavy approaches, this actor calls the first-party public JSON endpoints directly. No login, cookie export, or private API credential is required for the supported Spain workflow.

Who is it for? Wallapop scraper personas

Resale sellers and sourcing teams

  • Discover newly listed phones, bikes, furniture, collectibles, or tools.
  • Compare asking prices before buying inventory.
  • Schedule a newest-first search and alert on attractive listings.

Marketplace analysts

  • Track supply and asking-price ranges by product category.
  • Compare regional inventory around Madrid, Barcelona, Valencia, or another coordinate.
  • Export stable listing IDs for longitudinal analysis.

Price comparison and aggregation products

  • Feed normalized listing records into a catalog or search index.
  • Deduplicate results from overlapping keywords and saved searches.
  • Enrich selected listings with public engagement counters.

Data and automation engineers

  • Trigger searches through the Apify API.
  • Connect datasets to Google Sheets, BigQuery, Make, Zapier, or a webhook.
  • Build repeatable Wallapop inventory monitors without maintaining scraping infrastructure.

Why use this Wallapop listings extractor?

  • โšก HTTP-only extraction avoids browser rendering overhead.
  • ๐Ÿ‡ช๐Ÿ‡ธ Clear Spain scope avoids unsupported claims about unverified country adapters.
  • ๐Ÿงญ Two input routes support structured filters and existing Wallapop search URLs.
  • ๐Ÿงน Exact ID deduplication prevents repeated rows from overlapping searches.
  • ๐Ÿ›ก๏ธ Fail-closed filters exclude records when price, category, date, or condition cannot be verified.
  • ๐Ÿ“ฆ Typed output keeps prices numeric, flags boolean, and timestamps export-friendly.
  • ๐Ÿ” Bounded retries handle temporary rate limits and server errors.
  • ๐Ÿ’ณ Pay per event means you pay for the run start and listings saved, not a monthly rental.
  • ๐Ÿ”Œ Apify integrations provide schedules, API access, webhooks, storage, and exports.

What Wallapop data can you extract?

Data groupFields
IdentityListing ID, canonical URL, title, description
PriceNumeric amount and currency
ClassificationCategory ID, category name, flattened taxonomy path
FreshnessCreated, modified, and scraped timestamps
PhotosPrimary image URL and all public image URLs
LocationApproximate city, region, postcode, country, latitude, longitude
SellerPublic seller ID and top-profile flag where returned
FulfilmentShippable and seller-allows-shipping flags
Listing stateReserved, refurbished, and warranty flags
Enriched attributesCondition, brand, model, characteristics
EngagementViews, favorites, conversations, hashtags
ProvenanceSource search URL used to discover the listing

Wallapop deliberately returns approximate public location data. Do not treat listing coordinates as a seller's exact address. Some optional detail fields vary by category and may be absent when Wallapop does not publish them.

How much does it cost to scrape Wallapop listings?

This actor uses pay-per-event pricing. The package charges $0.005 per run start plus a formula-derived tiered price per saved listing. Prices were validated from a representative paginated cloud run with a 92.8% net margin.

Apify plan tierPrice per listing
Free$0.000040449
Starter / Bronze$0.000035173
Scale / Silver$0.000027435
Business / Gold$0.000021104
Platinum$0.000014069
Diamond$0.000010000

At the Free-tier rate, 100 saved listings cost about $0.009, including the start charge. One thousand saved listings cost about $0.045. Apify's Free plan includes monthly platform credits that can cover small evaluation runs.

Detail enrichment does not create a separate event charge, but it adds requests and runtime. Leave it disabled for inexpensive high-frequency monitoring unless you need the extra fields.

How to scrape Wallapop Spain listings

  1. Open Wallapop Marketplace Scraper.
  2. Enter one or more product keywords, such as iphone, bicicleta, or mesa vintage.
  3. Set latitude and longitude for the Spanish market area you want to search.
  4. Add optional radius, category, price, condition, date, or sort filters.
  5. Choose whether to enrich every listing with detailed attributes and counters.
  6. Set a small maxItems limit for your first run.
  7. Click Start and review the default dataset.
  8. Export the results or schedule the task for recurring monitoring.

Minimal Madrid search

{
"keywords": ["iphone"],
"latitude": 40.4168,
"longitude": -3.7038,
"maxItems": 20,
"includeDetails": false
}

Newest like-new phones with details

{
"keywords": ["smartphone"],
"categoryIds": [24200],
"conditions": ["as_good_as_new"],
"maxPrice": 600,
"sortBy": "newest",
"includeDetails": true,
"maxItems": 100
}

Saved Wallapop search URL

{
"keywords": [],
"startUrls": [
{ "url": "https://wallapop.com/search?keywords=bicicleta&latitude=41.3874&longitude=2.1686" }
],
"maxItems": 100
}

Input parameters

ParameterTypeDefaultDescription
keywordsstring[]["iphone"]Separate Wallapop product searches
startUrlsrequest[][]Wallapop Spain search or discover-content URLs
latitudenumber40.4168Search center latitude
longitudenumber-3.7038Search center longitude
distanceKmintegersource defaultOptional radius from 1 to 500 km
categoryIdsinteger[][]Wallapop taxonomy IDs to request and verify
minPricenumbersource minimumMinimum listing price in EUR
maxPricenumberno ceilingMaximum listing price in EUR
conditionsstring[][]Verified Wallapop condition codes
publishedAfterstringemptyISO date or date-time lower boundary
sortBystringmost_relevanceRelevance, newest, price, or distance order
includeDetailsbooleanfalseFetch attributes and engagement counters
maxItemsinteger20Maximum unique listings to save
extraSearchParamsobject{}Advanced verified API query parameters

Provide at least one non-empty keyword or search URL. When both are present, the actor processes both routes and deduplicates the combined output.

Wallapop condition codes

Use these source condition values in conditions:

  • un_opened
  • new
  • as_good_as_new
  • good
  • fair
  • has_given_it_all

Condition filtering automatically fetches each candidate's detail record. If a condition cannot be read, the listing is excluded rather than accidentally passing the filter. That behavior is useful for strict sourcing pipelines, but it can reduce output for categories that do not expose condition.

Output example

{
"id": "w67v5qrgw56x",
"url": "https://wallapop.com/item/iphone-16-negro-1281791152",
"title": "iPhone 16 Negro",
"description": "Telรฉfono mรณvil iPhone 16 en color negro",
"price": 480,
"currency": "EUR",
"categoryId": 24200,
"categoryName": "Technology & electronics",
"taxonomy": "Technology & electronics > Phones: mobiles & smartwatches > Smartphones",
"imageUrl": "https://cdn.wallapop.com/images/example.jpg?pictureSize=W800",
"imageUrls": ["https://cdn.wallapop.com/images/example.jpg?pictureSize=W800"],
"city": "Madrid",
"region": "Comunidad de Madrid",
"countryCode": "ES",
"sellerId": "p61o1y1nkdj5",
"reserved": false,
"refurbished": false,
"hasWarranty": false,
"shippable": true,
"sellerAllowsShipping": false,
"condition": "as_good_as_new",
"brand": "Apple",
"model": "iPhone 16",
"views": 501,
"favorites": 14,
"sourceUrl": "https://api.wallapop.com/api/v3/search?keywords=iphone",
"scrapedAt": "2026-07-16T03:00:00.000Z"
}

Fields that Wallapop omits are left out rather than filled with misleading placeholders. The overview table highlights the most useful sourcing columns; API exports retain the complete row.

Tips for better Wallapop results

  • ๐ŸŽฏ Start with one precise keyword and 20 listings before scaling up.
  • ๐Ÿ“ Use coordinates near the market you actually source from.
  • ๐Ÿ—‚๏ธ Add a category ID when a keyword is ambiguous.
  • ๐Ÿ’ถ Set a realistic price range to reduce irrelevant inventory.
  • ๐Ÿ†• Use newest sorting for scheduled listing alerts.
  • โšก Keep includeDetails off when title, price, photos, and location are enough.
  • ๐Ÿ” Enable details for condition-sensitive buying or engagement analysis.
  • ๐Ÿ”— Reuse a tested Wallapop search URL when the website UI already expresses your filters.
  • ๐Ÿงพ Store listing IDs in your downstream system to identify additions between runs.
  • ๐Ÿ• Schedule at a respectful interval rather than continuously polling the source.

Pagination, limits, and deduplication

Wallapop returns batches of listings and an opaque next_page cursor. The actor follows that cursor until it reaches maxItems, the source has no next page, or all configured searches finish.

A listing found by two keywords is saved once per run. The first source URL that produced the saved row is retained in sourceUrl. The actor does not claim exhaustive historical coverage because Wallapop controls ranking and availability.

A total extraction failure causes the run to fail instead of silently producing a successful empty dataset. A valid search with filters that match nothing also fails with guidance to review the input.

Integrations and monitoring workflows

Wallapop โ†’ Google Sheets

Schedule a newest-first search and append prices, locations, URLs, and timestamps to a sourcing sheet. Use the listing ID as the stable deduplication key.

Wallapop โ†’ Slack or Discord

Send a webhook when a new listing falls below a target price. Include the canonical listing URL and primary image for quick review.

Wallapop โ†’ Make or Zapier

Trigger the actor from a scenario, filter dataset items, and create CRM records or notifications. Use separate tasks for different cities or product categories.

Wallapop โ†’ database or warehouse

Load JSON exports into PostgreSQL, BigQuery, Snowflake, or a data lake. Compare snapshots to measure inventory and price movement.

Scheduled market monitor

Run every hour or day, retain the previous listing IDs, and alert only on unseen records. This actor provides extraction; your automation decides whether a record is new to your history.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/wallapop-marketplace-scraper').call({
keywords: ['bicicleta gravel'],
latitude: 41.3874,
longitude: 2.1686,
sortBy: 'newest',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Using the Apify API with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/wallapop-marketplace-scraper").call(run_input={
"keywords": ["camara analogica"],
"latitude": 40.4168,
"longitude": -3.7038,
"maxItems": 50,
"includeDetails": True,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Using the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~wallapop-marketplace-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["mesa vintage"],
"latitude": 39.4699,
"longitude": -0.3763,
"maxItems": 50
}'

After the run finishes, fetch items from its defaultDatasetId or use the synchronous dataset endpoint for small jobs. Keep API tokens in environment variables or a secret manager.

Use with AI agents via MCP

Wallapop Marketplace Scraper can be called by AI clients through Apify's hosted Model Context Protocol server.

Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/wallapop-marketplace-scraper"

Claude Desktop, Cursor, or VS Code

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/wallapop-marketplace-scraper"
}
}
}

Your client uses OAuth to authenticate with Apify on first use.

Example prompts:

  • "Use automation-lab/wallapop-marketplace-scraper to find the newest iPhone listings within 50 km of Madrid under โ‚ฌ500."
  • "Extract 100 gravel bicycle listings around Barcelona and compare median asking price by brand."
  • "Monitor my Wallapop Spain search URL and summarize newly discovered listings with warranty and shipping."

This actor extracts data visible through Wallapop's public anonymous listing interfaces. It does not log in, bypass access controls, or retrieve private messages or precise seller addresses.

Scraping public data is generally permitted in many jurisdictions, but your use must comply with applicable law, Wallapop's terms, intellectual-property rights, and privacy rules such as GDPR. Collect only the data you need, use respectful schedules, and avoid contacting sellers in abusive or automated ways. If your use case involves personal-data profiling or commercial outreach, obtain appropriate legal advice and establish a lawful basis.

Limitations

  • Version 1 supports Wallapop Spain only.
  • Italy and Portugal are not silently treated as equivalent sources.
  • Wallapop controls ranking, inventory availability, and API response fields.
  • Approximate coordinates are not exact seller locations.
  • Some categories do not publish condition, brand, model, or engagement counters.
  • Detail enrichment increases runtime because it adds one public request per candidate.
  • Search URLs must point to Wallapop search or discover-content pages, not arbitrary item pages.
  • The actor retries temporary 403, 408, 429, and server errors, but sustained source blocking can still fail a run.
  • Historical completeness is not guaranteed; this is a current-listing search tool.

Troubleshooting

Why did the run say no listings matched?

The keyword may be too narrow, the radius too small, or the combined category, price, date, and condition filters may exclude every record. Remove one filter at a time and test with a small limit.

Why are condition or engagement fields missing?

Enable includeDetails. Even with enrichment, Wallapop may omit fields that do not apply to the category or listing.

Why was my search URL rejected?

Only Wallapop Spain /search and /discover-content URLs, or the verified api.wallapop.com/api/v3/search route, are accepted. This prevents unrelated URLs from bypassing the actor's Spain listing scope.

Why did the run stop after fewer listings than requested?

The source may have exhausted matching inventory, or strict local verification may have removed records that did not satisfy your filters. Review the log summary and loosen the most selective filter.

FAQ

How fast is Wallapop Marketplace Scraper?

Search-only runs usually process a small dataset quickly because they use HTTP JSON rather than a browser. Detail mode is slower because each listing requires one additional request.

Do I need a Wallapop account or API key?

No. The supported Spain search and listing-detail records are retrieved from anonymous public endpoints.

Can I scrape multiple keywords in one run?

Yes. Add several entries to keywords; the actor processes them sequentially and deduplicates repeated listing IDs.

Can I use my existing Wallapop search URL?

Yes. Paste a Spain search or discover-content URL into startUrls. The actor translates its public query parameters to the JSON search route.

How much does a run cost?

You pay a small run-start charge and a tiered event price for each listing saved. The exact amount appears in the input UI and each run's billing details.

How does this compare with a browser scraper?

The direct JSON approach avoids downloading and rendering consumer HTML, images, scripts, and fonts. It is typically lighter and more suitable for scheduled monitoring.

Can the actor download listing images?

It exports public image URLs but does not copy image binaries into storage. A downstream workflow can download selected images if your use is authorized.

Does it return seller contact details?

No. It returns only the public seller ID and profile-status signal present in listing data, not private contact details or messages.

Other marketplace scrapers

Combine this actor with other Automation Lab marketplace and commerce tools:

Check each linked actor's current Store page for supported countries, inputs, and pricing before combining workflows.