Wallapop APIfr.wallapop.com ↗
Access Wallapop France listings via 2 endpoints. Search by category or keyword, get prices, sold status, seller stats, and item condition in structured JSON.
What is the Wallapop API?
The Wallapop France API gives developers structured access to secondhand listings on fr.wallapop.com through 2 endpoints. Use search_items to browse up to 80 listings per call by category slug or keyword, returning prices, sold/reserved flags, and thumbnails. Use get_item to retrieve full details on a single listing including seller rating, view count, condition, images, and category-specific attributes like car specs or fashion details.
curl -X GET 'https://api.parse.bot/scraper/6d26fd31-1ae8-42ee-84ce-df1cbf213839/search_items?slug=moviles-telefonos%2Fiphone' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fr-wallapop-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Wallapop SDK — search listings and drill into item details."""
from parse_apis.fr_wallapop_com_api import Wallapop, InputNotFound
client = Wallapop()
# Search iPhone listings in the phones category
page = client.items.search(slug="moviles-telefonos/iphone")
print(f"Total results: {page.total_results}")
print(f"Breadcrumbs: {' > '.join(b.label for b in page.breadcrumbs)}")
# Browse the first few search results
for listing in page.items[:5]:
status = "SOLD" if listing.sold else "available"
print(f" {listing.title} — {listing.price} {listing.currency} [{status}]")
# Drill into the first listing for full details using its slug
first = page.items[0] if page.items else None
if first is not None:
detail = client.items.get(slug=first.slug)
print(f"\nDetail: {detail.title}")
print(f" Price: {detail.price.amount} {detail.price.currency}")
print(f" Condition: {detail.condition.text}")
print(f" Seller: {detail.seller.name} (rating {detail.seller.rating_average})")
print(f" Views: {detail.views}, Favorites: {detail.favorites}")
print(f" Location: {detail.location.city}, {detail.location.country_code}")
# Explore suggested keywords for further navigation
for kw in page.suggested_keywords[:3]:
print(f" Related: {kw.title} -> {kw.url}")
# Point lookup by known slug
try:
item = client.items.get(slug="iphone-16-1293809886")
print(f"\nDirect lookup: {item.title}, sold={item.sold}")
except InputNotFound:
print("Item not found or removed")
print("\nexercised: items.search / items.get / InputNotFound")
Browse Wallapop listings by category or keyword slug. Returns up to 80 items per call with prices and sold/reserved status. The slug corresponds to the site's SEO landing page path structure: use a category slug (e.g. 'coches-segunda-mano') or a category/keyword combination (e.g. 'moviles-telefonos/iphone'). The response includes suggested sub-keywords for further navigation. No pagination beyond the initial 80 items is available through this route.
| Param | Type | Description |
|---|---|---|
| slugrequired | string | SEO landing page path slug. Can be a category (e.g. 'coches-segunda-mano', 'moviles-telefonos', 'moda-y-complementos') or category/keyword (e.g. 'moviles-telefonos/iphone', 'coches-segunda-mano/nissan-patrol'). Available category slugs: coches-segunda-mano, motos, motor-y-accesorios, moda-y-complementos, inmobiliaria, tv-audio-foto, moviles-telefonos, electronica, deporte-y-ocio, bicicletas, consolas-y-videojuegos, muebles-deco-y-jardin, electrodomesticos, libros-pelis-musica, ninos-y-bebes, coleccionismo, construccion-y-reformas, industria-agricultura, empleo, servicios, otros. |
{
"type": "object",
"fields": {
"items": "array of item listings with id, price, currency, sold/reserved status, title, description, slug, and thumbnail",
"breadcrumbs": "navigation breadcrumb trail for the current category path",
"total_results": "approximate total number of results available for this category/keyword",
"suggested_keywords": "array of related keyword suggestions with title and URL slug"
},
"sample": {
"data": {
"items": [
{
"id": "pzpk481rq9j3",
"slug": "iphone-14-1289989226",
"sold": false,
"price": 300,
"title": "iPhone 14",
"currency": "EUR",
"reserved": false,
"shipping": {
"itemIsShippable": true,
"userAllowsShipping": false,
"costConfigurationId": null
},
"image_url": "https://cdn.wallapop.com/images/10420/lc/0y/__/c10420p1289989226/i6669609942.jpg?pictureSize=W320",
"seller_id": "4z4v1le40wzy",
"numeric_id": 1289989226,
"category_id": 24200,
"description": "iPhone 128 GB color lavanda..."
}
],
"breadcrumbs": [
{
"url": "/",
"label": "Inicio"
},
{
"url": "/moviles-telefonos",
"label": "Móviles y Telefonía"
},
{
"url": "/moviles-telefonos/iphone",
"label": "Iphone"
}
],
"total_results": "230.694",
"suggested_keywords": [
{
"url": "/moviles-telefonos/iphone-13",
"title": "Iphone 13"
}
]
},
"status": "success"
}
}About the Wallapop API
Search Listings by Category or Keyword
The search_items endpoint accepts a slug parameter that maps to Wallapop's SEO landing page path structure. Pass a bare category slug such as coches-segunda-mano or moviles-telefonos to browse that category, or combine category and keyword in the slug (e.g. coches-segunda-mano/bmw) to narrow results. Each call returns up to 80 item listings, each containing id, price, currency, sold/reserved booleans, title, description, slug, and a thumbnail URL. The response also includes total_results for the matched query, breadcrumbs for the category path, and suggested_keywords with related keyword titles and slugs.
Full Item Detail
The get_item endpoint accepts an item_slug taken directly from the slug field in search_items results — for example iphone-14-1289989226. It returns the complete listing record: price as an object with amount and currency, sold and reserved flags, brand, model, views, and an images array with small, medium, and large URL variants. The seller object includes display name, aggregate rating, total sold count, and reviews count. Category-specific attributes — such as engine specs for cars or size and material for fashion — are included when present on the listing.
Data Coverage and Scope
Both endpoints cover the French Wallapop domain (fr.wallapop.com). The search_items response provides pagination-level metadata via total_results but does not paginate automatically — each call returns one page of up to 80 items. Sold and reserved status is reflected in real time at the item level, making the API useful for price tracking and availability monitoring across secondhand categories.
The Wallapop API is a managed, monitored endpoint for fr.wallapop.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fr.wallapop.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fr.wallapop.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track resale prices for a specific product category using
search_itemswith a category slug and parsing thepricefields - Monitor sold status of listings over time by polling
get_itemand checking thesoldflag - Build a seller reputation tool using the
seller.rating,seller.sold_count, andseller.reviews_countfields fromget_item - Aggregate thumbnail previews and titles from
search_itemsto populate a secondhand product feed - Extract category-specific attributes (e.g. car make/model, mileage) via
get_itemfor automotive price comparisons - Discover trending search terms in a category using the
suggested_keywordsarray returned bysearch_items - Cross-reference listing view counts from
get_itemwith price to identify high-demand underpriced items
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Wallapop have an official public developer API?+
What does `search_items` return beyond the item list itself?+
items array, the response includes total_results (the approximate count of matching listings), breadcrumbs (the navigation path for the queried category), and suggested_keywords (an array of related keyword objects with title and URL slug). These fields are useful for building category navigation or keyword expansion features.Does the API support pagination through large result sets?+
search_items call returns up to 80 items in a single response. The total_results field indicates how many listings match the query overall, but the API does not currently expose a page or offset parameter to retrieve subsequent pages. You can fork the API on Parse and revise it to add pagination support for deeper result set traversal.Does `get_item` return listing history or price change data?+
get_item endpoint returns the current state of a listing — present price, sold/reserved status, view count, and seller stats — but does not include historical prices or edit timestamps. You can fork the API on Parse and revise it to add a separate endpoint that records snapshots over time for price history tracking.