Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Standvirtual API page →
Classifieds & Second-hand

Standvirtual API & Scraper

Standvirtual (standvirtual.com) is Portugal's largest car marketplace, with about 43,600 cars online on 2026-10-15.

3 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

`search` lists them the way the site does: by make, model or series, district, free-text keyword, and the site's own filters for price, first registration year, mileage, engine power and size, fuel, gearbox, body type, driven wheels, national or imported, VAT deductible, new or used and private seller or dealer, in nine sort orders, 32 ads per page with the site's total. Each row carries the listing id, title, link, price in EUR, standvirtual's below / in / above market price indicator, year, mileage with the site's own printed figure beside it, fuel, gearbox, power, engine size, town and district, the seller type the site publishes, the dealer's name and page, and whether the ad is a paid promoted placement. `listing` returns one offer in full: the price as structured data and as the page prints it, price labels such as fixed price or trade-in accepted, every printed specification, equipment by group, all photos, the description, VAT-deductible and warranty fields, and the seller with name, dealer page, website, active ad count and published location. `makes` returns the site's own make and model register with live ad counts, so a search never has to guess a slug.

Reference

What a Standvirtual field actually contains

Fields that read differently from how they look. Every row was measured against live standvirtual.com responses on 2026-10-14 and 2026-10-15.

FieldWhat it holds
listing_idThe ID… code at the end of the offer's web address (for example ID8Q0I6X). Pass it unchanged to listing. Search to listing returned the same id, price, make, model, year, mileage and power on 20 of 20 offers checked. The numeric ad_id does not open an offer.
model, seriesStandvirtual has two model levels for BMW, Mercedes-Benz, Lexus and Porsche: series is the family (Série 3, Classe C) and model is the car (320, C 220). For other makes model is the model (Golf, Clio) and series is empty. The offer page itself prints the family under the heading Modelo; this API keeps the two in fixed fields on every surface.
price, price_raw, price_is_placeholderprice is the asking price in EUR. Some private ads are published at 0 EUR as a placeholder; those return price null with price_is_placeholder true and price_raw "0", never 0 as a price.
price_printed, price_mismatchprice_printed is the price exactly as the offer page prints it ("Preço: 39 800 EUR"). price_mismatch is true when the printed and structured prices disagree; it was false on all 20 offers checked.
price_evaluationStandvirtual's own market price indicator on each search row: BELOW, IN, ABOVE or NONE when the site does not rate the ad.
mileage_km, mileage_displaymileage_km is returned only when it equals the number in the site's own printed figure ("28 000 km"), which is returned beside it.
seller.kindprivate, dealer or crosslisted, as the site publishes it. On offer pages dealers with a physical stand are published as STAND (seller.type_raw) and returned as dealer.
is_promotedtrue when the ad is a paid promoted placement in the result list. Promoted ads stay in the position the site gives them.
page_beyond_lastA page past the last one returns no rows, page_beyond_last true and the real total, instead of repeating the last page.

