
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Wallapop listings from Spain, Italy and Portugal by keyword, search URL or item URL. Get price, title, description, photos, location, condition, brand, car specs, views, favourites, shipping and reserved flags. Filter by city and distance, category, price, condition and date. No login needed.
Scrape second-hand listings from Wallapop in Spain, Italy and Portugal (plus France and the UK) by keyword, search URL or item URL. Get prices, titles, descriptions, photos, location, condition, brand and model, full car specs, views and favourites, shipping and reserved flags in clean JSON. No login, no browser: 1,000 listings in about 30 seconds, for $0.15 per 1,000 listings.
iphone 13), or paste Wallapop URLs (search pages or single items).| Field | What it does |
|---|---|
searchQueries | Keywords to search, one per line. |
startUrls | Wallapop search URLs (their filters are used as-is) or item URLs. |
maxItems | Total number of listings to save (0 = no limit). |
country | ES, IT, PT, FR or GB. Results are ranked around the chosen location. |
location / latitude + longitude | Search centre: a city name or exact coordinates. Default is the country's main city. |
distanceKm | Only listings within this radius. |
category | One Wallapop category (cars, motorbikes, tech, fashion, bikes, home, real estate…). |
minPrice / maxPrice | Price range in EUR. |
condition | New, as good as new, good, fair, has given it all. |
postedWithin | Last 24 hours, 7 days or 30 days. |
sortBy | Relevance, newest, closest, price low to high, price high to low. |
shippingOnly, sellerType | Only shippable listings; private or professional sellers. |
includeDetails | Load the full item record (on by default). Turn off for search data only. |
includeSellerDetails | Add the seller's public profile and legal seller info (on by default, needs item details; one lookup per seller). |
{
"searchQueries": ["iphone 13"],
"country": "ES",
"location": "Barcelona",
"distanceKm": 30,
"minPrice": 150,
"maxPrice": 400,
"sortBy": "newest",
"maxItems": 100
}
Each listing is one row. The main fields:
| Field | Description |
|---|---|
item_id, title, description | Listing ID, title and full description. |
price, currency, financed_price | Asking price (and financed price for some cars). |
condition, brand, model | Item condition and attributes. |
category, subcategory, category_path | Wallapop category tree. |
city, region, province, postal_code, country_code, latitude, longitude | Approximate item location. |
shipping_available, reserved, sold, bumped | Status flags. |
views, favorites, conversations | Demand counters. |
year, km, engine, gear_box, horse_power, body_type, doors, seats, eco_label, version | Car specs (cars only). |
extra_attributes | Any other attributes (storage, colour, size, real-estate fields…). |
images, image_count | Full-size photo URLs. |
seller_id, seller_is_top_profile | Seller reference. |
seller_name, seller_profile_url, seller_avatar, seller_city, seller_postal_code, seller_member_since | The seller's public profile as shown on the listing. |
seller_legal_name, seller_email, seller_phone, seller_registration_number, seller_commercial_registry, seller_self_certification, seller_info | Legal seller info Wallapop publishes for professional sellers (empty for private sellers). |
listing_url, share_url, created_at, modified_at | Links and dates (ISO 8601, UTC). |
Example (illustrative values):
{
"item_id": "8x2kq7mzp3jd",
"title": "iPhone 13 128GB azul",
"price": 329.0,
"currency": "EUR",
"financed_price": null,
"condition": "as_good_as_new",
"brand": "apple",
"model": "iphone 13",
"category": "Tecnología y electrónica",
"subcategory": "Smartphones",
"category_id": "24200",
"category_path": ["Tecnología y electrónica", "Telefonía: móviles y smartwatches", "Smartphones"],
"description": "iPhone 13 de 128 GB en color azul, batería al 89 %. Con caja y cargador.",
"city": "Barcelona",
"region": "Cataluña",
"province": "Barcelona",
"postal_code": "08015",
"country_code": "ES",
"latitude": 41.3771,
"longitude": 2.1497,
"location_approximated": true,
"shipping_available": true,
"item_is_shippable": true,
"reserved": false,
"sold": false,
"bumped": false,
"is_refurbished": false,
"has_warranty": false,
"views": 57,
"favorites": 6,
"conversations": 3,
"year": null,
"km": null,
"extra_attributes": {"color": "blue", "storage_capacity": "128gb"},
"characteristics": "Como nuevo · apple · iphone 13 · 128 GB",
"images": ["https://cdn.wallapop.com/images/10420/xx/xx/__/c10420p0000000000/i0000000000.jpg?pictureSize=W800"],
"image_count": 5,
"seller_id": "q9wz3kd1m7xe",
"seller_is_top_profile": false,
"seller_name": "Laura M.",
"seller_profile_url": "https://es.wallapop.com/user/lauram-400000000",
"seller_avatar": "https://cdn.wallapop.com/images/13/xx/xx/__/c13p400000000/i0000000000.jpg?pictureSize=W640",
"seller_city": "Barcelona",
"seller_postal_code": "08015",
"seller_member_since": "2021-03-02T10:15:00Z",
"seller_legal_name": null,
"seller_email": null,
"seller_phone": null,
"seller_registration_number": null,
"seller_commercial_registry": null,
"seller_self_certification": null,
"seller_info": null,
"type": "consumer_goods",
"listing_url": "https://es.wallapop.com/item/iphone-13-128gb-azul-1300000000",
"share_url": "https://wallapop.com/item/iphone-13-128gb-azul-1300000000",
"slug": "iphone-13-128gb-azul-1300000000",
"created_at": "2026-10-14T18:22:05Z",
"modified_at": "2026-10-14T18:25:40Z",
"details_scraped": true,
"source": "keywords: iphone 13",
"scraped_at": "2026-10-15T08:00:00Z"
}
You pay $0.15 per 1,000 listings ($0.00015 per saved listing), plus the small platform usage of the run (compute and datacenter proxy traffic). A 1,000-listing run with item and seller details costs about $0.16 in total. Turning off seller details or item details makes runs lighter still. You never pay for listings that were not saved, and the run stops cleanly at your maximum charge.
Is it legal to scrape Wallapop? The actor only reads publicly visible data that anyone can see without an account: listings, the seller's public profile, and the legal seller info Wallapop itself publishes for professional sellers. You are responsible for using the data in line with Wallapop's terms and data-protection law (GDPR).
Do I need a Wallapop account or a proxy? No account. The default datacenter proxy is included and works well; you can switch to residential in the proxy settings if you ever need to.
How many results can I get?
Wallapop keeps returning listings as long as you page, moving further away from the search centre. Use distanceKm to stay local, and maxItems to cap the run. Runs of 10,000 listings finish in under 3 minutes. With several keywords, the limit is shared evenly first so every keyword gets results.
Why are some fields empty? Fields only exist when the seller filled them in or the category has them: car specs only for cars, condition and brand only for categories that use them. Location is Wallapop's approximate location, not an exact address.
Can I schedule it or use the API? Yes. Schedule a run (for example a "newest first" search every hour) and read the dataset through the API, webhooks or integrations.
Which countries work? Spain, Italy and Portugal are Wallapop's main markets. France and the UK also return listings, but Wallapop has far fewer there, so searches fill up with listings from other countries.
sold is only reported for item URLs.created_at is only available for listings found through search.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch keywords
What to search for on Wallapop, one keyword or phrase per line (for example 'iphone 13' or 'bicicleta carretera'). The filters below apply to every keyword.
startUrlsarrayOptionalWallapop URLs
Wallapop search URLs (copy them from your browser after setting filters on wallapop.com) or item URLs (…/item/). es, it, pt, fr and uk subdomains work. The filters inside a search URL are used as they are.
maxItemsintegerOptionaldefault 20Max results
Maximum number of listings to save in total across all keywords and URLs. Use 0 for no limit.
Where to search and which listings to keep. These filters apply to keyword searches (and the location also to URLs that have none).
countryenumOptionaldefault "ES"Country
Wallapop market to search. Results are ranked around the location below, or around the country's main city when no location is set.
locationstringOptionalCity or town
Search around this city or town, for example 'Valencia', 'Milano' or 'Porto'. Ignored when latitude and longitude are set.
latitudenumberOptionalLatitude
Exact search centre (use together with longitude).
longitudenumberOptionalLongitude
Exact search centre (use together with latitude).
distanceKmintegerOptionalDistance (km)
Only listings within this many kilometres of the search centre. Leave empty for any distance.
categoryenumOptionalCategory
Limit results to one Wallapop category. Picking a category without keywords browses the whole category.
minPricenumberOptionalMin price (EUR)
Lowest asking price.
maxPricenumberOptionalMax price (EUR)
Highest asking price.
conditionarrayOptionalCondition
Keep only listings in these conditions (applies to categories that have a condition, such as electronics or fashion).
postedWithinenumOptionalPosted within
Only listings published in this period.
sortByenumOptionalSort by
Order of the results. Leave empty for Wallapop's relevance order.
shippingOnlybooleanOptionalOnly listings with shipping
Keep only listings that can be shipped.
sellerTypeenumOptionalSeller type
Private or professional sellers only.
includeDetailsbooleanOptionaldefault trueInclude item details
Loads each listing's detail record for condition, brand, model, car specs (year, km, fuel, gearbox, power), views, favourites, chats and all item attributes. Turn off for faster, lighter search-only results.
includeSellerDetailsbooleanOptionaldefault trueInclude seller details
Adds the seller's public profile (name, profile link, avatar, city, member since) and, for professional sellers, the legal seller info Wallapop shows (legal name, email, registration number). Needs item details. Fetched once per seller.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are used by default and work well for Wallapop.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| item_id | string | null | |
| title | string | null | |
| currency | string | null | |
| condition | string | null | |
| brand | string | null | |
| model | string | null | |
| category | string | null | |
| subcategory | string | null | |
| category_id | string | null | |
| description | string | null | |
| city | string | null | |
| region | string | null | |
| province | string | null | |
| postal_code | string | null | |
| country_code | string | null | |
| version | string | null | |
| engine | string | null | |
| gear_box | string | null | |
| body_type | string | null | |
| eco_label | string | null | |
| characteristics | string | null | |
| seller_id | string | null | |
| type | string | null | |
| listing_url | string | null | |
| share_url | string | null | |
| slug | string | null | |
| created_at | string | null | |
| modified_at | string | null | |
| source | string | null | |
| scraped_at | string | null | |
| price | number | null | |
| financed_price | number | null | |
| latitude | number | null | |
| longitude | number | null | |
| views | number | null | |
| favorites | number | null | |
| conversations | number | null | |
| year | number | null | |
| km | number | null | |
| horse_power | number | null | |
| doors | number | null | |
| seats | number | null | |
| image_count | number | null | |
| location_approximated | boolean | null | |
| shipping_available | boolean | null | |
| item_is_shippable | boolean | null | |
| reserved | boolean | null | |
| sold | boolean | null | |
| bumped | boolean | null | |
| is_refurbished | boolean | null | |
| has_warranty | boolean | null | |
| seller_is_top_profile | boolean | null | |
| details_scraped | boolean | null | |
| category_path | array | null | |
| hashtags | array | null | |
| images | array | null | |
| extra_attributes | object | null | |
| seller_name | string | null | |
| seller_profile_url | string | null | |
| seller_avatar | string | null | |
| seller_city | string | null | |
| seller_postal_code | string | null | |
| seller_member_since | string | null | |
| seller_legal_name | string | null | |
| seller_email | string | null | |
| seller_phone | string | null | |
| seller_registration_number | string | null | |
| seller_commercial_registry | string | null | |
| seller_self_certification | string | null | |
| seller_info | object | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One saved Wallapop listing (with item details when enabled). | $0.00015 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/wallapop-scraper').call({
"searchQueries": [
"iphone 13"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/wallapop-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/wallapop-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Newest car ads from a Wallapop search URL with details.
Listings with item and seller details.
Cheapest listings first, list only.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.