# Google Maps Scraper | Places & Contacts (`danthedataman/google-maps-place-atlas`) Actor

Search Google Maps or resolve place IDs and URLs. Export business details, ratings and hours, with optional reviews and website contacts; coverage limits documented.

- **URL**: https://apify.com/danthedataman/google-maps-place-atlas.md
- **Developed by:** [Eli J](https://apify.com/danthedataman) (community)
- **Categories:** Lead generation, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.45 / 1,000 place 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 you can export

Use this **Google Maps scraper** to research businesses and places. Search by area or resolve public Place IDs and Maps URLs to export business identities, locations, available ratings, opening hours and source links.

Optionally include individual reviews or contacts published on the business website. Live ranked results are an observation rather than an exhaustive business census; enrichment and billing units are explained below.

### Try the example input

Paste this input into the Actor:

```json
{
  "searchStringsArray": [
    "coffee"
  ],
  "locationQuery": "Austin, Texas, USA",
  "maxCrawledPlacesPerSearch": 5
}
```

The form example requests up to five coffee places in Austin. Omitting all searches, IDs and URLs requests no work and exits successfully with guidance. An explicit zero place cap or empty languages list also requests no work. Form prefill values are examples, not API defaults.

### Search by place, area or language

Direct Place IDs and Maps URLs:

```json
{
  "placeIds": ["ChIJb5gBC-u0RIYRHkntaUcdJGs"],
  "startUrls": [{"url": "https://www.google.com/maps?cid=7720327853776914718"}]
}
```

Search several areas in several interface languages:

```json
{
  "searchStringsArray": ["pharmacy"],
  "locationQueries": ["London, UK", "Paris, France"],
  "languages": ["en", "fr"],
  "maxCrawledPlacesPerSearch": 10
}
```

Use a GeoJSON area, with longitude before latitude:

```json
{
  "searchStringsArray": ["coffee"],
  "customGeolocation": {"type": "Point", "coordinates": [-97.75, 30.25], "radiusKm": 2},
  "maxCrawledPlacesPerSearch": 10
}
```

Point, MultiPoint, Polygon, MultiPolygon, LineString, MultiLineString, Feature and FeatureCollection inputs are accepted. Polygon holes are excluded. Lines use a radius corridor. Point/line radius defaults to 8 km. Radius distances use a local equirectangular approximation; polygons use their coordinate boundaries. Polar and date-line geometry requires care because this is not a global geodesic search engine.

Use `countryCode` with `state`, `county`, `city` or `postalCode` for structured areas. Postal codes are used with a country and without a city. Nonempty `locationQuery` takes priority over `locationQueries`, GeoJSON and structured locations. URLs take priority over search terms; explicitly supplied Place IDs still run. Terms beginning with `place_id:` resolve directly.

### Reviews and website contacts

```json
{
  "placeIds": ["ChIJb5gBC-u0RIYRHkntaUcdJGs"],
  "maxReviews": 20,
  "reviewsSort": "newest",
  "scrapeReviewsPersonalData": false,
  "scrapeContacts": true
}
```

Reviews are nested in the place row. The cap applies per place; 99999 or more requests paging until the available terminal page. Sort by newest, relevance or rating. An ISO or relative start date forces newest sorting; text filtering checks the full original review text. Google's returned absolute timestamp may reflect an edit, and relative owner-response dates are retained without inventing an absolute date. A paging contradiction is reported in ERRORS and the place row contains no incomplete review set.

Website contacts come from the homepage and up to five same-site contact, about or legal links. The Actor stops ordinary contact-page traversal after finding an email while still reading linked Impressum pages. It extracts published email addresses, telephone links and social profile URLs; it does not crawl social profiles, verify email deliverability or obtain employee leads. An unreadable enrichment is reported in ERRORS while the valid place remains available.

### Input

| Field | Type | Default | Meaning |
| --- | --- | --- | --- |
| `searchStringsArray` | array | omitted | Search terms or place_id: identifiers. Required for search work; omitted terms can use categoryFilterWords. startUrls takes priority. |
| `locationQuery` | string | omitted | Free-text area. Takes priority over structured location and GeoJSON. |
| `locationQueries` | array | omitted | Search every term in each area. A nonempty locationQuery overrides this list. |
| `placeIds` | array | omitted | Resolve public Google Place IDs independently of searches. |
| `startUrls` | array | omitted | Place, CID, share/short-link or search URLs. URL work takes priority over search terms. |
| `customGeolocation` | object | omitted | Point, MultiPoint, Polygon (with holes), MultiPolygon, LineString, MultiLineString, Feature or FeatureCollection. Coordinates are longitude then latitude. Point/line radiusKm defaults to 8 km. Free-text location overrides this. |
| `radiusKm` | number | omitted | Radius for Point and line corridor inputs without their own radiusKm. |
| `countryCode` | string | omitted | Two-letter country code for structured location and the Google interface region. |
| `state` | string | omitted | Structured area; used when free-text/GeoJSON locations are absent. |
| `county` | string | omitted | Structured county; verified against Google's returned area labels when available. |
| `city` | string | omitted | Structured city. Do not combine with postalCode. |
| `postalCode` | string | omitted | Structured postal area. Use with countryCode and without city. |
| `language` | string | "en" | Google interface language; languages overrides this when supplied. |
| `languages` | array | omitted | Read every supplied language; an explicit empty list requests no work. Additional languages discover new places, keeping one row per Place ID across the whole run. |
| `maxCrawledPlacesPerSearch` | integer | omitted | Delivered place cap per source and language. Omitted means unlimited; explicit zero means no work. |
| `categoryFilterWords` | array | omitted | OR across entries; all words in each entry must match a returned category. Supplies search terms if searchStringsArray is omitted. |
| `searchMatching` | string | "all" | Keep all returned names, names including the term, or exact names. |
| `placeMinimumStars` | string | "" | Minimum Google rating. Empty disables the filter. |
| `website` | string | "allPlaces" | Filter by presence of a business website. |
| `skipClosedPlaces` | boolean | false | Skip places carrying a recognized permanent or temporary closure marker. |
| `geoStrictMatch` | boolean | true | Filter explicit geometry and structured areas using returned coordinates/address labels. |
| `keepUnverifiedLocations` | boolean | false | When geographic verification is requested, retain records lacking the required coordinates or area labels. |
| `skipPlacesNotMatchingSearch` | boolean | false | Require each search word in the returned name/categories; this is lexical matching, not an AI relevance classifier. |
| `scrapePlaceDetailPage` | boolean | true | Read the place's identity-confirmed detail response for hours, attributes and public business information. |
| `extractPlaceDetails` | boolean | omitted | Alias used only when scrapePlaceDetailPage is omitted. |
| `maxReviews` | integer | 0 | Zero disables reviews; 99999 or more requests paging to the available terminal page. Reviews are separately billed artifacts. |
| `maxReviewsPerPlace` | integer | omitted | Alias used only when maxReviews is omitted. |
| `reviewsSort` | string | "newest" | Google review sort; reviewsStartDate forces newest. |
| `reviewsStartDate` | string | omitted | ISO date/time or relative value such as 3 days. Relative months are 30 days and years 365 days. |
| `reviewsFilterString` | string | omitted | Case-insensitive substring in full original review text. May require scanning additional pages. |
| `reviewsOrigin` | string | "all" | Include all origins returned by Google, or only Google-origin records. |
| `scrapeReviewsPersonalData` | boolean | true | Disable to remove reviewer names, IDs, URLs, photos, profile counts and the review URL; the review ID and text remain. |
| `personalData` | boolean | omitted | Alias used only when scrapeReviewsPersonalData is omitted. |
| `scrapeContacts` | boolean | false | Read the business website and up to five linked contact/about/legal pages. Published contacts only; separate contact event. |
| `extractContactsFromWebsite` | boolean | omitted | Contact-extractor alias used only when scrapeContacts is omitted. |
| `scrapeTableReservationProvider` | boolean | true | Include public reservation links already returned in details; no reservation action is invoked. |
| `scrapeOrderOnline` | boolean | true | Include public Google food-order links returned in details; no order action is invoked. |
| `scrapeDirectories` | boolean | false | Resolve the returned businesses inside malls/directories; source-dependent and potentially many additional requests. |
| `maxRunSeconds` | integer | 0 | Stop source work when this budget expires; zero disables the budget. Unfinished work is recorded in ERRORS. |
| `maxRetriesPerRequest` | integer | 3 | Total attempts, including the first. Retry transport failures, 403/408/429/5xx and unreadable answers using fresh sessions. |
| `proxyConfiguration` | object | {"useApifyProxy":true} | Apify datacenter first. Explicit useApifyProxy:false uses direct egress. Residential groups are used only when explicitly configured. |

### Output

This illustrative place row shows the main fields; source-dependent values can be null or empty:

```json
{
  "recordType": "place",
  "title": "Example Coffee",
  "placeId": "ChIJ-example",
  "fid": "0x1:0x2",
  "cid": "2",
  "categoryName": "Coffee shop",
  "categories": ["Coffee shop"],
  "address": "12 Example Street, Austin, TX",
  "website": "https://example.com/",
  "location": {"lat": 30.25, "lng": -97.75},
  "totalScore": 4.5,
  "reviewsCount": 25,
  "openingHours": [{"day": "Tuesday", "hours": "8 AM–5 PM"}],
  "additionalInfo": {},
  "imageUrl": null,
  "reviews": [],
  "reviewsScrapedCount": 0,
  "searchString": "coffee",
  "rank": 1,
  "language": "en",
  "sourceUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ-example",
  "scrapedAt": "2026-10-06T17:00:00Z"
}
```

The dataset contains identity (`title`, `placeId`, `fid`, `cid`, `kgmid`), names/descriptions, category labels, formatted and structured addresses, phone/website, coordinates, timezone and plus code. Ratings/counts and returned review tags/distributions are preserved. Detail reads add hours as returned by Google (may be partial), today's hours, current-status text, grouped true/false attributes, owner name, primary image/count, parent-place links, owner posts, reservation/order/booking links, hotel dates/description/stars/offers and related hotels. Directory mode resolves child businesses returned inside a directory.

`reviews` includes identifiers, full original text, available translations, stars, origin, source timestamps, available author metadata, owner-response text and returned review-image URLs. Disabling reviewer personal data sets the personal fields and review URL to null; it retains review text and review ID. Unavailable detailed-rating/context fields remain empty. `reviewsScrapedCount` counts delivered nested reviews.

Each review chunk contains at most 5,000 reviews and stays under 4,000,000 serialized JSON bytes. The first row has `recordType: "place"` and `isReviewsContinuation: false`. Further rows have `recordType: "reviewContinuation"`, `placeId`, `isReviewsContinuation: true`, `reviews`, `reviewsScrapedCount`, and one-based `reviewChunkIndex` / `reviewChunkCount`. Join chunks by placeId and chunk index. A maximum-cost stop can leave fewer chunks than reviewChunkCount; inspect that metadata and ERRORS before treating the set as complete. Filter recordType to place when counting businesses.

With contacts enabled, `emails`, `phones`, `additionalPhones`, `whatsapps`, `instagrams`, `facebooks`, `linkedIns`, `youtubes`, `tiktoks`, `twitters`, `pinterests`, `tripadvisors`, `yelps` and `foursquares` contain published contacts or profile links. An available Impressum carries company/people/contact/VAT/registration text; address extraction is not provided.

A startUrls object can carry `userData`, for example `{"url":"https://www.google.com/maps?cid=7720327853776914718","userData":{"crmId":"A-1042"}}`. The first delivered base place retains it unchanged as `inputUserData`; a later duplicate source does not replace the first source's metadata.

`rank` is the one-based position encountered within a source. `searchString`, `searchPageUrl`, `searchPageLoadedUrl`, `language`, canonical `url`/`sourceUrl` and UTC `scrapedAt` retain request context. `isAdvertisement` is null because an advertisement marker is not decoded. Counts are artifact counts, coordinates are decimal degrees, scores are Google stars, and prices stay provider text.

### Coverage and limits

Searches use live Google ranked results. Paging, overlapping-area subdivision and deduplication can reach beyond a single ranked viewport; they do not establish an exhaustive business census. The Actor reports discovery interruptions in ERRORS. Dense searches may make many requests unless a place or time cap is supplied.

Place, CID, share-link and search URLs are supported when their redirect or URL exposes a place identity or query. Saved/custom place-list URLs are not currently resolved. Only public anonymous data is read. Full photo galleries, image categories, popular-times, fuel prices, EV connectors and Q\&A are not provided. Some other source-dependent values, such as claim indicators, next-opening time, category IDs, customer updates and web-result structures, remain unavailable. Do not interpret null values as a claim that the business lacks that feature. A primary image URL is not a full gallery.

Google can omit ratings, hours, attributes, contacts or reviews for a place or language. Geographic verification rejects unverifiable records unless explicitly allowed. English open/closure labels are recognized; localized closure markers may remain unknown. Reviews are fetched from Google's Search-side review route; this is not a promise that every review shown in every Google product is accessible.

### Billing and spending limits

The base artifact is one delivered base place row. Review continuation rows do not receive another base-place charge. Requested review artifacts are charged per delivered nested review; successfully read website enrichment is a separate contact artifact. At publication, the Actor Start event is USD 0.00005 per GB of run memory. Final prices are set on the Actor's pricing page.

The base event is `apify-default-dataset-item`. Custom `review` and `contact` events can use flat or platform tier prices when the run resolves their numeric price. See the current Pricing tab for the configured event prices.

The Actor inspects every charge result and stops source work when the maximum-cost limit binds. Nested enrichment is stored with its place before its event is charged; a binding add-on may therefore leave delivered but uncharged enrichment. Errors are never dataset rows and are never billed as result artifacts. If all supplied source attempts fail, the run fails with guidance; recognized no-data searches and filtered-empty results exit successfully.

Apify datacenter proxy is the default. Retryable transport failures, 403/408/429/5xx and unreadable responses use a fresh cookie-free session. Explicit direct or residential proxy configurations are honored; there is no automatic residential fallback.

### API example

Send a POST to `https://api.apify.com/v2/acts/OWNER~google-maps-place-atlas/runs?token=YOUR_TOKEN` with the JSON body under "Try the example input", then read the run's default dataset. Use the returned key-value store's ERRORS record for handled input/source failures. Keep the API token private.

### Support

Include the run ID, input mode and the ERRORS reason when reporting a problem through the Actor's Issues tab.

# Changelog

This Actor's version history is a separate document: https://apify.com/danthedataman/google-maps-place-atlas/changelog.md

# Actor input Schema

## `searchStringsArray` (type: `array`):

Search terms or place_id: identifiers. Required for search work; omitted terms can use categoryFilterWords. startUrls takes priority.

## `locationQuery` (type: `string`):

Free-text area. Takes priority over structured location and GeoJSON.

## `locationQueries` (type: `array`):

Search every term in each area. A nonempty locationQuery overrides this list.

## `placeIds` (type: `array`):

Resolve public Google Place IDs independently of searches.

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

Place, CID, share/short-link or search URLs. URL work takes priority over search terms. Supplied userData is returned unchanged as inputUserData on the first delivered base place.

## `customGeolocation` (type: `object`):

Point, MultiPoint, Polygon (with holes), MultiPolygon, LineString, MultiLineString, Feature or FeatureCollection. Coordinates are longitude then latitude. Point/line radiusKm defaults to 8 km. Free-text location overrides this.

## `radiusKm` (type: `number`):

Radius for Point and line corridor inputs without their own radiusKm.

## `countryCode` (type: `string`):

Two-letter country code for structured location and the Google interface region.

## `state` (type: `string`):

Structured area; used when free-text/GeoJSON locations are absent.

## `county` (type: `string`):

Structured county; verified against Google's returned area labels when available.

## `city` (type: `string`):

Structured city. Do not combine with postalCode.

## `postalCode` (type: `string`):

Structured postal area. Use with countryCode and without city.

## `language` (type: `string`):

Google interface language; languages overrides this when supplied.

## `languages` (type: `array`):

Read every supplied language; an explicit empty list requests no work. Additional languages discover new places, keeping one row per Place ID across the whole run.

## `maxCrawledPlacesPerSearch` (type: `integer`):

Delivered place cap per source and language. Omitted means unlimited; explicit zero means no work.

## `categoryFilterWords` (type: `array`):

OR across entries; all words in each entry must match a returned category. Supplies search terms if searchStringsArray is omitted.

## `searchMatching` (type: `string`):

Keep all returned names, names including the term, or exact names.

## `placeMinimumStars` (type: `string`):

Minimum Google rating. Empty disables the filter.

## `website` (type: `string`):

Filter by presence of a business website.

## `skipClosedPlaces` (type: `boolean`):

Skip places carrying a recognized permanent or temporary closure marker.

## `geoStrictMatch` (type: `boolean`):

Filter explicit geometry and structured areas using returned coordinates/address labels.

## `keepUnverifiedLocations` (type: `boolean`):

When geographic verification is requested, retain records lacking the required coordinates or area labels.

## `skipPlacesNotMatchingSearch` (type: `boolean`):

Require each search word in the returned name/categories; this is lexical matching, not an AI relevance classifier.

## `scrapePlaceDetailPage` (type: `boolean`):

Read the place's identity-confirmed detail response for hours, attributes and public business information.

## `extractPlaceDetails` (type: `boolean`):

Vortex-compatible alias used only when scrapePlaceDetailPage is omitted.

## `maxReviews` (type: `integer`):

Zero disables reviews; 99999 or more requests paging to the available terminal page. Reviews are separately billed artifacts.

## `maxReviewsPerPlace` (type: `integer`):

Vortex-compatible alias used only when maxReviews is omitted.

## `reviewsSort` (type: `string`):

Google review sort; reviewsStartDate forces newest.

## `reviewsStartDate` (type: `string`):

ISO date/time or relative value such as 3 days. Relative months are 30 days and years 365 days.

## `reviewsFilterString` (type: `string`):

Case-insensitive substring in full original review text. May require scanning additional pages.

## `reviewsOrigin` (type: `string`):

Include all origins returned by Google, or only Google-origin records.

## `scrapeReviewsPersonalData` (type: `boolean`):

Disable to remove reviewer names, IDs, URLs, photos, profile counts and the review URL; the review ID and text remain.

## `personalData` (type: `boolean`):

Compass Reviews-compatible alias used only when scrapeReviewsPersonalData is omitted.

## `scrapeContacts` (type: `boolean`):

Read the business website and up to five linked contact/about/legal pages. Published contacts only; separate contact event.

## `extractContactsFromWebsite` (type: `boolean`):

Contact-extractor alias used only when scrapeContacts is omitted.

## `scrapeTableReservationProvider` (type: `boolean`):

Include public reservation links already returned in details; no reservation action is invoked.

## `scrapeOrderOnline` (type: `boolean`):

Include public Google food-order links returned in details; no order action is invoked.

## `scrapeDirectories` (type: `boolean`):

Resolve the returned businesses inside malls/directories; source-dependent and potentially many additional requests.

## `maxRunSeconds` (type: `integer`):

Stop source work when this budget expires; zero disables the budget. Unfinished work is recorded in ERRORS.

## `maxRetriesPerRequest` (type: `integer`):

Total attempts, including the first. Retry transport failures, 403/408/429/5xx and unreadable answers using fresh sessions.

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

Apify datacenter first. Explicit useApifyProxy:false uses direct egress. Residential groups are used only when explicitly configured.

## Actor input object example

```json
{
  "searchStringsArray": [
    "coffee"
  ],
  "locationQuery": "London, UK",
  "placeIds": [
    "ChIJb5gBC-u0RIYRHkntaUcdJGs"
  ],
  "startUrls": [
    {
      "url": "https://www.google.com/maps?cid=7720327853776914718"
    }
  ],
  "language": "en",
  "maxCrawledPlacesPerSearch": 20,
  "searchMatching": "all",
  "placeMinimumStars": "",
  "website": "allPlaces",
  "skipClosedPlaces": false,
  "geoStrictMatch": true,
  "keepUnverifiedLocations": false,
  "skipPlacesNotMatchingSearch": false,
  "reviewsSort": "newest",
  "reviewsOrigin": "all",
  "scrapeTableReservationProvider": true,
  "scrapeOrderOnline": true,
  "scrapeDirectories": false,
  "maxRunSeconds": 0,
  "maxRetriesPerRequest": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `errors` (type: `string`):

Handled request failures, when present; never result rows.

# 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 = {
    "searchStringsArray": [
        "coffee"
    ],
    "locationQuery": "Austin, Texas, USA",
    "maxCrawledPlacesPerSearch": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("danthedataman/google-maps-place-atlas").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 = {
    "searchStringsArray": ["coffee"],
    "locationQuery": "Austin, Texas, USA",
    "maxCrawledPlacesPerSearch": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("danthedataman/google-maps-place-atlas").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 '{
  "searchStringsArray": [
    "coffee"
  ],
  "locationQuery": "Austin, Texas, USA",
  "maxCrawledPlacesPerSearch": 5
}' |
apify call danthedataman/google-maps-place-atlas --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,danthedataman/google-maps-place-atlas"
        }
    }
}
```

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/NfDOCOoOngG5nkhiQ/builds/VmydobLg5NpEWCNUf/openapi.json
