# Standvirtual Cars Scraper: Carros usados (`getascraper/standvirtual-cars-scraper`) Actor

Extract used-car listings from Standvirtual.com with price, mileage, year, fuel type, and transmission filtered server-side. JSON or CSV rows ready for Sheets, Make, and Zapier. From $0.00087 per listing.

- **URL**: https://apify.com/getascraper/standvirtual-cars-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.66 / 1,000 car listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 🚗 Standvirtual Cars Scraper: Carros usados

<table width="100%" style="border-collapse:collapse;table-layout:fixed;margin:0 0 16px">
<tbody>
<tr>
<td colspan="4" style="padding:14px 18px;background:#EAF1FF;border:1px solid #BBD3FF;border-top:3px solid #0B5FFF;border-radius:10px 10px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">Portugal is one stop in a ten-market European used-car dataset.</span> <span style="font-size:15px;color:#57534E">Standvirtual.com covers Portugal's largest used-car marketplace with make and price filters; the actors below extend the same row shape across Benelux, Nordic, DACH, and UK markets.</span>
</td>
</tr>
<tr>
<td colspan="4" style="padding:10px 14px;background:#0B5FFF;border-left:1px solid #0B5FFF;border-right:1px solid #0B5FFF">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">EUROPEAN USED-CAR CLASSIFIEDS COVERAGE</span> <span style="color:#FFFFFF;opacity:0.85;font-size:13px">&nbsp;&nbsp;Cross-border sourcing and pricing data spanning Benelux, Nordic, DACH, Iberian, and UK classifieds, plus a pan-EU dealer platform. Ten separate markets, not one.</span>
</td>
</tr>
<tr>
<td width="25%" style="width:25%;padding:11px 12px;border-left:1px solid #BBD3FF;border-bottom:1px solid #BBD3FF;vertical-align:top;background:#EAF1FF;border-radius:0 0 0 10px">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-QNOrwmoRJNQigdM12-Bvhsz8n53s-unnamed_%2836%29.png" width="18" height="18" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/standvirtual-cars-scraper" style="color:#0B5FFF;text-decoration:none;font-weight:700;font-size:13px">Standvirtual (PT)</a></span><br>
<span style="color:#0B5FFF;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
<td width="25%" style="width:25%;padding:11px 12px;border-left:1px solid #BBD3FF;border-bottom:1px solid #BBD3FF;vertical-align:top;background:#FFFFFF">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-oZ9ZUnSQ6at8KYKRe-nhHJXjuCwu-Willhaben.png" width="18" height="18" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/willhaben-cars-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Willhaben (AT)</a></span><br>
<span style="color:#57534E;font-size:11px">Austrian classifieds</span>
</td>
<td width="25%" style="width:25%;padding:11px 12px;border-left:1px solid #BBD3FF;border-bottom:1px solid #BBD3FF;vertical-align:top;background:#FFFFFF">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-thiniC0tVg4W8MoBY-xZIb7wZ3WN-images_%2825%29.jpeg" width="18" height="18" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/2dehands-cars-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">2dehands (BE)</a></span><br>
<span style="color:#57534E;font-size:11px">Belgian classifieds</span>
</td>
<td width="25%" style="width:25%;padding:11px 12px;border-left:1px solid #BBD3FF;border-right:1px solid #BBD3FF;border-bottom:1px solid #BBD3FF;vertical-align:top;background:#FFFFFF;border-radius:0 0 10px 0">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-tdTMqHz8DBeicY7Rp-HYWcWGJ9Hr-CompressJPEG.Online_img%28512x512%29_%2825%29.jpg" width="18" height="18" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/autohero-cars-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Autohero (10 EU)</a></span><br>
<span style="color:#57534E;font-size:11px">Pan-EU dealer catalog</span>
</td>
</tr>
</tbody>
</table>

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#EAF1FF;border:1px solid #BBD3FF;border-top:4px solid #0B5FFF;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">See every Standvirtual price, mileage, and make before you make an offer</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Turn any Standvirtual.com search into a clean spreadsheet: price, year, mileage, make, model, fuel type, transmission, location, and seller type for every listing.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BBD3FF;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0B5FFF">🚗 Full vehicle detail</span><br>
<span style="font-size:12px;color:#57534E">Make, model, year, mileage, fuel type, and transmission in one row</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BBD3FF;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0B5FFF">📍 Seller and location</span><br>
<span style="font-size:12px;color:#57534E">Private seller or dealer, plus where the car is actually listed</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BBD3FF;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0B5FFF">🔗 Direct listing links</span><br>
<span style="font-size:12px;color:#57534E">Jump straight to the original ad to verify or make an offer</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BBD3FF;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0B5FFF">⚙️ Scope you control</span><br>
<span style="font-size:12px;color:#57534E">Set how many listings and search pages a run pulls</span>
</td>
</tr>
</table>