An offer read from Portugal and from the United States on 2026-10-14 was identical field by field, and the same search read from Portugal and from outside Portugal returned 32 of 32 rows with the same values. A make, model, series or district the site does not recognise is refused with INVALID_PARAM; the site itself would answer with every car in Portugal.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/standvirtual/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "make": "vw",
    "model": "golf"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "standvirtual",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 3340.5,
    "record_count": 32,
    "bytes": 1475790,
    "cache_hit": false,
    "stop_reason": "complete",
    "upstream_requests": 1,
    "total_results": 500,
    "page": 1,
    "source_page_rows": 32,
    "charged_credits": 3,
    "version": "1.0.0",
    "request_id": "b4a7b1ae6f45495d",
    "queue_ms": 1.9,
    "fetched_at": "2026-10-18T11:42:05.237Z"
  },
  "data": {
    "results": [
      {
        "listing_id": "ID8Q19Ui",
        "ad_id": "8097708542",
        "title": "VW Golf 1.5 TSI e-Hybrid GTE DSG",
        "subtitle": null,
        "url": "https://www.standvirtual.com/carros/anuncio/vw-golf-ver-1-5-tsi-e-hybrid-gte-dsg-ID8Q19Ui.html",
        "created_at": "2026-10-09T09:21:39Z",
        "price": 35490,
        "price_raw": "35490",
        "currency": "EUR",
        "price_is_placeholder": null,
        "price_mismatch": null,
        "price_is_gross": true,
        "price_gross": null,
        "price_net": null,
        "price_badges": null,
        "price_evaluation": "BELOW",
        "price_drop_previous": null,
        "make": "VW",
        "make_slug": "vw",
        "model": "Golf",
        "model_slug": "golf",
        "series": null,
        "series_slug": null,
        "version": "1.5 TSI e-Hybrid GTE DSG",
        "year": 2025,
        "mileage_km": 16800,
        "mileage_display": "16800 km",
        "fuel_type": {
          "value": "plugin-hybrid",
          "label": "Híbrido Plug-In"
        },
        "gearbox": {
          "value": "automatic",
          "label": "Automática"
        },
        "engine_power_cv": 272,
        "engine_capacity_cm3": 1498,
        "field_mismatch": null,
        "location": {
          "city": "Eiras e São Paulo de Frades",
          "region": "Coimbra",
          "country": "PT"
        },
        "seller": {
          "kind": "dealer",
          "uuid": "6ca3c509-194b-457b-a52b-100e1e7eb1ce",
          "dealer_id": "6719407",
          "dealer_name": "Auto Maran S.A.",
          "dealer_url": "https://automaran.standvirtual.com",
          "is_credit_intermediary": true
        },
        "is_promoted": false,
        "promotions": [
          "bump_up",
          "export_olx"
        ],
        "badges": [
          "WARRANTY"
        ],
        "brand_program": "Das WeltAuto",
        "image": "https://ireland.apollo.olxcdn.com/v1/files/pku10z9rynav2-STDVTLPT/image;s=640x480"
      },
      {
        "listing_id": "ID8Q0Cdv",
        "ad_id": "8097579038",
        "title": "VW Golf 1.4 TSI GTE+ DSG",
        "subtitle": null,
        "url": "https://www.standvirtual.com/carros/anuncio/vw-golf-ver-1-4-tsi-gteplus-dsg-ID8Q0Cdv.html",
        "created_at": "2026-10-15T11:09:22Z",
        "price": 34500,
        "price_raw": "34500",
        "currency": "EUR",
        "price_is_placeholder": null,
        "price_mismatch": null,
        "price_is_gross": true,
        "price_gross": null,
        "price_net": null,
        "price_badges": null,
        "price_evaluation": "IN",
        "price_drop_previous": null,
        "make": "VW",
        "make_slug": "vw",
        "model": "Golf",
        "model_slug": "golf",
        "series": null,
        "series_slug": null,
        "version": "1.4 TSI GTE+ DSG",
        "year": 2024,
        "mileage_km": 18915,
        "mileage_display": "18915 km",
        "fuel_type": {
          "value": "plugin-hybrid",
          "label": "Híbrido Plug-In"
        },
        "gearbox": {
          "value": "automatic",
          "label": "Automática"
        },
        "engine_power_cv": 245,
        "engine_capacity_cm3": 1395,
        "field_mismatch": null,
        "location": {
          "city": "Caldelas",
          "region": "Braga",
          "country": "PT"
        },
        "seller": {
          "kind": "dealer",
          "uuid": "c5fd805e-0375-4418-85ef-2cdee40efe5c",
          "dealer_id": "8048836",
          "dealer_name": "AutoMika automóveis unipessoal lda",
          "dealer_url": "https://AutoMikaautomoveis.standvirtual.com",
          "is_credit_intermediary": true
        },
        "is_promoted": false,
        "promotions": [
          "export_olx",
          "bump_up"
        ],
        "badges": [
          "WARRANTY"
        ],
        "brand_program": null,
        "image": "https://ireland.apollo.olxcdn.com/v1/files/h24of86wbl5e3-STDVTLPT/image;s=640x480"
      },
      {
        "listing_id": "ID8Q13L0",
        "ad_id": "8097684902",
        "title": "VW Golf 2.0 TSI GTI DSG",
        "subtitle": null,
        "url": "https://www.standvirtual.com/carros/anuncio/vw-golf-ver-2-0-tsi-gti-dsg-ID8Q13L0.html",
        "created_at": "2026-10-08T10:06:15Z",
        "price": 31950,
        "price_raw": "31950",
        "currency": "EUR",
        "price_is_placeholder": null,
        "price_mismatch": null,
        "price_is_gross": true,
        "price_gross": null,
        "price_net": null,
        "price_badges": null,
        "price_evaluation": "BELOW",
        "price_drop_previous": null,
        "make": "VW",
        "make_slug": "vw",
        "model": "Golf",
        "model_slug": "golf",
        "series": null,
        "series_slug": null,
        "version": "2.0 TSI GTI DSG",
        "year": 2022,
        "mileage_km": 60000,
        "mileage_display": "60000 km",
        "fuel_type": {
          "value": "gaz",
          "label": "Gasolina"
        },
        "gearbox": {
          "value": "automatic",
          "label": "Automática"
        },
        "engine_power_cv": 245,
        "engine_capacity_cm3": 1984,
        "field_mismatch": null,
        "location": {
          "city": "Lisboa",
          "region": "Lisboa",
          "country": "PT"
        },
        "seller": {
          "kind": "dealer",
          "uuid": "fb346f6f-4aeb-4049-80b1-bdf78e16fa05",
          "dealer_id": "10935448",
          "dealer_name": "Luso Impor",
          "dealer_url": "https://lusoimpor.standvirtual.com",
          "is_credit_intermediary": false
        },
        "is_promoted": false,
        "promotions": [
          "bump_up",
          "export_olx"
        ],
        "badges": [
          "WARRANTY"
        ],
        "brand_program": null,
        "image": "https://ireland.apollo.olxcdn.com/v1/files/9ehhfjx3po741-STDVTLPT/image;s=640x480"
      }
    ],
    "count": 32,
    "total_results": 500,
    "total_pages": 16,
    "page": 1,
    "page_size": 32,
    "has_more": true,
    "page_beyond_last": false,
    "source_page_rows": 32,
    "rows_dropped": 0,
    "sort": "relevance",
    "filters_applied": {
      "category_id": "29",
      "filter_enum_make": "vw",
      "filter_enum_model": "golf"
    },
    "search_url": "https://www.standvirtual.com/carros/vw?search%5Bfilter_enum_model%5D=golf&search%5Border%5D=relevance_web"
  }
}
Actions

