# Autovit.ro Used Car Listings Scraper (`extractify-labs/autovit-ro-cars`) Actor

Scrape every autovit.ro used-car listing - make, model, year, mileage, RON/EUR price, seller & location. Pay per result, no proxy. Anunturi auto RO.

- **URL**: https://apify.com/extractify-labs/autovit-ro-cars.md
- **Developed by:** [Extractify Labs](https://apify.com/extractify-labs) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🚗 Autovit.ro Used Car Listings Scraper

Pull every used car on **autovit.ro**, Romania's biggest car marketplace, as one clean row per advert. You get the full spec sheet, the seller, the price in RON or EUR, the location, the photos and the VIN signal. You pay only for the rows you actually pull. No monthly subscription, and no proxy to go out and buy.

You don't supply any URLs. The Actor walks the whole **Autoturisme** (passenger cars / *mașini second-hand*) catalogue on its own, about **43,700 live adverts**, straight off autovit.ro's own public listings data layer. It hands back **one flat row per car** with up to **127 fields** each.

Want a slice instead of everything? Filter by make, model, year, price, mileage, fuel, gearbox, body type and seller type, pick how results are sorted, and set how many cars to collect. Leave the filters empty and you get the entire catalogue. Need the chassis number? Flip on the opt-in **VIN** toggle and the VIN and the first-registration date come back in cleartext, on a plain no-proxy run.

> 🔑 Romanian keywords: *anunțuri auto România, mașini second-hand, autoturisme, dealer auto, preț mașini, scraper autovit, listări auto, VIN auto, date vânzător.*

---

### 📌 Pe scurt (Română)

Acest Actor extrage anunțurile de mașini second-hand de pe **autovit.ro** (categoria **Autoturisme**) prin API-ul public al site-ului: aproximativ **43.700 de anunțuri**, câte un rând pentru fiecare anunț, cu până la **127 de câmpuri** fiecare. Fiecare rând include marca, modelul, anul, kilometrajul, prețul (RON sau EUR), combustibilul, cutia de viteze, caroseria, dotările, fotografiile, coordonatele geografice, datele vânzătorului și indicatorul de evaluare a prețului.

Poți filtra după marcă, model, an, preț, kilometraj, combustibil, cutie de viteze, caroserie și tip vânzător, alegi modul de sortare și câte mașini colectezi. Plătești doar pentru rândurile extrase, fără abonament și fără proxy de cumpărat.

VIN-ul și data primei înmatriculări sunt afișate de site doar după un pas de dezvăluire. Le poți obține în clar cu opțiunea (dezactivată implicit) **`extractVin`** (VIN + data înmatriculării), cu o cerere suplimentară per anunț, pe o rulare fără proxy. Numărul de telefon al vânzătorului este publicat doar pe pagina HTML de detaliu (blocată pentru serverele Apify), așa că Actorul nu îl decodează în clar: primești doar indicatorul de prezență (`phone_available`) și token-ul criptat al site-ului (`phone_token`). Numele și locația vânzătorului rămân în clar și sunt date cu caracter personal: folosește-le conform temeiului tău legal (GDPR).

Acoperă **doar Autoturisme** (mașini de pasageri). Alte categorii de pe autovit.ro (autoutilitare, camioane, motociclete, piese, remorci, utilaje) nu sunt incluse.

> Instrument independent, neoficial. Fără nicio legătură cu autovit.ro sau OLX Group.

---

### 👤 Who it's for

- **🏷️ Used-car dealers, flippers and price aggregators.** See who's listing what, at what RON or EUR price, with which market-position badge, across the whole country. Price your own stock against the live market every morning.
- **📈 Market analysts** watching supply, pricing and dealer activity in the Romanian and wider CEE used-car scene.
- **🤖 Data-science and ML teams** who need a clean, complete, numeric-heavy corpus of Romanian used-car listings to train or backtest a price model.

---

### ✅ What you get

- **The whole advert, not a thin scrape.** Up to **127 structured fields** per car, one flat row per listing. Drop it straight into a spreadsheet or a database.
- **💸 Price intelligence baked in.** The price in the ad's own currency (EUR *or* RON, whatever the seller chose), a gross/net (TVA) flag, a market-position **price-evaluation** indicator (below / above / in market), and a 30-day price-drop marker.
- **🔧 A complete spec sheet.** Make, model, version, generation, year, mileage, body type, doors, seats, colour, fuel, engine size and power, gearbox, drivetrain, emissions, plus battery capacity and range for EVs.
- **📋 Condition and history flags.** Damaged, no-accident, first-owner, full service book, imported, country of origin.
- **🔑 VIN and registration date on demand.** One opt-in toggle pulls the chassis number and the first-registration date in cleartext when you need them, on a plain no-proxy run. It stays off by default so the fast run stays fast and cheap.
- **🛡️ Trust signals.** The **RAR / CEPIK government-database** verification badge and the list of fields it covers.
- **🎛️ The full equipment list.** Grouped and flat feature lists (audio, comfort, electronics, performance, safety) captured wholesale, so nothing gets thrown away.
- **📸 Photos and a map pin.** Full-resolution photo URLs, a photo count, and listing **latitude / longitude** on the standard run.
- **🏢 Complete seller and dealer info.** Seller name, id, type (dealer vs private), dealer profile URL, website, package, active-ad count, badges, working hours and services.
- **⚙️ Filters that actually work.** 11 server-side filters (make, model, year range, price range, max mileage, fuel, gearbox, body type, seller type) and 8 sort modes.
- **⚡ Fast and cheap out of the box.** Runs with **no proxy** by default (a polite single-IP crawl). Apify Proxy is there if you want it, billed to your own account.

---

### 📦 What's in scope (and what isn't)

This Actor covers **Autoturisme only**: passenger cars, the *mașini second-hand* section of autovit.ro. That's category 29, the part of the site most buyers mean when they say "autovit listings."

autovit.ro also runs several other sections that this Actor **does not** touch:

| Section on autovit.ro | Covered here? |
|---|---|
| Autoturisme (passenger cars) | ✅ Yes |
| Autoutilitare (vans / light commercials) | ❌ Not covered |
| Camioane (trucks) | ❌ Not covered |
| Motociclete (motorcycles) | ❌ Not covered |
| Piese (parts) | ❌ Not covered |
| Remorci (trailers) | ❌ Not covered |
| Utilaje agricole / Agro | ❌ Not covered |
| Utilaje construcții (construction machinery) | ❌ Not covered |

Those are different catalogues with different fields, so they belong in their own dedicated Actors rather than being bolted onto a passenger-car tool. They're on the roadmap as companion Actors. If a passenger-car feed is what you're after, this is the one.

---

### ⌨️ Input

Everything is optional. Leave it all on the defaults and the Actor does a small, fast test crawl: the 10 cheapest cars, no proxy. Add filters to narrow things down, and raise **Maximum results** when you want the full catalogue.

| Field | Type | Description |
|---|---|---|
| `make` | string | Manufacturer, as the lowercase autovit.ro slug (`audi`, `bmw`, `dacia`, `volkswagen`, `ford`…). Empty = all makes. |
| `model` | string | Model slug, paired with `make` (`a4`, `golf`…). Empty = all models. |
| `yearFrom` | integer | Only cars from this production year or later. |
| `yearTo` | integer | Only cars from this production year or earlier. |
| `priceFrom` | integer | Minimum price, in the listing's own currency (EUR or RON, set per ad). |
| `priceTo` | integer | Maximum price, in the listing's own currency (EUR or RON, set per ad). |
| `mileageTo` | integer | Only cars at or below this many kilometres on the clock. |
| `fuelType` | string | One fuel type: `petrol`, `diesel`, `hybrid`, `plugin-hybrid`, `electric`, `lpg`, `cng`, `hydrogen`, `ethanol`. Empty = all. |
| `gearbox` | string | `manual` or `automatic`. Empty = both. |
| `bodyType` | string | One body style: `sedan`, `compact`, `station-wagon`, `suv`, `coupe`, `cabrio`, `minivan`, `city-cars`, `pickup`. Empty = all. |
| `sellerType` | string | `private` or `dealer` (professional). Empty = both. |
| `sortBy` | string | Result order: price low→high (default), price high→low, mileage low/high, engine power low/high, newest first, or most relevant. |
| `maxItems` | integer | Stop after this many cars. Default `1000`; the prefilled test run uses `10`. Lower it for a quick test, raise it for the whole catalogue. |
| `extractVin` | boolean | Pull the **cleartext VIN** (chassis number) and the **first-registration date** for each car. One extra request per ad, so it's slower, but it works fine on a **No proxy** crawl. Leave it **off** and you still get the `has_vin` / `registered` presence flags. Default `false`. |
| `proxyType` | string | `none` (fastest, cheapest, recommended) or `apify` (route through Apify Proxy on your own account, only if you want to rotate IPs). Default `none`. |
| `proxyConfiguration` | object | Apify Proxy settings. Only used when `proxyType` is `apify`; charged to your own Apify account. |

#### Example 1: the default test run

This is exactly the prefilled input. Run it as-is. It grabs the 10 cheapest listings with no proxy and the VIN toggle off, and it's done in a few seconds.

```json
{
  "maxItems": 10,
  "sortBy": "filter_float_price:asc",
  "extractVin": false,
  "proxyType": "none"
}
````

#### Example 2: a filtered crawl with VIN + registration date (diesel Audis from 2016, up to €15,000)

`extractVin` adds the cleartext chassis number and first-registration date and still runs on No proxy.

```json
{
  "make": "audi",
  "fuelType": "diesel",
  "yearFrom": 2016,
  "priceTo": 15000,
  "maxItems": 100,
  "sortBy": "filter_float_price:asc",
  "extractVin": true,
  "proxyType": "none"
}
```

***

### 📊 Output

Every result is one used-car advert, flattened into a single object. Results land in the run's dataset and export to JSON, CSV, Excel, or pull them over the API.

#### A quick look at the headline fields

| Field | Type | Description |
|---|---|---|
| `id` | string | Numeric advert ID. The stable primary key and the dataset dedup key. |
| `url` | string | Direct link to the advert detail page. |
| `title` | string | Advert headline. |
| `make` | string | Manufacturer slug. |
| `model` | string | Model. |
| `version` | string | Trim / version (seller-optional). |
| `year` | integer | Production year. |
| `mileage` | integer | Odometer reading, in kilometres. |
| `price_value` | number | Price in the ad's own currency. No conversion. |
| `currency` | string | The ad's currency: `EUR` or `RON`. |
| `price_evaluation` | string | Market position: `BELOW`, `ABOVE`, `IN` or `NONE`. |
| `fuel_type` | string | `petrol`, `diesel`, `hybrid`, `electric`, and so on. |
| `gearbox` | string | `manual` or `automatic`. |
| `engine_power` | integer | Power in horsepower (CP). |
| `body_type` | string | Body style (sedan, suv, coupe…). |
| `location_city` | string | Listing city. |
| `location_region` | string | Listing region (județ). |
| `location_lat` / `location_lon` | number | Latitude / longitude. |
| `seller_type` | string | `PROFESSIONAL` (dealer) or `PRIVATE`. |
| `seller_name` | string | The seller / dealer name shown on the listing. |
| `cepik_verified` | boolean | Government-database (RAR/CEPIK) verification badge. |
| `has_vin` | boolean | Flag that a VIN exists on the ad. |
| `vin` | string | Cleartext VIN, when `extractVin` is on. |
| `phone_available` | boolean | Flag that the ad carries a seller phone number. |
| `photos` | array | Full-resolution photo URLs. |
| `photo_count` | integer | How many photos the listing has. |
| `scrapeDate` | string | UTC date (YYYY-MM-DD) the listing was collected. |

That's the short list for orientation. The complete field reference (all 127) is further down. The dataset also ships three ready-made views (**Car listings**, **Pricing analysis** and **Seller & contact**) that surface the right columns for each job.

#### Sample output item

A real row from a local **default** run (the 10-cheapest test crawl). Because the default run leaves the VIN toggle off, the cleartext `vin` and `date_registration` come back `null` here, exactly as they should. Turn the toggle on (Example 2) and those two fields fill in. Photo URLs trimmed for readability; every value is exactly as the Actor pulled it, all of it shown publicly on autovit.ro.

```json
{
  "sourceUrl": "https://www.autovit.ro/autoturisme/anunt/bmw-seria-1-ver-118i-sport-line-ID7HPhli.html",
  "website": "autovit.ro",
  "scrapeDate": "2026-06-17",
  "country": "RO",
  "currency": "EUR",
  "id": "7060533668",
  "status": null,
  "title": "BMW Seria 1 118i Sport Line",
  "url": "https://www.autovit.ro/autoturisme/anunt/bmw-seria-1-ver-118i-sport-line-ID7HPhli.html",
  "short_description": "Revizii efectuate la timp in service-uri BMW ( ultima in mai 2026), fa",
  "description": null,
  "price_value": 10000.0,
  "price_evaluation": "IN",
  "created_at": "2026-05-26T20:46:32Z",
  "category_id": "29",
  "category_name": "Autoturisme",
  "make": "bmw",
  "model": "seria-1",
  "version": "ver-118i-sport-line",
  "generation": "gen-f20-f21-2011-2019",
  "year": 2017,
  "mileage": 81000,
  "color": "white",
  "door_count": 5,
  "nr_seats": 5,
  "body_type": "compact",
  "fuel_type": "petrol",
  "engine_capacity": 1499,
  "engine_power": 136,
  "gearbox": "manual",
  "transmission": "rear-wheel",
  "co2_emissions": 116,
  "new_used": "used",
  "condition_damaged": false,
  "is_imported_car": false,
  "has_vin": true,
  "vin": null,
  "date_registration": null,
  "photos": [
    "https://ireland.apollo.olxcdn.com/v1/files/<id-1>/image",
    "https://ireland.apollo.olxcdn.com/v1/files/<id-2>/image"
  ],
  "photo_count": 8,
  "thumbnail": "https://ireland.apollo.olxcdn.com/v1/files/<id-1>/image",
  "location_city": "Bucuresti",
  "location_region": "Bucuresti",
  "location_district": "Sectorul 1",
  "location_lat": 44.43783,
  "location_lon": 26.09464,
  "seller_type": "PRIVATE",
  "seller_id": "1250649",
  "seller_name": "Adri",
  "equipment_flat": [
    "has_vin", "hands_free_system", "multi_functional_steering_wheel",
    "rear_view_camera", "antilock_brake_system", "esp", "rain_sensor"
  ],
  "vin_token": null,
  "date_registration_token": null,
  "phone_token": null,
  "phone_available": null,
  "vin_revealed": false,
  "date_registration_revealed": false,
  "phone_revealed": false
}
```

#### 🔑 VIN, registration date and seller phone (a straight answer)

Three datapoints on autovit.ro sit behind a reveal step: the **vehicle VIN**, the **first-registration date** and the **seller's phone number**. We're upfront about exactly what the Actor does with each.

- **VIN + first-registration date** come back in **cleartext** when you turn on **`extractVin`**. It costs one extra request per ad and works on a plain **No proxy** crawl. The values land in `vin` and `date_registration`, and `vin_revealed` / `date_registration_revealed` flip to `true`.
- **Seller phone number** is published only on the ad's HTML detail page, which autovit fronts with CloudFront and does not serve to Apify's datacenter network. So the Actor does **not** return the cleartext number. What you do get for every ad is the **presence flag** `phone_available` (whether a phone number exists on the ad) and the site's own **encrypted token** `phone_token`, stored byte-for-byte as the site returns it. `phone_revealed` is therefore always `false`.
- **The VIN toggle is off by default.** On the fast default run, `vin` and `date_registration` stay `null`. You still get the **presence flags** (`has_vin`, `registered`, `phone_available`) and the site's own **encrypted tokens** (`vin_token`, `date_registration_token`, `phone_token`), stored byte-for-byte as the site returns them.

To be clear about what's *always* in cleartext, no toggle required: the **seller name**, the **seller type** (dealer vs private), and the **location** (city, region, coordinates). Those are shown openly on the listing.

> 🔐 **Responsible use.** The seller name, location and other seller details are personal data under the GDPR. You are responsible for collecting and using them with a valid legal basis and in line with applicable data-protection law.

#### Full field reference

Everything below shows up in the dataset. Rows marked *(opt-in)* fill in only when **`extractVin`** is on, which fetches each ad's detail record; rows marked *(detail page)* also come from that detail record and so populate on the same `extractVin` run. Every other field is there on the standard (fastest) run. The lone exception is `description`, called out in its own row below: it lives only on a page Apify's servers can't reach, so it always comes back `null`.

##### Source & identity

| Field | Type | Description |
|---|---|---|
| `sourceUrl` | string | Canonical detail-page URL the listing came from. |
| `website` | string | Source host (`autovit.ro`). |
| `scrapeDate` | string | UTC date (YYYY-MM-DD) the listing was collected. |
| `country` | string | ISO country of the marketplace (`RO`). |
| `id` | string | Numeric primary key of the advert. The dataset dedup key. |
| `advert_details_id` | string | Base-62 short id, also embedded in the URL slug. *(detail page)* |
| `origin_ad_id` | string | Set for OLX cross-listed ads; usually null. *(detail page)* |
| `origin_site_code` | string | Source-platform code for cross-listed ads. *(detail page)* |
| `status` | string | Advert lifecycle status (e.g. `ACTIVE`). *(detail page)* |
| `title` | string | Advert headline. |
| `url` | string | Direct link to the advert detail page. |
| `short_description` | string | One-line listing teaser. |
| `description` | string | The long free-text ad description. It lives only on the source's HTML detail page, which isn't reachable from Apify's servers, so **this Actor does not populate it** and the value is always `null`. Every other field is captured. |

##### Price

| Field | Type | Description |
|---|---|---|
| `currency` | string | The ad's own currency, set by the seller (`EUR` or `RON`). |
| `price_value` | number | Listing price in that currency. No conversion applied. |
| `price_minor_amount` | integer | Current price in minor units (e.g. cents). *(detail page)* |
| `price_is_under_budget` | boolean | Price-on-request style flag. *(detail page)* |
| `price_labels` | array | Net/gross annotation labels; usually empty. *(detail page)* |
| `price_gross_net` | string | Derived from the VAT param: `gross` (TVA included) or `net`. |
| `price_evaluation` | string | Market position (`BELOW` / `ABOVE` / `IN` / `NONE`). |
| `price_drop` | object | Lowest 30-day price before a drop, as `{price, currency}`; null when there's no recent drop. *(detail page)* |

##### Timestamps & category

| Field | Type | Description |
|---|---|---|
| `created_at` | string | ISO8601 publish/activation timestamp. |
| `original_created_at` | string | First-publish timestamp (vs a `created_at` re-bump). *(detail page)* |
| `updated_at` | string | Last-modified timestamp. *(detail page)* |
| `valid_to` | string | Ad expiry timestamp. *(detail page)* |
| `category_id` | string | `29` = Autoturisme (passenger cars). |
| `category_name` | string | Category label (Autoturisme). |
| `is_parts` | boolean | True for parts ads. *(detail page)* |
| `is_used_car` | boolean | Mirrors `new_used`. *(detail page)* |

##### Vehicle identity

| Field | Type | Description |
|---|---|---|
| `make` | string | Vehicle manufacturer (normalized slug). |
| `model` | string | Vehicle model. |
| `version` | string | Trim / version (seller-optional). |
| `version_label` | string | Human-readable version mirror. *(detail page)* |
| `cant_see_my_version` | boolean | Seller flagged "version not found". |
| `generation` | string | Model generation. |
| `catalog_urn` | string | Eurotax catalog reference. *(detail page)* |
| `year` | integer | Production year. |
| `mileage` | integer | Odometer reading, in kilometres. |
| `color` | string | Exterior colour (normalized slug). |
| `colour_type` | string | Metallic / non-metallic. |
| `door_count` | integer | Number of doors (2–5). |
| `nr_seats` | integer | Number of seats. |
| `body_type` | string | Body style (sedan, suv, coupe…). |
| `vin` | string | **Cleartext VIN** (17-char chassis number). Populated only when `extractVin` is on (opt-in, one extra request per ad); null otherwise. Presence on the ad is flagged by `has_vin`. *(opt-in)* |

##### Engine & drivetrain

| Field | Type | Description |
|---|---|---|
| `fuel_type` | string | Fuel type (petrol, diesel, hybrid, electric…). |
| `engine_capacity` | integer | Engine displacement, in cm³. |
| `engine_power` | integer | Engine power, in horsepower (CP). |
| `gearbox` | string | Transmission type (manual / automatic). |
| `transmission` | string | Drive layout (front-wheel / rear-wheel / all-wheel). |
| `pollution_standard` | string | Euro emissions standard (e.g. euro-6). |
| `urban_consumption` | number | Fuel consumption, urban cycle (l/100km). *(detail page)* |
| `extra_urban_consumption` | number | Fuel consumption, extra-urban cycle (l/100km). *(detail page)* |
| `co2_emissions` | integer | CO2 emissions, in g/km. |
| `battery_capacity` | number | EV battery capacity (electric vehicles only). |
| `electric_range` | integer | EV driving range (electric vehicles only). |
| `rhd` | boolean | Right-hand-drive flag. |

##### Condition, history & commercial flags

| Field | Type | Description |
|---|---|---|
| `new_used` | string | Condition class (used / new). |
| `condition_damaged` | boolean | Damaged-vehicle flag (Avariată). |
| `no_accident` | boolean | No-accident-history flag. |
| `original_owner` | boolean | Seller is the first / original owner. |
| `service_record` | boolean | Full service book available. |
| `is_imported_car` | boolean | Whether the car was imported. |
| `country_origin` | string | Origin country code. |
| `historical_vehicle` | boolean | Vintage / historical-vehicle flag. |
| `tuning` | boolean | Vehicle has been tuned. |
| `registered` | boolean | Presence flag that a first-registration date exists on the ad. The cleartext date itself is returned in `date_registration` when `extractVin` is on. |
| `date_registration` | string | **Cleartext first-registration date** (YYYY-MM-DD). Populated only when `extractVin` is on (opt-in, one extra request per ad); null otherwise. Presence on the ad is flagged by `registered`. *(opt-in)* |
| `has_vin` | boolean | Presence flag that a VIN exists on the ad. The cleartext VIN itself is returned in `vin` when `extractVin` is on. |
| `vat` | boolean | TVA included in price (drives `price_gross_net`). |
| `financial_option` | boolean | Financing / credit offered. |
| `vendors_warranty_months` | integer | Dealer warranty duration, in months. *(detail page)* |
| `autorenew` | boolean | Seller auto-renew flag. |

##### Gated tokens & reveal-state flags

| Field | Type | Description |
|---|---|---|
| `vin_token` | string | Server-encrypted VIN token, stored verbatim. The cleartext VIN is also returned in `vin` when `extractVin` is on. Presence flagged by `has_vin`. *(opt-in / detail page)* |
| `date_registration_token` | string | Server-encrypted first-registration-date token, stored verbatim. The cleartext date is also returned in `date_registration` when `extractVin` is on. Presence flagged by `registered`. *(opt-in / detail page)* |
| `phone_token` | array | Server-encrypted seller phone token(s), stored verbatim. This is the maximal phone representation the Actor returns: the cleartext number itself is NOT decoded, because it lives only on the CloudFront-gated HTML detail page, which Apify's network can't reach. Presence flagged by `phone_available`. |
| `phone_available` | boolean | Presence flag that a seller phone number exists on the ad. The number itself is not decoded; you get the encrypted `phone_token` instead. |
| `vin_revealed` | boolean | `true` when the cleartext VIN was decoded into `vin` (i.e. `extractVin` was on); `false` otherwise. |
| `date_registration_revealed` | boolean | `true` when the cleartext registration date was decoded into `date_registration` (`extractVin` on); `false` otherwise. |
| `phone_revealed` | boolean | Always `false` on this Actor: the seller phone number is not decoded into cleartext (its only source is the CloudFront-gated detail page, which isn't collected). The encrypted `phone_token` and the `phone_available` flag are still returned. |

##### Media

| Field | Type | Description |
|---|---|---|
| `photos` | array | Full-resolution photo URLs. |
| `photo_count` | integer | Number of photos on the listing. |
| `thumbnails` | array | Sized thumbnail URLs. *(detail page)* |
| `thumbnail` | string | Listing thumbnail image URL. |
| `video` | object | Ad video metadata when present; usually absent. *(detail page)* |

##### Location

| Field | Type | Description |
|---|---|---|
| `location_city` | string | Listing city. |
| `location_region` | string | Listing region (județ). |
| `location_district` | string | Listing district (often null). |
| `location_address` | string | Dealer/seller street address shown publicly (when present). *(detail page)* |
| `location_postal_code` | string | Dealer/seller postal code shown publicly (when present). *(detail page)* |
| `location_lat` | number | Listing latitude. |
| `location_lon` | number | Listing longitude. |
| `location_canonicals` | object | `{city, region, subregion}` SEO slug metadata. *(detail page)* |

##### Seller / dealer

| Field | Type | Description |
|---|---|---|
| `seller_type` | string | `PROFESSIONAL` (dealer) or `PRIVATE`. |
| `seller_id` | string | Seller identifier shown publicly. |
| `seller_uuid` | string | Seller UUID shown publicly (stored verbatim as returned). *(detail page)* |
| `seller_name` | string | Seller / dealer name shown publicly. |
| `seller_url` | string | Dealer inventory / profile page URL shown publicly. *(detail page)* |
| `seller_website` | string | External dealer website shown publicly. *(detail page)* |
| `seller_logo` | array | Dealer logo image URL(s). *(detail page)* |
| `seller_features_badges` | array | Dealer feature badges (authorized-dealer, fast-reply…). *(detail page)* |
| `seller_benefits` | array | Dealer package entitlements. *(detail page)* |
| `seller_package` | object | Dealer package `{id, name}` (e.g. Expert). *(detail page)* |
| `seller_active_ads` | integer | Dealer's live-ad count (an inventory-size signal). |
| `seller_working_hours` | array | Per-weekday dealer working hours. *(detail page)* |
| `seller_services` | array | Dealer services (financing / repair / ITP / insurance / buyback). *(detail page)* |

##### Equipment & parameters

| Field | Type | Description |
|---|---|---|
| `equipment` | array | Grouped feature universe (audio / comfort / electronics / performance / security). *(detail page)* |
| `equipment_flat` | array | Flat boolean feature keys. |
| `details` | array | Human-formatted spec rows. *(detail page)* |
| `details_groups` | object | Layout grouping metadata. *(detail page)* |
| `parameters_dict` | object | Raw dict of all parameters: a catch-all so no parameter gets dropped. *(detail page)* |
| `main_features` | array | Headline chips (year, km, cm³, fuel). *(detail page)* |
| `ad_features` | array | Ad-level toggles / metadata. *(detail page)* |

##### Promotion, verification, AI & relationships

| Field | Type | Description |
|---|---|---|
| `badges` | array | Promo / quality badges; often empty. |
| `value_added_services` | array | Promo flags (highlighted / top / bumped). |
| `is_promoted` | boolean | Derived from promo-service presence. |
| `topad` | boolean | Top-ad placement. *(detail page)* |
| `urgent` | boolean | Urgent-listing flag. *(detail page)* |
| `highlighted` | boolean | Highlighted-listing flag. *(detail page)* |
| `packages` | array | Ad promotion packages applied. *(detail page)* |
| `cepik_verified` | boolean | RAR / CEPIK government-database verification badge. |
| `verified_car_fields` | array | Which fields were government-DB verified. *(detail page)* |
| `ai_insight` | object | AI make/model summary, maintenance, safety, reviews. *(detail page)* |
| `h2v` | object | OLX cross-listing metadata (`{}` when not cross-listed). *(detail page)* |
| `financing` | object | Financing flag plus loan-simulator rate if present. |
| `breadcrumbs` | array | Category → make → model trail. *(detail page)* |
| `similar_ads` | array | Related ads. *(detail page)* |
| `seo_data` | object | SEO title / description / canonical. *(detail page)* |

***

### 🔄 How it works

The Actor reads autovit.ro's own public listings data layer, the same data the website pulls to render search results, and pages through the **Autoturisme** catalogue, deduplicating on the advert ID. Because it works against structured JSON instead of fragile page markup, it keeps running when the site reshuffles its visual layout. There's no result-window cap either, so one run can cover the whole catalogue end to end.

Run it on a schedule (daily works well) to keep a fresh snapshot. The marketplace adds, removes and re-prices cars all day long, and every row carries created / updated / valid-to timestamps plus a 30-day price-drop marker, so you can age out the stale rows yourself.

***

### 💸 Pricing

This Actor is **pay-per-result**: you're charged a small fixed amount for each car listing returned, and nothing else. No monthly subscription, and no separate charge just for starting a run.

- **No proxy needed.** The default run uses no proxy, so there's no proxy cost at all. Opt into Apify Proxy if you want to rotate IPs, and that traffic is billed to your own Apify account, by Apify.
- **Free-tier friendly.** The Actor respects your account's charging limit and stops politely when it's reached. It won't crash, and it won't run up a surprise bill.
- **You set the ceiling.** Use **Maximum results** to cap exactly how many cars (and therefore how much) a run collects.

***

### ❓ FAQ

**How many results can I pull?**
The whole Autoturisme catalogue is roughly 43,700 active adverts. A single run can take all of them (there's no result-window cap), or you can cap it with **Maximum results** and narrow it with the filters.

**How fast is it?**
The default test run (10 cars, no proxy, VIN toggle off) is done in seconds. A full-catalogue crawl runs on the order of minutes on a single IP. Turning on **VIN extraction** adds one extra request per car, so that run is slower. Leave it off for the quickest, cheapest crawl.

**How fresh is the data?**
Each run is a snapshot of the live catalogue at crawl time. Listings change constantly, so schedule the Actor (daily, say) for a rolling feed. Every row carries created / updated / valid-to timestamps and a 30-day price-drop marker.

**Does it cover vans, trucks, motorcycles or parts?**
No. It's passenger cars only (Autoturisme). The van, truck, motorcycle, parts, trailer and machinery sections of autovit.ro have different fields and aren't in scope here. They're planned as separate companion Actors.

**Do I need a proxy?**
No. The default `No proxy` setting works for the whole Actor, the listing crawl and the VIN / registration-date detail path alike, and it's the fastest, cheapest option. Apify Proxy is there only if you specifically want to rotate IPs; it's routed through and billed to your own Apify account.

**Can I get the VIN?**
Yes, in cleartext, via the opt-in **`extractVin`** toggle. It returns the VIN and the first-registration date (`vin`, `date_registration`) and works on No proxy. It adds one extra request per ad and is off by default. With it off, you still get the `has_vin` and `registered` presence flags.

**Can I get the seller's phone number?**
Not as a cleartext number. autovit publishes the seller phone only on the ad's HTML detail page, which sits behind CloudFront and isn't served to Apify's network, so the Actor doesn't decode it. For every ad you do get the presence flag `phone_available` (whether a phone exists) and the site's own encrypted `phone_token`, stored exactly as returned. The seller's name, type and location come back in cleartext as usual.

**What about the long ad description?**
The free-text `description` field stays in the dataset for completeness, but it always comes back `null`. That text is published only on the ad's HTML detail page, the same page Apify's network can't reach, so the Actor doesn't return it. Everything else on the ad is captured.

**Is collecting seller data allowed?**
Seller name, location and similar contact details are personal data under the GDPR. The Actor only collects what autovit.ro displays publicly, but using that data is on you: collect and process it with a valid legal basis and in line with the applicable data-protection law for your jurisdiction and use case.

**What currency are the prices in?**
Each price is in the currency the seller chose for that ad, either **EUR** or **RON**, reported as-is in `price_value` and `currency`, with no conversion.

**How does the billing work, exactly?**
Pay-per-result. You're billed per car returned to the dataset, full stop. Set **Maximum results** to control the spend on any given run.

**Is this legal?**
The Actor collects only data that autovit.ro displays publicly, through a passive, read-only, politely-paced crawl. It doesn't log in, submit forms, or get past any access control. You're responsible for using the resulting data in line with the applicable laws (including data-protection rules such as the GDPR) for your jurisdiction and use case.

***

### ⚖️ Disclaimer

This is an **independent, unofficial tool**. It is **not affiliated with, endorsed by, sponsored by, or connected to autovit.ro, OLX Group, or any of their subsidiaries**. "Autovit", "autovit.ro", "OLX" and all related names and trademarks belong to their respective owners and are used here only for description and reference. This Actor ships no third-party logos or trademarks. It collects only publicly available information and is meant for legitimate, compliant use; making sure your use of the data complies with all applicable laws and the source website's terms is up to you.

# Actor input Schema

## `make` (type: `string`):

Manufacturer to filter by, as the lowercase autovit.ro slug (for example: audi, bmw, dacia, volkswagen, ford, opel, renault, mercedes-benz). Leave empty for all makes.

## `model` (type: `string`):

Model to filter by, as the lowercase autovit.ro slug (for example: a4 for an Audi A4, golf for a VW Golf). Use together with Make. Leave empty for all models.

## `yearFrom` (type: `integer`):

Only return cars with a production year at or after this value. Leave empty for no lower bound.

## `yearTo` (type: `integer`):

Only return cars with a production year at or before this value. Leave empty for no upper bound.

## `priceFrom` (type: `integer`):

Minimum price, in the listing's own currency (EUR or RON, set per ad by the seller). Leave empty for no minimum.

## `priceTo` (type: `integer`):

Maximum price, in the listing's own currency (EUR or RON, set per ad by the seller). Leave empty for no maximum.

## `mileageTo` (type: `integer`):

Only return cars with an odometer reading at or below this many kilometres. Leave empty for any mileage.

## `fuelType` (type: `string`):

Restrict results to a single fuel type. Leave empty for all fuel types.

## `gearbox` (type: `string`):

Restrict results to manual or automatic transmission. Leave empty for both.

## `bodyType` (type: `string`):

Restrict results to a single body style. Leave empty for all body types.

## `sellerType` (type: `string`):

Restrict results to private sellers or professional dealers. Leave empty for both.

## `sortBy` (type: `string`):

Order in which listings are returned. The default (cheapest price first) gives the most stable, complete deep crawl of the whole catalog.

## `maxItems` (type: `integer`):

Stop after collecting this many car listings. Lower it for a quick test run, raise it for a full catalog crawl. The free daily-test default is 10.

## `extractVin` (type: `boolean`):

Fetch each ad's detail record to capture the cleartext VIN (chassis number) and the first-registration date — both published on the ad but not present on the fast listing feed. This issues one extra request per ad (so it is SLOWER), but works on a direct (No proxy) crawl. Leave OFF for the fastest, cheapest crawl. When OFF, only the presence flags (VIN available / Registered) are returned.

## `proxyType` (type: `string`):

No proxy is the fastest and cheapest option and works for the whole actor (the listing crawl and the VIN / registration-date detail path both run fine on a polite single-IP crawl). Apify Proxy routes through your own Apify account (you pay Apify for proxy traffic); use it only if you want to rotate IPs.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. Only used when Proxy is set to "Apify Proxy". Charged to your own Apify account.

## Actor input object example

```json
{
  "make": "audi",
  "model": "a4",
  "yearFrom": 2016,
  "yearTo": 2022,
  "priceFrom": 5000,
  "priceTo": 15000,
  "mileageTo": 150000,
  "fuelType": "diesel",
  "gearbox": "automatic",
  "bodyType": "suv",
  "sellerType": "dealer",
  "sortBy": "filter_float_price:asc",
  "maxItems": 10,
  "extractVin": false,
  "proxyType": "none",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped used-car listing rows in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sortBy": "filter_float_price:asc",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("extractify-labs/autovit-ro-cars").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "sortBy": "filter_float_price:asc",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("extractify-labs/autovit-ro-cars").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sortBy": "filter_float_price:asc",
  "maxItems": 10
}' |
apify call extractify-labs/autovit-ro-cars --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=extractify-labs/autovit-ro-cars",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Autovit.ro Used Car Listings Scraper",
        "description": "Scrape every autovit.ro used-car listing - make, model, year, mileage, RON/EUR price, seller & location. Pay per result, no proxy. Anunturi auto RO.",
        "version": "0.1",
        "x-build-id": "RgfvJ1WOfl1g6DSZZ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/extractify-labs~autovit-ro-cars/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-extractify-labs-autovit-ro-cars",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/extractify-labs~autovit-ro-cars/runs": {
            "post": {
                "operationId": "runs-sync-extractify-labs-autovit-ro-cars",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/extractify-labs~autovit-ro-cars/run-sync": {
            "post": {
                "operationId": "run-sync-extractify-labs-autovit-ro-cars",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "make": {
                        "title": "Make",
                        "type": "string",
                        "description": "Manufacturer to filter by, as the lowercase autovit.ro slug (for example: audi, bmw, dacia, volkswagen, ford, opel, renault, mercedes-benz). Leave empty for all makes."
                    },
                    "model": {
                        "title": "Model",
                        "type": "string",
                        "description": "Model to filter by, as the lowercase autovit.ro slug (for example: a4 for an Audi A4, golf for a VW Golf). Use together with Make. Leave empty for all models."
                    },
                    "yearFrom": {
                        "title": "Year from",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only return cars with a production year at or after this value. Leave empty for no lower bound."
                    },
                    "yearTo": {
                        "title": "Year to",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only return cars with a production year at or before this value. Leave empty for no upper bound."
                    },
                    "priceFrom": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price, in the listing's own currency (EUR or RON, set per ad by the seller). Leave empty for no minimum."
                    },
                    "priceTo": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price, in the listing's own currency (EUR or RON, set per ad by the seller). Leave empty for no maximum."
                    },
                    "mileageTo": {
                        "title": "Max mileage (km)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return cars with an odometer reading at or below this many kilometres. Leave empty for any mileage."
                    },
                    "fuelType": {
                        "title": "Fuel type",
                        "enum": [
                            "petrol",
                            "diesel",
                            "hybrid",
                            "plugin-hybrid",
                            "electric",
                            "lpg",
                            "cng",
                            "hydrogen",
                            "ethanol"
                        ],
                        "type": "string",
                        "description": "Restrict results to a single fuel type. Leave empty for all fuel types."
                    },
                    "gearbox": {
                        "title": "Gearbox",
                        "enum": [
                            "manual",
                            "automatic"
                        ],
                        "type": "string",
                        "description": "Restrict results to manual or automatic transmission. Leave empty for both."
                    },
                    "bodyType": {
                        "title": "Body type",
                        "enum": [
                            "sedan",
                            "compact",
                            "station-wagon",
                            "suv",
                            "coupe",
                            "cabrio",
                            "minivan",
                            "city-cars",
                            "pickup"
                        ],
                        "type": "string",
                        "description": "Restrict results to a single body style. Leave empty for all body types."
                    },
                    "sellerType": {
                        "title": "Seller type",
                        "enum": [
                            "private",
                            "dealer"
                        ],
                        "type": "string",
                        "description": "Restrict results to private sellers or professional dealers. Leave empty for both."
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "filter_float_price:asc",
                            "filter_float_price:desc",
                            "filter_float_mileage:asc",
                            "filter_float_mileage:desc",
                            "filter_float_engine_power:asc",
                            "filter_float_engine_power:desc",
                            "created_at:desc",
                            "relevance_web"
                        ],
                        "type": "string",
                        "description": "Order in which listings are returned. The default (cheapest price first) gives the most stable, complete deep crawl of the whole catalog.",
                        "default": "filter_float_price:asc"
                    },
                    "maxItems": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 500000,
                        "type": "integer",
                        "description": "Stop after collecting this many car listings. Lower it for a quick test run, raise it for a full catalog crawl. The free daily-test default is 10.",
                        "default": 1000
                    },
                    "extractVin": {
                        "title": "Extract VIN and first-registration date",
                        "type": "boolean",
                        "description": "Fetch each ad's detail record to capture the cleartext VIN (chassis number) and the first-registration date — both published on the ad but not present on the fast listing feed. This issues one extra request per ad (so it is SLOWER), but works on a direct (No proxy) crawl. Leave OFF for the fastest, cheapest crawl. When OFF, only the presence flags (VIN available / Registered) are returned.",
                        "default": false
                    },
                    "proxyType": {
                        "title": "Proxy",
                        "enum": [
                            "none",
                            "apify"
                        ],
                        "type": "string",
                        "description": "No proxy is the fastest and cheapest option and works for the whole actor (the listing crawl and the VIN / registration-date detail path both run fine on a polite single-IP crawl). Apify Proxy routes through your own Apify account (you pay Apify for proxy traffic); use it only if you want to rotate IPs.",
                        "default": "none"
                    },
                    "proxyConfiguration": {
                        "title": "Apify Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. Only used when Proxy is set to \"Apify Proxy\". Charged to your own Apify account.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