### 🔍 What does Standvirtual Cars Scraper do?

This Actor reads search and listing pages on [Standvirtual.com](https://www.standvirtual.com/carros), Portugal's largest used-car marketplace, and returns one structured row per car listing.

Give it a search URL, or a filtered search built from make, price range, or year range, and it collects the listing title, price, currency, year, mileage, make, model, fuel type, transmission, seller location, seller type, and a photo, plus a direct link to the original ad. It follows the site's own pagination to pull more results across multiple search pages, up to the limits you set. Runs on the Apify platform with scheduling, integrations (Make, Zapier, Google Sheets), and run monitoring built in.

### 💡 Why use Standvirtual Cars Scraper?

- **I'm a car dealer or reseller** and want to see what similar cars are actually priced at on Standvirtual before I set my own price.
- **I'm a market analyst** tracking used-car pricing trends in Portugal by make, model, or price band over time.
- **I'm building a price-comparison or aggregator tool** and need a live feed of Standvirtual listings alongside other marketplaces.
- **I'm a developer** who needs structured Standvirtual data without writing and maintaining a scraper myself.

### 🚀 How to use Standvirtual Cars Scraper

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EAF1FF;border:1px solid #BBD3FF;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0B5FFF;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Make, price, year, mileage, fuel type, and transmission.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EAF1FF;border:1px solid #BBD3FF;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0B5FFF;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run the Actor</span><br>
<span style="font-size:12px;color:#57534E">It reads the public listing pages directly, no sign-in needed.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EAF1FF;border:1px solid #BBD3FF;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0B5FFF;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export your results</span><br>
<span style="font-size:12px;color:#57534E">Download one row per listing, ready for a spreadsheet or your own system.</span>
</td>
</tr>
</table>

### ⚙️ Input

Set filters directly, no need to build a Standvirtual search URL yourself. Every filter below is sent to Standvirtual as a real search parameter, the same way the site's own filter sidebar works, so narrow searches are cheaper because only matching listings are fetched.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `make` | string | No | Vehicle brand, such as `bmw`, `audi`, or `mercedes-benz`. Leave blank to search all makes. |
| `model` | string | No | Model slug, only applied when `make` is also set. Copy the slug from the model's URL on standvirtual.com if unsure. An unrecognized slug is ignored rather than erroring. |
| `fuelType` | string (enum) | No | Petrol, diesel, electric, or plug-in hybrid. |
| `transmission` | string (enum) | No | Manual or automatic gearbox. |
| `priceFrom` / `priceTo` | integer | No | Minimum and maximum asking price in EUR. |
| `yearFrom` / `yearTo` | integer | No | Minimum and maximum first-registration year. |
| `mileageFrom` / `mileageTo` | integer | No | Minimum and maximum odometer reading in kilometers. |
| `sellerType` | string (enum) | No | Private-seller-only or dealer-only listings. |
| `startUrls` | array of URLs | No | Advanced override. Paste one or more Standvirtual search or listing URLs to scrape that exact page instead of building a URL from the filters above. When set, it takes priority and the filters above are ignored. Also the way to target a specific body style or district, since those aren't exposed as separate filter fields yet. |
| `maxItems` | integer | No | Maximum number of unique car listings to return. Defaults to `25`. |
| `maxPages` | integer | No | Maximum number of search pages to visit. Defaults to `5`. |
| `proxyConfiguration` | object | No | Optional proxy settings. Standvirtual works with a direct connection by default. |

### 📦 Output

Download the results as a spreadsheet, a table, or structured data ready for your own systems. Each row is one car listing:

```
{
  "listing_url": "https://www.standvirtual.com/carros/anuncio/citroen-c3-aircross-ver-1-2-puretech-feel-ID8Q0xDt.html",
  "listing_id": "8097561427",
  "source_url": "https://www.standvirtual.com/carros",
  "title": "Citroën C3 Aircross 1.2 PureTech Feel",
  "price": 7990,
  "currency": "EUR",
  "year": 2019,
  "mileage_km": 98419,
  "make": "Citroën",
  "model": "C3 Aircross",
  "fuel_type": "Gasolina",
  "transmission": "Manual",
  "location": "Campanhã",
  "seller_type": "dealer",
  "image_url": "https://ireland.apollo.olxcdn.com/v1/files/example.jpg",
  "scraped_at": "2026-08-20T09:14:02.331Z"
}
```

### 📊 Output data fields

| Field | Type | Description |
| --- | --- | --- |
| `listing_url` | string | Direct link to the original Standvirtual listing. |
| `listing_id` | string | The listing's identifier. |
| `source_url` | string | The search or listing page this row was collected from. |
| `title` | string | The listing's headline, usually make, model, and trim. |
| `price` | number | Asking price, as shown on the listing. |
| `currency` | string | Currency of the price (typically EUR). |
| `year` | number | First-registration year. |
| `mileage_km` | number | Odometer reading in kilometers. |
| `make` | string | Vehicle brand. |
| `model` | string | Vehicle model. |
| `fuel_type` | string | Fuel type (petrol, diesel, electric, plug-in hybrid). |
| `transmission` | string | Gearbox type, as shown on the listing. |
| `location` | string | Seller's city, as shown on the listing. |
| `seller_type` | string | Private seller or dealer, when the listing discloses it. |
| `image_url` | string | Link to the listing's primary photo. |
| `description` | string | Short listing description, when available. |
| `scraped_at` | string | Timestamp when this row was collected. |

A field that's missing from the source listing is left out of the row entirely rather than filled with a placeholder.

### 💰 Pricing

This Actor uses pay-per-event pricing: you only pay for car listings actually returned, and nothing for an empty run. There is no subscription and no minimum spend. Use `maxItems` and `maxPages` to control how large a run gets.

### ⭐ Enjoying Standvirtual Cars Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#EAF1FF;border:1px solid #BBD3FF;border-left:5px solid #0B5FFF;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Found the right price before your competitor did?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other dealers, analysts, and developers tracking the Portuguese used-car market find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0B5FFF;border:1px solid #BBD3FF;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/standvirtual-cars-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ✨ Tips

- Use the `make`, `priceFrom`/`priceTo`, `yearFrom`/`yearTo`, `fuelType`, and `transmission` fields instead of the general search page for a more focused, cheaper run.
- Still want full control, or need a specific body style or district? Paste a pre-filtered Standvirtual search URL into `startUrls` and it overrides the filter fields entirely.
- Lower `maxPages` for a quick sample of the newest listings, or raise it to cover more of a search's results.
- `seller_type` and `description` aren't always shown by the source listing; a missing value there is expected, not an error.
- Re-run the same search URL on a schedule to track how prices for a specific make or model move over time.

### ❓ FAQ, disclaimers, and support

**How do I scrape Standvirtual.com listings?** Paste a search or listing page URL from Standvirtual.com into `startUrls` and run the Actor, or set the filter fields directly. It returns one structured row per listing, with price, year, mileage, and vehicle detail.

**Can I filter by brand, model, or price?** Yes. Set `make`, `model`, `priceFrom`/`priceTo`, `yearFrom`/`yearTo`, `mileageFrom`/`mileageTo`, `fuelType`, `transmission`, or `sellerType` directly in the input, no need to build the URL yourself. For a specific body style or district, build a filtered search on Standvirtual.com itself and paste that URL into `startUrls`, which overrides the filter fields.

**Why is a field like `seller_type` or `currency` sometimes missing?** Not every Standvirtual listing discloses every field. When a value isn't shown on the source page, the Actor leaves it out of the row rather than guessing or filling in a placeholder.

**How fresh is the data?** Every run reads the current search and listing pages directly from Standvirtual.com at run time. There is no cached or stale data.

**Is scraping Standvirtual data legal?** This Actor collects publicly available listing data. You are responsible for complying with Standvirtual's Terms of Service and applicable laws in your use of the data.

**Found a bug or need a field added?** Open an issue on the Actor's **Issues** tab. Custom solutions are available on request.

### 🔗 Other actors

- [OtoMoto Cars Scraper: Samochody używane](https://apify.com/getascraper/otomoto-cars-scraper) ↗ - used-car listings from Poland's largest car marketplace, same OLX Group data model.
- [Marktplaats Cars Scraper: Tweedehands auto's](https://apify.com/getascraper/marktplaats-cars-scraper) ↗ - used-car listings from the Netherlands.
- [Blocket Cars Scraper: Bilar till salu](https://apify.com/getascraper/blocket-cars-scraper) ↗ - used-car listings from Sweden's largest marketplace.
- [Kleinanzeigen Autos Scraper: Dealer Data](https://apify.com/getascraper/kleinanzeigen-cars-scraper) ↗ - dealer-ready German car inventory with native filters.
- [VIN Decoder + NHTSA Recalls & Complaints: One Call](https://apify.com/getascraper/nhtsa-vehicle-intelligence-monitor) ↗ - enrich vehicle research with official US recall and complaint data.

# Actor input Schema

## `startUrls` (type: `array`):

Optional. Paste one or more Standvirtual search or listing URLs to scrape exactly that page instead of building a URL from the filters below. When set, this takes priority and the filter fields below are ignored.

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

Vehicle brand to filter by, such as 'bmw', 'audi', or 'mercedes-benz'. Matches Standvirtual's own brand slug. Leave blank to search all makes.

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

Model slug, only applied when Make is also set. Browse the model on standvirtual.com and copy the slug from its URL if unsure. An unrecognized slug is ignored rather than erroring, so results fall back to the make-only search.

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

Fuel type.

## `transmission` (type: `string`):

Gearbox type.

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

Minimum asking price in euros.

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

Maximum asking price in euros.

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

Earliest first-registration year.

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

Latest first-registration year.

## `mileageFrom` (type: `integer`):

Minimum odometer reading in kilometers.

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

Maximum odometer reading in kilometers.

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

Only private-seller or only dealer listings.

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

Optional proxy settings. Standvirtual works with a direct connection by default.

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

Maximum number of unique car listings to return.

## `maxPages` (type: `integer`):

Maximum number of search pages to visit.

## Actor input object example

```json
{
  "startUrls": [],
  "make": "",
  "model": "",
  "fuelType": "",
  "transmission": "",
  "sellerType": "",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxItems": 10,
  "maxPages": 2
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "startUrls": [],
    "make": "",
    "model": "",
    "fuelType": "",
    "transmission": "",
    "sellerType": "",
    "proxyConfiguration": {
        "useApifyProxy": false
    },
    "maxItems": 10,
    "maxPages": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/standvirtual-cars-scraper").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 = {
    "startUrls": [],
    "make": "",
    "model": "",
    "fuelType": "",
    "transmission": "",
    "sellerType": "",
    "proxyConfiguration": { "useApifyProxy": False },
    "maxItems": 10,
    "maxPages": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/standvirtual-cars-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "make": "",
  "model": "",
  "fuelType": "",
  "transmission": "",
  "sellerType": "",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxItems": 10,
  "maxPages": 2
}' |
apify call getascraper/standvirtual-cars-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/standvirtual-cars-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/QNOrwmoRJNQigdM12/builds/kN2OybKR9ibJm4Et2/openapi.json
