Skip to content

kami4ka/wallapop-scraper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wallapop Scraper

A Python scraper for extracting product listings from Wallapop using the ScrapingAnt API.

Features

  • Scrapes product listings from Wallapop category pages
  • Extracts: title, price, description, listing URL, category
  • Supports multiple categories (phones, computers, gaming, fashion, etc.)
  • Handles "Ver más" (Show More) pagination via JavaScript execution
  • Exports results to CSV and JSON formats
  • Automatic deduplication of listings

Prerequisites

Note: The ScrapingAnt free plan has a concurrency limit of 1 thread. For faster scraping with multiple concurrent requests, consider upgrading to a paid plan.

Installation

  1. Clone the repository:
git clone https://github.com/kami4ka/wallapop-scraper.git
cd wallapop-scraper
  1. Create a virtual environment:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Set your ScrapingAnt API key:
export SCRAPINGANT_API_KEY="your-api-key-here"

Usage

Basic Usage

Scrape default categories (iPhone + Samsung):

python main.py -v

Scrape Specific Categories

python main.py --categories "moviles-telefonos/iphone" -v

Scrape All Categories

python main.py --all-categories -v

Load More Listings

Click "Ver más" button multiple times to load more listings:

python main.py --show-more 3 -v

List Available Categories

python main.py --list-categories

Custom Output Paths

python main.py --output-csv my_listings.csv --output-json my_listings.json -v

Available Categories

Phones

  • iPhone: moviles-telefonos/iphone
  • Samsung: moviles-telefonos/samsung
  • Xiaomi: moviles-telefonos/xiaomi

Computers

  • Laptops: informatica/portatiles
  • Desktop Computers: informatica/ordenadores-sobremesa
  • Tablets: informatica/tablets

Gaming

  • PlayStation: consolas-videojuegos/playstation
  • Xbox: consolas-videojuegos/xbox
  • Nintendo: consolas-videojuegos/nintendo

Fashion

  • Men's Clothing: moda-accesorios/ropa-hombre
  • Women's Clothing: moda-accesorios/ropa-mujer
  • Sneakers: moda-accesorios/zapatillas

Home

  • Furniture: hogar-jardin/muebles
  • Appliances: hogar-jardin/electrodomesticos

Sports

  • Bicycles: bicicletas
  • Fitness Equipment: deportes-ocio/fitness

Output Format

CSV Fields

  • title - Product name
  • price - Listed price (e.g., "900 €")
  • description - Product description
  • location - Seller location (when available)
  • listing_url - Direct link to the listing
  • category - Category name
  • image_count - Number of images
  • seller_type - Type of seller (when available)
  • scraped_at - UTC timestamp of when data was scraped

Sample Output

title,price,description,location,listing_url,category,image_count,seller_type,scraped_at
iPhone 16 Pro Max,900 €,Como nuevo sin arañazos...,,https://es.wallapop.com/item/iphone-1234567,iPhone,5,,2025-01-12T12:00:00+00:00

Project Structure

WallapopScraper/
├── main.py           # CLI entry point
├── scraper.py        # Main scraper class
├── models.py         # Data models (Listing, ListingCollection)
├── config.py         # Configuration settings
├── utils.py          # Utility functions
├── requirements.txt  # Python dependencies
├── output/           # Output directory for CSV/JSON files
└── README.md

How It Works

  1. API Request: Uses ScrapingAnt's browser rendering with Spanish residential proxy to access Wallapop
  2. Wait for Content: Waits for listing cards to load using CSS selector a[href*="/item/"]
  3. Pagination: Optionally clicks "Ver más" button via JavaScript injection to load additional listings
  4. Parsing: Extracts listing data from card elements using BeautifulSoup
  5. Deduplication: Removes duplicate listings based on URL
  6. Export: Saves results to CSV and JSON formats

Rate Limiting

The scraper includes built-in delays between requests to respect rate limits. For the ScrapingAnt free tier with 1 thread concurrency, expect approximately 30-60 seconds per category (depending on Show More clicks).

License

MIT License

About

A Python scraper for extracting product listings from Wallapop using ScrapingAnt API

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages