Standvirtual Portugal Car Scraper
Pricing
Pay per event
Standvirtual Portugal Car Scraper
Scrape used-car listings from standvirtual.com, Portugal's #1 car marketplace (OLX/Adevinta group) — price (EUR), make, model, year, mileage, fuel, gearbox, engine power, seller (dealer/private), location, and photos. Export to JSON or CSV; optionally enrich with the full Portuguese description.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
🎯 What this scrapes
Standvirtual.com is Portugal's largest car marketplace and the default place Portuguese buyers and dealers trade used cars (carros usados). It publishes no public API. This Actor wraps a polite scrape of the carros listing — paste a filtered Standvirtual search URL or use the default listing page, and pull every listing's price (EUR), make/model/version, year, mileage (km), fuel, gearbox, engine power and size, seller type, location, and photos. Flip on detail enrichment and we fetch each listing's page for the full Portuguese description, body type, and colour. Built on curl-cffi with browser TLS impersonation.
🔥 What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Used-car price analytics — track asking prices by make/model/year across the Portuguese market.
- Dealer inventory monitoring — diff successive runs to spot new arrivals and price cuts at specific stands.
- Market research — aggregate fuel-type and gearbox mix to gauge EV/hybrid adoption in Portugal.
- Lead generation — build a directory of car dealers from
seller_name+location. - Arbitrage / sourcing — find under-priced listings filtered by mileage, year, and power.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchUrl | string | no | '' | Full standvirtual.com search/results URL with your filters already applied (e.g. https://www.standvirtual.com/carr |
maxResults | integer | no | 50 | Hard cap on dataset rows. Standvirtual paginates 32 listings per page; the Actor walks pages until this cap or the last |
enrichDetails | boolean | no | True | Fetch each listing's detail page for the full Portuguese description, body type, and colour. The search payload already |
proxyConfiguration | object | no | {'useApifyProxy': True, 'apifyProxyGroups': ['RESIDENTIAL']} | Apify Proxy spec. Portuguese residential exits are safest against Standvirtual's anti-bot. |
Example input
{"searchUrl": "","maxResults": 5,"enrichDetails": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
listing_id | string | Standvirtual advert ID. |
listing_url | string | Absolute URL to the listing detail page. |
title | string | Listing headline (make + model + version). |
make | ['string', 'null'] | Car manufacturer (e.g. BMW, Renault, Mercedes-Benz). |
model | ['string', 'null'] | Model name (e.g. Clio, Serie 3). |
version | ['string', 'null'] | Version / trim line. |
year | ['integer', 'null'] | Year of first registration. |
price | ['integer', 'null'] | Asking price as an integer in the listing currency. |
currency | ['string', 'null'] | ISO-4217 currency code read from the listing — typically EUR. |
mileage_km | ['integer', 'null'] | Odometer reading in kilometres. |
fuel_type | ['string', 'null'] | Fuel type (Gasolina, Diesel, Hibrido, Electrico). |
transmission | ['string', 'null'] | Gearbox (Manual / Automatica). |
engine_power_hp | ['integer', 'null'] | Engine power in horsepower (cv). |
engine_size_cc | ['integer', 'null'] | Engine displacement in cubic centimetres. |
body_type | ['string', 'null'] | Body type (e.g. Utilitario, SUV, Carrinha). Enrichment-only. |
color | ['string', 'null'] | Exterior colour. Enrichment-only. |
first_registration | ['string', 'null'] | First-registration year as a string. |
location | ['string', 'null'] | City / municipality of the listing. |
region | ['string', 'null'] | Portuguese district / region (e.g. Lisboa, Porto). |
seller_type | ['string', 'null'] | private or dealer. |
seller_name | ['string', 'null'] | Dealer / stand name when present. |
photo_urls | array | List of listing photo URLs. |
description | ['string', 'null'] | Full Portuguese listing description (plain text). Enrichment-only. |
posted_date | ['string', 'null'] | ISO timestamp when the listing was created. |
scraped_at | string | ISO timestamp when this row was recorded. |
Example output
{"listing_id": "8097550709","listing_url": "https://www.standvirtual.com/carros/anuncio/renault-clio-ver-1-6-e-tech-intens-ID8Q0uQB.html","title": "Renault Clio 1.6 E-Tech Intens","make": "Renault","model": "Clio","version": "1.6 E-Tech Intens","year": 2021,"price": 14750,"currency": "EUR","mileage_km": 120000,"fuel_type": "H\u00edbrido (Gasolina)","transmission": "Autom\u00e1tica","engine_power_hp": 140,"engine_size_cc": 1598,"body_type": "Utilit\u00e1rio","color": "Prateado","first_registration": "2021","location": "Cascais e Estoril","region": "Lisboa","seller_type": "dealer","seller_name": "Stand Cascais","photo_urls": ["https://ireland.apollo.olxcdn.com/v1/files/nc2mmgv80b6c-STDVTLPT/image;s=640x480"],"description": "RENAULT CLIO E-TECH INTENS 140 CV AUTOM\u00c1TICO ...","posted_date": "2026-06-01T21:07:24Z","scraped_at": "2026-06-02T00:00:00+00:00"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.05 | One-off warm-up charge per run |
result-row | $0.002 | PPE event |
Example: 1 000 results at the rates above ≈ $2.05. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
Standvirtual paginates 32 listings per page and very deep result sets eventually stop returning new pages — large queries cap out well before tens of thousands of rows. Body type and colour are only available via detail enrichment. Detail enrichment adds one request per listing and roughly doubles run time. Standvirtual is protected by DataDome; a residential proxy is strongly recommended.
❓ FAQ
Do I need a Standvirtual account or API key?
No. Standvirtual offers no public API. This Actor scrapes the public carros listing politely — see the ToS Notice in the README.
How do I scrape a filtered search?
Apply your filters on standvirtual.com, copy the resulting URL from your browser, and paste it into searchUrl. We walk the result pages from there.
Is the detail enrichment worth it?
It adds the full Portuguese description, body type, and colour per listing at the cost of one extra request each. Price, specs, seller, location, and photos all come from the search payload — set enrichDetails to false to halve requests.
What currency are prices in?
Standvirtual prices are in EUR; the Actor reads the currency code from each listing and reports it in currency. Mileage is always in kilometres.
Why does Standvirtual need a residential proxy?
Standvirtual sits behind DataDome anti-bot. Datacenter IPs get challenged; Portuguese residential exits sail through. The Actor defaults to RESIDENTIAL and rotates sessions on any block.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.