Billiger.de Price Comparison Scraper
- Search products by keyword across all 5,000+ categories
Billiger.de Price Comparison Scraper
Extract product prices and shop offers from Billiger.de, Germany's largest price comparison platform with 100M+ offers across all categories.
What does this actor do?
- Search products by keyword across all 5,000+ categories
- Compare prices from 22,500+ online shops
- Track best offers with shipping costs and availability
- Monitor price ranges across multiple retailers
- Extract ratings and review counts
Why Billiger.de?
- Broader coverage than tech-only competitors like Geizhals
- 100M+ product offers across all categories (electronics, fashion, home, sports, etc.)
- 2M+ monthly users - Germany's trusted price comparison platform
- Real-time pricing from authorized retailers
Use cases
- E-commerce: Track competitor pricing strategies
- Price monitoring: Set up scheduled runs to track price changes over time
- Market research: Analyze pricing patterns across categories
- Automation: Feed data to n8n, Zapier, Make for automated workflows
- Inventory planning: Monitor availability across multiple shops
- Competitor analysis: Track which shops offer best prices
Input
| Field | Type | Description | Default |
|---|---|---|---|
| query | String | Product keyword to search for (e.g., "iPhone 15", "laptop") | - |
| categoryUrl | Array | Direct URLs to Billiger.de category pages | [] |
| productUrls | Array | Direct URLs to specific product comparison pages | [] |
| maxItems | Number | Maximum number of products to scrape (1-10,000) | 100 |
| minShops | Number | Only include products offered by at least N shops | - |
| priceMin | Number | Minimum price filter (EUR) | - |
| priceMax | Number | Maximum price filter (EUR) | - |
| useProxies | Boolean | Enable Apify proxies (recommended) | true |
| proxyType | Enum | Proxy type: "SHADER" (datacenter) or "RESIDENTIAL" | SHADER |
Output
Each product contains:
| Field | Type | Description |
|---|---|---|
| productId | String | Unique Billiger.de product ID |
| productName | String | Full product name |
| productUrl | String | URL to comparison page |
| category | String | Product category |
| currentPrice | Number | Best price found (EUR) |
| currency | String | "EUR" |
| shopName | String | Shop offering best price |
| shopUrl | String | Link to shop's product page |
| availability | String | Stock status |
| shippingCost | Number/null | Shipping cost from best shop |
| shopCount | Number | Total shops offering this product |
| priceRange | Object | { min, max } prices across all shops |
| rating | Number/null | Average rating (0-5) |
| reviewCount | Number/null | Number of reviews |
| imageUrl | String | Product image URL |
| scrapedAt | String | ISO 8601 timestamp |
Example output
{
"productId": "2468780",
"productName": "Apple iPhone 15 Pro 128GB",
"productUrl": "https://www.billiger.de/baseproducts/2468780-apple-iphone-15-pro",
"category": "Smartphones",
"currentPrice": 1099.00,
"originalPrice": null,
"discount": null,
"currency": "EUR",
"shopName": "MediaMarkt",
"shopUrl": "https://www.billiger.de/shop/mediamarkt",
"availability": "Auf Lager",
"shippingCost": 0,
"shopCount": 23,
"priceRange": {
"min": 1099.00,
"max": 1249.00
},
"rating": 4.7,
"reviewCount": 1523,
"imageUrl": "https://cdn.billiger.de/...",
"scrapedAt": "2024-10-23T21:30:00.000Z"
}
Pricing
Pay-per-result model:
- $0.002 - $0.004 per product scraped
- Example: 100 products = $0.20 - $0.40
- Transparent pricing based on actual results
Cost factors:
- Datacenter proxies (SHADER): Lower cost
- Residential proxies: Higher reliability for large runs
How to use
1. Simple keyword search
{
"query": "laptop gaming",
"maxItems": 50
}
2. Price range filter
{
"query": "bluetooth headphones",
"maxItems": 100,
"priceMin": 50,
"priceMax": 200
}
3. Category scraping
{
"categoryUrl": [
"https://www.billiger.de/kategorie/smartphones"
],
"maxItems": 200,
"minShops": 5
}
4. Direct product URLs
{
"productUrls": [
"https://www.billiger.de/baseproducts/2468780-apple-iphone-15-pro",
"https://www.billiger.de/baseproducts/2345678-samsung-galaxy-s24"
]
}
Automation Integration
n8n Workflow
- Add "HTTP Request" node
- Set to POST:
https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs - Add authentication header with API token
- Process flat JSON output directly
Zapier Integration
- Use "Webhooks by Zapier" trigger
- Connect to Apify webhook output
- Map fields to Google Sheets, Airtable, etc.
Scheduled Monitoring
- Use Apify Scheduler (built-in)
- Run daily/weekly for price tracking
- Get notifications via webhook when prices drop
FAQ
Q: Can I scrape all categories? A: Yes! Unlike tech-only competitors, Billiger.de covers everything from electronics to pet food (5,000+ categories).
Q: How often can I run this? A: As often as needed. Use Apify Scheduler for automated runs (daily/hourly).
Q: What about anti-bot protection? A: The scraper uses Playwright with stealth plugin and proxies to avoid detection. Residential proxies recommended for large runs.
Q: Can I track price changes over time? A: Yes! Run the actor on a schedule and compare historical data. Each result includes a timestamp.
Q: Is this legal? A: Scraping publicly available price comparison data for personal/commercial use is generally legal in Germany. Respect robots.txt and rate limits.
Q: What if a shop doesn't exist anymore? A: The scraper handles missing/outdated data gracefully by skipping invalid entries.
Q: Can I use this with residential proxies?
A: Yes! Set proxyType: "RESIDENTIAL" for better reliability (costs more but higher success rate).
Technical Details
- Runtime: Node.js 20 with Playwright
- Browser: Chromium with stealth plugin
- Rate limiting: ~10 requests/minute to avoid detection
- Session handling: Automatic cookie management
- Error handling: Per-product try-catch (continues on failures)
- German format support: Handles "1.234,56 €" price format
Support
For issues, feature requests, or questions:
- Check Apify Console logs for errors
- Verify input format matches schema
- Test with small
maxItemsfirst (5-10 products) - Enable residential proxies if getting blocked
Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Test locally (no proxies)
apify run -p
# Deploy to Apify
apify push
🔗 Explore More of Our Actors
📊 Price Comparison (German Market)
| Actor | Description |
|---|---|
| Geizhals Scraper Pro | Scrape Geizhals.de for tech product prices and specifications |
| Testberichte Scraper Pro | Extract product reviews and ratings from Testberichte.de |
| Chip.de Bestenlisten Scraper | Scrape Chip.de best-of lists for tech product rankings |
🚗 Automotive (German Market)
| Actor | Description |
|---|---|
| German Car Scraper | Scrape AutoScout24 and Mobile.de for vehicle listings |
| eBay Kleinanzeigen Scraper | Extract classified ads from eBay Kleinanzeigen |
🛒 E-commerce
| Actor | Description |
|---|---|
| Shopify Scraper Pro | Extract complete Shopify product data with variants and sales estimates |
| eBay Scraper (PPR) | Extract eBay products with seller analytics and engagement metrics |
| Amazon Reviews Scraper | Extract Amazon customer reviews for sentiment analysis |
Keywords
billiger.de, price comparison, germany, e-commerce, price tracking, competitor analysis, market research, automation, n8n, zapier, make, price monitoring, german marketplace, online shopping, price scraper