BOVAG Vehicle Listings Scraper
Pricing
Pay per event
BOVAG Vehicle Listings Scraper
Scrape public viaBOVAG car listings with prices, specs, mileage, images, warranty labels, and dealer contact details.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape public vehicle listings from viaBOVAG.nl and export structured Dutch marketplace data for analysis, monitoring, pricing, and lead workflows.
The actor reads viaBOVAG search or category URLs, paginates the public listing results, extracts the server-rendered Next.js listing data, and saves one dataset row per vehicle.
What does BOVAG Vehicle Listings Scraper do?
BOVAG Vehicle Listings Scraper collects public vehicle listings from viaBOVAG search pages.
It can extract:
- ๐ Listing title and URL
- ๐ถ Price and VAT flag
- ๐ท๏ธ Make, model, body type, fuel, transmission, color, and year
- ๐งญ Mileage and mileage unit
- ๐ข Dealer name, city, phone, and website
- ๐ผ๏ธ Listing image URL
- โ BOVAG, warranty, return warranty, service, and certainty labels
- ๐ External dealer advertisement URL when available
- ๐ Scrape timestamp and source page context
Who is it for?
This actor is useful for teams that need recurring visibility into the Dutch vehicle market.
- ๐ Auto dealers monitor comparable inventory and pricing.
- ๐ Pricing analysts benchmark mileage, age, and asking prices.
- ๐ช Marketplace operators compare supply across categories and regions.
- ๐งพ Lead generation teams collect dealer contact details from public listings.
- ๐ Researchers analyze vehicle mix, fuel types, warranties, and market availability.
- ๐งฐ Data teams feed normalized vehicle listings into BI tools or databases.
Why use this viaBOVAG scraper?
viaBOVAG is a major Dutch vehicle marketplace. This MVP focuses on public car search/listing pages under /auto, where the listing data is server-rendered and reliable.
Manual browsing works for one-off shopping, but it is slow when you need hundreds or thousands of structured rows.
This actor helps you:
- Save time on repetitive marketplace checks
- Export data in JSON, CSV, Excel, XML, RSS, or HTML through Apify datasets
- Run scheduled monitoring jobs
- Build alerts for price and inventory changes
- Compare dealers and regions
- Connect results to external tools via the Apify API
How it works
The actor uses an HTTP-first approach.
- You provide one or more viaBOVAG search URLs.
- The actor downloads the public HTML.
- It reads listing data from the
__NEXT_DATA__JSON embedded in the page. - It paginates by adding or updating the
pquery parameter. - It saves clean vehicle listing rows to the default dataset.
No browser automation is used for the MVP, which keeps runs fast and cost-efficient.
Supported start URLs
Use public viaBOVAG URLs copied from the website.
Examples:
https://www.viabovag.nl/autohttps://www.viabovag.nl/auto?brandstof=benzine
Filtered car URLs are supported as long as they return public listing results on viaBOVAG.
Data you can extract
| Field | Description |
|---|---|
listingUrl | Public viaBOVAG listing URL |
title | Listing title as shown by viaBOVAG |
price | Asking price in EUR |
make | Vehicle brand |
model | Vehicle model |
year | Registration/build year when available |
mileage | Mileage value |
fuelTypes | Fuel labels such as benzine, diesel, hybrid, electric |
transmission | Transmission type |
bodyType | Body style |
dealerName | Dealer or seller company name |
dealerCity | Dealer city |
imageUrls | Listing image URLs |
warrantyLabels | Warranty and BOVAG trust labels |
How much does it cost to scrape viaBOVAG vehicle listings?
This actor uses pay-per-event pricing with a small run start fee and a per-listing event.
Formula-derived BRONZE pricing from cloud validation is $0.000035757 per listing (about $0.035757 per 1,000 listings) plus a $0.005 run start fee. Higher subscription tiers receive automatic per-listing discounts.
Apify shows the exact maximum charge before you start a run.
Input
The actor input has two main fields.
{"startUrls": [{ "url": "https://www.viabovag.nl/auto" }],"maxItems": 50}
startUrls
A list of viaBOVAG search or category URLs.
Use the website to apply filters, then copy the resulting URL into the actor input.
maxItems
Maximum number of vehicle listings to save across all start URLs.
Set a low number for quick checks and a higher number for market analysis.
Output
Each dataset item is one vehicle listing.
{"listingUrl": "https://www.viabovag.nl/auto/aanbod/example","title": "BMW 1 Serie 118i Executive Edition","price": 24450,"priceCurrency": "EUR","make": "BMW","model": "1-Serie","year": 2020,"mileage": 84437,"fuelTypes": ["benzine"],"transmission": "Automatisch","bodyType": "hatchback","dealerName": "Example Dealer","dealerCity": "ROTTERDAM","imageUrls": ["https://.../media.0001.jpg"],"scrapedAt": "2026-06-09T10:00:00.000Z"}
Tips for best results
- Start with
maxItems: 50to confirm that your filters return the expected listings. - Use specific filtered
/autoURLs for focused market segments. - Run separate actor runs for very different categories if you want easier dataset comparison.
- Schedule daily or weekly runs for price and inventory monitoring.
- Deduplicate by
listingUrlin your downstream database.
Example use cases
Dealer price monitoring
Track competing listings for a brand, model, fuel type, and mileage range.
Inventory intelligence
Measure how many public listings exist for specific segments of the Dutch vehicle market.
Lead enrichment
Collect dealer names, cities, websites, and public phone numbers attached to listings.
Warranty analysis
Compare availability of BOVAG, return warranty, service, and certainty labels by vehicle category.
Integrations
You can connect this scraper to:
- Google Sheets through Apify integrations
- Make or Zapier for alerts
- BigQuery, Snowflake, or PostgreSQL through dataset exports
- BI dashboards for price trend reports
- CRM tools for dealer research workflows
- Webhooks that fire when a scheduled run finishes
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/bovag-vehicle-listings-scraper').call({startUrls: [{ url: 'https://www.viabovag.nl/auto' }],maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 3));
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/bovag-vehicle-listings-scraper').call(run_input={'startUrls': [{'url': 'https://www.viabovag.nl/auto'}],'maxItems': 50,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items[:3])
cURL
curl "https://api.apify.com/v2/acts/automation-lab~bovag-vehicle-listings-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://www.viabovag.nl/auto"}],"maxItems":50}'
MCP usage
Use this actor from MCP-compatible tools through Apify MCP.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/bovag-vehicle-listings-scraper
Claude Code setup:
$claude mcp add apify-bovag "https://mcp.apify.com/?tools=automation-lab/bovag-vehicle-listings-scraper"
Generic MCP JSON configuration:
{"mcpServers": {"apify-bovag": {"url": "https://mcp.apify.com/?tools=automation-lab/bovag-vehicle-listings-scraper"}}}
Example prompts:
- "Scrape 50 viaBOVAG car listings and summarize the top makes by count."
- "Get public viaBOVAG listings from this filtered URL and list the cheapest cars."
- "Monitor this viaBOVAG search weekly and tell me when new BMW listings appear."
Scheduling
Apify lets you schedule this actor without writing infrastructure.
Common schedules:
- Daily inventory snapshots
- Weekly price benchmarking
- Monthly market reports
- Hourly checks for narrow filtered URLs
Data quality notes
The actor extracts the public data embedded by viaBOVAG in the listing search page.
Some fields may be missing when viaBOVAG does not provide them for a specific listing.
For example, not every listing has the same warranty labels, dealer website, image metadata, or external advertisement URL.
Limits and performance
The actor is designed for public listing pages and polite pagination.
If a URL returns no public results on the website, the actor will also return no dataset rows.
Very large runs should use realistic limits and scheduled batches.
Troubleshooting
Why did my run return fewer listings than maxItems?
The filtered viaBOVAG search may have fewer public listings than your limit, or pagination may stop when the source returns an empty page.
Why are some fields null?
viaBOVAG does not expose every attribute on every listing. Null means the field was not available in the public search result data.
Can I scrape detail pages too?
The MVP focuses on search/listing pages for speed and reliability. Detail-page enrichment can be added later if it is needed and remains publicly accessible.
Legality
This actor extracts publicly available listing data. You are responsible for using the data in compliance with applicable laws, viaBOVAG terms, and privacy rules.
Do not use scraped data for spam, harassment, or unlawful profiling.
Related scrapers
Other automation-lab actors you may find useful:
- https://apify.com/automation-lab/carsales-scraper
- https://apify.com/automation-lab/autotrader-scraper
- https://apify.com/automation-lab/marktplaats-scraper
- https://apify.com/automation-lab/2dehands-2ememain-scraper
FAQ
Does this actor require a viaBOVAG account?
No. It is built for public search/category listing pages.
Does it use a browser?
No. It reads server-rendered data from HTML, which is faster and cheaper than browser automation.
Can I use filtered URLs?
Yes. Apply filters on viaBOVAG, copy the URL, and use it as a start URL.
What is the best unique key?
Use listingUrl or listingId for deduplication.
Can I run it on a schedule?
Yes. Use Apify schedules to run recurring monitoring jobs.
What export formats are supported?
Apify datasets support JSON, CSV, Excel, XML, HTML, and RSS exports.