What the Standvirtual API does

ActionDescriptionConcrete use caseKey params
searchSearch standvirtual.com car ads the way its visitors do: make, model or series, Portuguese district, free-text keyword, and the site's own filters — price, first registration year, mileage, engine power and capacity, fuel, gearbox, body type, driven wheels, national or imported, VAT deductible, new or used, private seller or dealer. 32 ads per page with the price in EUR, standvirtual's below/in/above-market price indicator, year, mileage with the site's own printed figure beside it, fuel, gearbox, power, engine size, town and district, the seller type the site publishes, the dealer's name and page, and whether the ad is a paid promoted placement. Every filter is checked against what the site says it applied; a make, model or district the site does not recognise is refused instead of quietly widening to every car. Total result count and page count are returned.Price-intelligence teams call search to search standvirtual.com car ads the way its visitors do.make, model, series, location, query, ...
listingThe full standvirtual offer from a search row's listing_id or the offer URL: title, price in EUR checked against the price the page prints, price labels (fixed, negotiable, trade-in accepted), make, model, series, version, first registration year and month, mileage, fuel, gearbox, power, engine size, body, colour, doors, seats, drive, new/used, origin, VAT-deductible flag, warranty, the complete printed specification list, equipment by group, all photos, the seller's description, the seller (private or dealer, name, dealer page, website, active ads, badges) and its published location with postal code and map point. Phone numbers are published by the site only in encrypted form and are not returned. A withdrawn or unknown offer answers NOT_FOUND.Classifieds aggregators call listing to get the full standvirtual offer from a search row's listing_id or the offer URL.listing_id
makesstandvirtual's own make and model register with live ad counts, read from the site's filter catalogue: no parameter -> every make (151) with its slug and count; make -> that make's models (or series for BMW, Mercedes-Benz, Lexus, Porsche) with has_submodels; make + series -> the models inside the series. Use it to get a slug right before searching.Resale and arbitrage tools call makes to get standvirtual's own make and model register with live ad counts, read from the site's filter c….make, series
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/standvirtual/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"make":"vw","model":"golf"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.standvirtual.search with {"make":"vw","model":"golf"}.
Use cases

