# 📍📸 Google Street View Scraper (PPE) (`3x1t/google-street-view-scraper-ppe`) Actor

Extract data from thousands of Google Maps Street View locations, including points of interest (businesses, shops, etc.), historical data, panorama images & more. Cover wide map areas by leveraging powerful input methods. Fast, cheap & reliable. Pay-per-event version.

- **URL**: https://apify.com/3x1t/google-street-view-scraper-ppe.md
- **Developed by:** [3x1t](https://apify.com/3x1t) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Stats:** 184 total users, 29 monthly users, 99.5% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.96 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🔍 What is Google Street View Scraper?

**Google Street View Scraper** is a tool for extracting Street View metadata, including found places, points of interest (and their IDs/URLs), historical Street Views (+links), panorama (360°) images in JPEG format and more.

There is a variety of input types you can leverage and we are working on adding even more.

Potential use cases for this scraper include:

- Finding all places in a given area
- Real-estate & property analysis
- Training datasets for computer vision
- Urban planning & smart-city analytics
- VR/AR environment reconstruction
- Bulk location verification or address auditing
- Automating research workflows

This version is configured as *Pay per event* (PPE), meaning you will pay a price according to the amount of scraped results. If you prefer fixed price per month (Rental), visit [📍📸 Google Street View Scraper](https://apify.com/3x1t/google-street-view-scraper).

## 🚀 Features

1. 🎯 **Choose from multiple input types**\
   Supports a wide variety of input formats:
   - 🔗 Street View URLs
   - 📍 Latitude/Longitude coordinates (+ optional radius scan)
   - 🔎 Location text query
   - 🌐 Custom GeoJSON object
   - ➕ …more coming soon (contact us with suggestions!)
2. 📐 **Customizable panorama resolution**\
   Pick the exact output size you want — from lightweight thumbnails to high-resolution panoramas.
3. 🛠️ **Image corruption detection + auto-repair**
4. ✅ **No upfront costs (e.g. per area search...)**
5. 📤 **Export your results in JSON, XML, CSV, and other formats supported by Apify.**

## 📊 What is being extracted?

<table>
    <tr>
        <td>📍 Points of Interest</td>
        <td>🕒 Historical Street Views</td>
        <td>🖼️ Panorama images</td>
    </tr>
    <tr>
        <td>🏷️ Addresses</td>
        <td>📅 Dates</td>
        <td>🔗 URLs</td>
    </tr>
    <tr>
        <td>🧭 Latitude</td>
        <td>🧭 Longitude</td>
        <td>🆔 ID</td>
    </tr>
</table>

And more! Checkout the output section for more detailed view.

Want to get more fields? Looking for something specific? Contact me via issues or at <contact@3x1t.dev> with any feature suggestions.

## ❓ How to use

This section contains information about each input option.

### 🔗 Street View URLs

This is pretty straightforward, just copy the URL from your browser and insert it here.

You can also use other URL sources than browser, but make sure that the links are valid (the Actor has an auto-validator for input, so it will tell you if it is a valid URL).

### 📍 Latitude/Longitude coordinates (+ optional radius scan)

Use the input interface to input points into each field. If you omit the radius field, it will be set to default value (default is 5 meters).

### 🔎 Location text query

This format type is possibly quite useful, but it also can be deceptive. It lets you define location boundary (polygon) using free text.

How this works:

1. Your query gets sent into "https://nominatim.openstreetmap.org/" to get a polygon from your query.
2. The Actor uses the found polygon as the input.

It is recommended to NOT use street addresses — street is not an area. Also other very small locations/generic names will not work.

Input examples:

- Good text queries:
  - `Hoboken, New Jersey`
  - `Manhattan, New York`
  - `Green Wood Cemetery, New York`
- Bad text queries:
  - `Lower Manhattan, New York`
  - `Franklin Street, New York`
  - `Journal Square, Jersey City` (it is a point)

You can validate your text query beforehand at https://nominatim.openstreetmap.org/ or just use GeoJSON input format instead for better stability.

### 🌐 Custom GeoJSON object

1. Go to https://geojson.io.
2. Find the location you want to scrape panoramas for on the map
3. Select *Draw Polygon* option from the toolbar
4. Draw the polygon (you finish the polygon by clicking on the initial point of the polygon)
5. The JSON entry will get updated in the text box on the right side.
6. Copy the whole JSON text and paste it into the *GeoJSON polygon* input field of this Actor.
7. (Optional) Setup other settings like resolution and limit.
8. Click *Start* to see your results!

## 📑 Example input

### Street View URL

```json
{
    "panoramaImageResolution": "512x256",
    "scrapePanoramaImages": true,
    "streetViewUrls": [
        "https://www.google.com/maps/@51.50567952815255,-0.07523477743727235,3a,75y,0h,90t/data=!3m5!1e1!3m3!1syzC6tviBA2kbnO1Q5a4a1Q!2e0!5s20241001T000000"
    ]
}
```

### GeoJSON

```json
{
    "geoJSON": {
        "type": "FeatureCollection",
        "features": [
            {
                "type": "Feature",
                "properties": {},
                "geometry": {
                    "coordinates": [
                        [
                            [
                                -0.07488689695912853,
                                51.507109792556406
                            ],
                            [
                                -0.0769781886279759,
                                51.504310315763036
                            ],
                            [
                                -0.07565163565999455,
                                51.50405840295656
                            ],
                            [
                                -0.07378514161396765,
                                51.50670383680142
                            ],
                            [
                                -0.07488689695912853,
                                51.507109792556406
                            ]
                        ]
                    ],
                    "type": "Polygon"
                }
            }
        ]
    },
    "panoramaImageResolution": "512x256",
    "resultLimitPerThread": 50,
    "scrapePanoramaImages": true
}
```

## 🖼️ Example output

The resulting images are automatically stitched into whole panoramas, making large-scale scraping operations very easy. There's also prepared a special Key-Value-Store collection called "*Panorama Images*" for making the process of extracting scraped images even smoother.

This example is only the dataset entry, the images will be automatically stored in the Key-Value store and referenced in the dataset entries via URLs in the `panoramaImageUrl` field.

```json
{
    "id": "NQmbvEpCoEnD2CfguyuqPw",
    "location": {
        "latitude": 51.50421828553964,
        "longitude": -0.07600345440559082
    },
    "streetViewUrl": "https://www.google.com/maps/@51.50421828553964,-0.07600345440559082,3a,75y,0h,90t/data=!3m4!1e1!3m2!1sNQmbvEpCoEnD2CfguyuqPw!2e0",
    "googleMapsUrl": "https://www.google.com/maps/place/51.50421828553964,-0.07600345440559082",
    "panoramaImageUrl": "", // Panorama image URL hidden in example
    "address": {
        "street": "48 Shad Thames",
        "cityAndCountry": "London, England",
        "countryCode": "GB"
    },
    "date": {
        "year": 2022,
        "month": 6
    },
    "pointsOfInterest": [
        {
            "name": "Starbucks",
            "url": "https://www.google.com/maps/place///data=!4m2!3m1!1s0x4876034619fd361b%3A0x126019398b3f2d0",
            "streetViewCenteredUrl": "https://www.google.com/maps/@51.50421828553964,-0.07600345440559082,3a,75y,121.16095804735681h,91.29863874283065t/data=!3m4!1e1!3m2!1sNQmbvEpCoEnD2CfguyuqPw!2e0",
            "relativePositionInPanorama": {
                "x": 0.00969652272760868,
                "y": 0.5056449174880981
            },
            "distanceFromCamera": 49.11770248413086,
            "placeCategory": "Coffee shop"
        },
        {
            "name": "Horselydown stairs",
            "url": "https://www.google.com/maps/place///data=!4m2!3m1!1s0x4876030846d2414b%3A0x6748a367f93745d5",
            "streetViewCenteredUrl": "https://www.google.com/maps/@51.50421828553964,-0.07600345440559082,3a,75y,93.57900540068903h,91.5340521919089t/data=!3m4!1e1!3m2!1sNQmbvEpCoEnD2CfguyuqPw!2e0",
            "relativePositionInPanorama": {
                "x": 0.9331086277961731,
                "y": 0.502669632434845
            },
            "distanceFromCamera": 26.1407585144043,
            "placeCategory": "Tourist attraction"
        }
    ],
    "historicalPanoramas": [
        {
            "id": "1yysorCh2z4NMHq93N0TwQ",
            "type": "official",
            "streetViewUrl": "https://www.google.com/maps/@51.50424167658521,-0.07604303179084063,3a,75y,0h,90t/data=!3m5!1e1!3m3!1s1yysorCh2z4NMHq93N0TwQ!2e0!5s20210501T000000",
            "location": {
                "latitude": 51.50424167658521,
                "longitude": -0.07604303179084063
            },
            "date": {
                "year": 2021,
                "month": 5
            }
        },
        {
            "id": "nsMd9-UHKC8Y7ayZ696vAg",
            "type": "official",
            "streetViewUrl": "https://www.google.com/maps/@51.504237913559,-0.07603361351516633,3a,75y,0h,90t/data=!3m5!1e1!3m3!1snsMd9-UHKC8Y7ayZ696vAg!2e0!5s20170901T000000",
            "location": {
                "latitude": 51.504237913559,
                "longitude": -0.07603361351516633
            },
            "date": {
                "year": 2017,
                "month": 9
            }
        },
        {
            "id": "Pgl5qaoLtgiHw96EMkyLTQ",
            "type": "official",
            "streetViewUrl": "https://www.google.com/maps/@51.50422542533391,-0.07599953144126885,3a,75y,0h,90t/data=!3m5!1e1!3m3!1sPgl5qaoLtgiHw96EMkyLTQ!2e0!5s20160501T000000",
            "location": {
                "latitude": 51.50422542533391,
                "longitude": -0.07599953144126885
            },
            "date": {
                "year": 2016,
                "month": 5
            }
        }
    ],
    "originIdentifier": "{\"name\":\"polygon-0\"}"
}
```

## 🔗 Integrating with other platforms

**Google Street View Scraper** supports integrations with external services, enabling automated workflows and data exchange. Through the [Apify platform integrations](https://apify.com/integrations), it connects with tools like Make and Zapier, facilitating interactions with Slack, Airbyte, GitHub, Google Sheets, and Google Drive ([learn about integrations](https://docs.apify.com/platform/integrations)). Additionally, its API and [webhook support](https://docs.apify.com/platform/integrations/webhooks) allow real-time interactions, such as triggering automated workflows or receiving notifications when a scraping task is completed.

## 🛠️ Support

If there is a feature that you would love to see (more fields, better input, etc.), do not hesitate to **create an issue** or contact me at <contact@3x1t.dev>.

## 🔍🌍 Explore all actors by *3x1t*

### 🗺️ Maps & Location Data

<table>
    <tr>
        <th style="white-space: nowrap;">Actor</th>
        <th>Description</th>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/google-street-view-scraper" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/BuGB3678eAo.png" height="36" style="border-radius: 8px;" />
                <span>📍📸 Google Street View Scraper</span>
            </a>
        </td>
        <td>Extracts product data from Google Street View, including panoramas, historical data, points of interest (e.g. places in vicinity) and more. Rental version.</td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/google-street-view-scraper-ppe" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/BuGB3678eAo.png" height="36" style="border-radius: 8px;" />
                <span>📍📸 Google Street View Scraper (PPE)</span>
            </a>
        </td>
        <td>Extracts product data from Google Street View, including panoramas, historical data, points of interest (e.g. places in vicinity) and more. Pay-per-event version.</td>
    </tr>
</table>

### 🚗 Automotive

<table>
    <tr>
        <th style="white-space: nowrap;">Actor</th>
        <th>Description</th>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/leboncoin-vehicle-scraper" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/ovU5636hXU.jpg" height="36" style="border-radius: 8px;" />
                <span>🔍🚚 Leboncoin Vehicle Scraper</span>
            </a>
        </td>
        <td>
            Scrapes vehicle listings from Leboncoin.fr and returns well-structured data (very similar to our other vehicle actors). Rental version.
        </td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/leboncoin-vehicle-scraper-ppe" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/qjHA2334SMk.JPG" height="36" style="border-radius: 8px;" />
                <span>🔍🚚 Leboncoin Vehicle Scraper (PPE)</span>
            </a>
        </td>
        <td>
            Scrapes vehicle listings from Leboncoin.fr and returns well-structured data (very similar to our other vehicle actors). Pay-per-event version.
        </td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/mobile-de-scraper" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/gyr1800LkY.png" height="36" style="border-radius: 8px;" />
                <span>🔍🚗 Mobile.de Scraper</span>
            </a>
        </td>
        <td>Scrapes vehicle listings from Mobile.de, Europe's largest car marketplace, with detailed vehicle data like brand, model, price, and images.</td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/mobile-de-scraper-ppr" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/ulK5777Os.png" height="36" style="border-radius: 8px;" />
                <span>🔍🚗 Mobile.de Scraper (PPR)</span>
            </a>
        </td>
        <td>Pay-per-result version of the Mobile.de Scraper, offering a cost-effective option for smaller use cases to extract car data.</td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/mobile-de-listing-health-checker" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/jefb7972cT.png" height="36" style="border-radius: 8px;" />
                <span>🚗📝👨‍⚕️ Mobile.de Listing Health Checker</span>
            </a>
        </td>
        <td>Checks listing IDs and returns only those that are not valid anymore.</td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/autoscout24-scraper" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/pXKi1391Ar.png" height="36" style="border-radius: 8px;" />
                <span>🔍🚙 AutoScout24 Scraper (Rental)</span>
            </a>
        </td>
        <td>
            Scrapes vehicle listings from AutoScout24, with detailed vehicle data like brand, model, price, images, dealer info and more. Rental version.
        </td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/autoscout24-scraper-ppr" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/pXKi1391Ar.png" height="36" style="border-radius: 8px;" />
                <span>🔍🚙 AutoScout24 Scraper (PPR)</span>
            </a>
        </td>
        <td>
            Scrapes vehicle listings from AutoScout24, with detailed vehicle data like brand, model, price, images, dealer info and more. Pay-per-result version.
        </td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/autoscout24-listing-health-checker" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/pyVw8902HM.png" height="36" style="border-radius: 8px;" />
                <span>🚙📝👨‍⚕️ AutoScout24 Listing Health Checker</span>
            </a>
        </td>
        <td>
            Scrapes vehicle listings from AutoScout24, with detailed vehicle data like brand, model, price, images, dealer info and more. Rental version.
        </td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/autoscout24-ch-scraper" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/bp1764vM.png" height="36" style="border-radius: 8px;" />
                <span>🔍🚙🇨🇭 AutoScout24.ch Scraper (Rental)</span>
            </a>
        </td>
        <td>
            Scraper dedicated for the Swiss website of AutoScout24. Rental version.
        </td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/autoscout24-ch-scraper-ppe" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/bp1764vM.png" height="36" style="border-radius: 8px;" />
                <span>🔍🚙🇨🇭 AutoScout24.ch Scraper (PPE)</span>
            </a>
        </td>
        <td>
            Scraper dedicated for the Swiss website of AutoScout24. Pay-per-event version.
        </td>
    </tr>
</table>

### 🛒 E-commerce

<table>
    <tr>
        <th style="white-space: nowrap;">Actor</th>
        <th>Description</th>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/ebay-scraper" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/uDVH9433ex.png" height="36" style="border-radius: 8px;" />
                <span>🔍🛒 eBay Scraper (Rental)</span>
            </a>
        </td>
        <td>Extracts product data from eBay, including details like price, title, images, and more. Rental version.</td>
    </tr>
    <tr>
        <td style="white-space: nowrap;">
            <a href="https://apify.com/3x1t/wish-scraper" style="display: flex; align-items: center; gap: 8px;">
                <img src="https://i.imghippo.com/files/jMY5308nVk.png" height="36" style="border-radius: 8px;" />
                <span>🔍🛒 Wish Scraper (PPR)</span>
            </a>
        </td>
        <td>Extracts product data from Wish.com, including details like price, name, reviews, and more.</td>
    </tr>
</table>

Can't find what you're looking for? No worries, we've got your back! Hit us up at <contact@3x1t.dev> or create an issue. If all else fails, you can always [visit the Apify store](https://apify.com/store) — it could have exactly what you need. 😉

# Changelog

This Actor's version history is a separate document: https://apify.com/3x1t/google-street-view-scraper-ppe/changelog.md

# Actor input Schema

## `streetViewUrls` (type: `array`):

URLs to start with

## `latLonCoordinatesWithRadius` (type: `array`):

List of geographic coordinates (latitude and longitude) to use with radius to cover circular area around them. Use decimal notation (e.g. 50.10238). Radius is in meters.

## `queryString` (type: `string`):

Define location using free text. Simpler formats work best (e.g. Hoboken, New Jersey). A polygon will be automatically created encompassing the location.

You can validate your text query beforehand at https://nominatim.openstreetmap.org.

For example, if you put 'New York', it will result in a huge area, which will likely fail due to memory constraints.

## `geoJSON` (type: `object`):

You can obtain every street view in a given polygon! Just visit https://geojson.io, create a polygon, copy the JSON and paste it here!

## `scrapePanoramaImages` (type: `boolean`):

Whether to scrape panorama images.

## `panoramaImageResolution` (type: `string`):

Select the output panorama image resolution. Beware that scraping panoramas (especially higher resolution) will take more resources and time.

## `resultLimitPerThread` (type: `integer`):

If you want to limit the amount of results per input, you can type it here. Leave this field empty to remove the limit (or you can set it to a really high number).

## Actor input object example

```json
{
  "streetViewUrls": [
    "https://www.google.com/maps/@51.50533,-0.0754664,3a,75y,90t/data=!3m4!1e1!3m2!1syYqzFslc2VbLqMcJcfMe7g!2e0"
  ],
  "scrapePanoramaImages": false,
  "panoramaImageResolution": "512x256"
}
```

# Actor output Schema

## `overview` (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 = {
    "streetViewUrls": [
        "https://www.google.com/maps/@51.50533,-0.0754664,3a,75y,90t/data=!3m4!1e1!3m2!1syYqzFslc2VbLqMcJcfMe7g!2e0"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("3x1t/google-street-view-scraper-ppe").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 = { "streetViewUrls": ["https://www.google.com/maps/@51.50533,-0.0754664,3a,75y,90t/data=!3m4!1e1!3m2!1syYqzFslc2VbLqMcJcfMe7g!2e0"] }

# Run the Actor and wait for it to finish
run = client.actor("3x1t/google-street-view-scraper-ppe").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 '{
  "streetViewUrls": [
    "https://www.google.com/maps/@51.50533,-0.0754664,3a,75y,90t/data=!3m4!1e1!3m2!1syYqzFslc2VbLqMcJcfMe7g!2e0"
  ]
}' |
apify call 3x1t/google-street-view-scraper-ppe --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,3x1t/google-street-view-scraper-ppe"
        }
    }
}
```

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/seWbEZ2kjgNods5Ez/builds/h8V3euDwz2w1xwJBV/openapi.json