Who uses this API and why

  • Track asking prices of used cars in Portugal by make, model, year and mileage.
  • Compare dealer and private-seller prices for the same model and district.
  • Collect new ads every day, newest first, and read each offer in full.
  • Find under-priced cars with the site's own below-market indicator.
  • Build dealer lists with stand locations, websites and active ad counts.
FAQ

Questions developers ask before integrating

Do I need a Standvirtual account?

No. Everything is read logged out, and you call reefapi.com from anywhere.

How do I find the right make or model name?

Call makes. Without parameters it returns all 151 makes with live ad counts (Volkswagen is vw); with make it returns that make's models, and with make and series the models inside a series such as BMW serie-3.

Can I separate private sellers from dealers?

Yes, with seller_type. On 2026-10-15 the 43,632 cars split into 7,380 from private sellers and 36,252 from dealers. Every row also carries seller.kind.

Can I search one district?

Yes, with location: lisboa, porto, braga, aveiro, setubal, faro and the other districts. On 2026-10-15 Lisboa had 13,167 cars and BMW Série 3 in Lisboa 220.

Is there a free-text search?

Yes, query is applied by the site's own keyword search; on 2026-10-15 golf matched 681 cars.

Do you return the seller's phone number?

No. The offer page publishes phone numbers only in encrypted form, so listing returns the seller's name, dealer page, website and published location instead.

Does the price include VAT?

The price is the asking price the ad publishes. vat_deductible=true finds ads where VAT is deductible (8,887 on 2026-10-15), and rows carry price_is_gross as the site publishes it.

How far can I page?

Through the whole result set at 32 ads per page; total_results and total_pages come with every page.

What is the Standvirtual API?

Standvirtual API is a ReefAPI endpoint group for portugal's biggest car marketplace: used and new cars with price in eur, market price indicator, year, mileage, fuel, power and whether a dealer or a private person is selling. It returns live JSON through POST requests under /standvirtual/v1.

Is the Standvirtual API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Standvirtual calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Standvirtual login or account?

No login to Standvirtual is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Standvirtual data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Standvirtual API use?

Standvirtual actions currently cost 3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Standvirtual from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call standvirtual actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / standvirtual

Standvirtual

Portugal's biggest car marketplace: used and new cars with price in EUR, market price indicator, year, mileage, fuel, power and whether a dealer or a private person is selling.

base /standvirtual/v13 endpoints
post/standvirtual/v1/listing3 credits

The full standvirtual offer from a search row's listing_id or the offer URL: title, price in EUR checked against the price the page prints, price labels (fixed, negotiable, trade-in accepted), make, model, series, version, first registration year and month, mileage, fuel, gearbox, power, engine size, body, colour, doors, seats, drive, new/used, origin, VAT-deductible flag, warranty, the complete printed specification list, equipment by group, all photos, the seller's description, the seller (private or dealer, name, dealer page, website, active ads, badges) and its published location with postal code and map point. Phone numbers are published by the site only in encrypted form and are not returned. A withdrawn or unknown offer answers NOT_FOUND.

ParameterAllowed / rangeDescription
listing_idrequired—The `listing_id` of a search row (ID8Q0I6X — the token at the end of the offer URL) or the full standvirtual offer URL. The numeric ad_id does not address an offer page and is refused.
Try in playground →
post/standvirtual/v1/makes3 credits

standvirtual's own make and model register with live ad counts, read from the site's filter catalogue: no parameter -> every make (151) with its slug and count; make -> that make's models (or series for BMW, Mercedes-Benz, Lexus, Porsche) with has_submodels; make + series -> the models inside the series. Use it to get a slug right before searching.

ParameterAllowed / rangeDescription
makeoptional—Omit for the make list; give a make for its model list.
seriesoptional—With make, a series (has_submodels=true in the model list) to read its sub-models (serie-3 -> 316, 318, 320 …).
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.