# YellowPages Scraper - US Business Leads (`scrapesage/yellowpages-scraper`) Actor

Scrape YellowPages.com for US local business leads - name, phone, e-mail, website, full address, opening hours, map coordinates, categories, rating, reviews and years in business. Search any trade in any city or ZIP. Independent tool, not affiliated with YellowPages.com.

- **URL**: https://apify.com/scrapesage/yellowpages-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Other, Agents
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 business listings

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/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

## YellowPages Scraper - US Business Leads

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Thryv, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "YellowPages.com" is referenced only to describe the publicly available website this Actor collects data from.

Turn any trade and location into a clean list of **US business leads from YellowPages.com**: name, phone, **e-mail address**, website, full street address, **opening hours**, **map coordinates**, categories, star rating, years in business, services, payment methods, social profiles and more - one row per business, in YellowPages' own order.

Search by keyword and city or ZIP code (several of each in one run), or paste YellowPages search, category and business URLs. No login, no API key, no browser - and you pay one flat price per business, with the business-page details included.

### Why this YellowPages scraper?

| Data | This actor |
| --- | --- |
| Name, phone, street address, city, state, ZIP, website | ✅ |
| Categories, star rating, review count, years in business | ✅ |
| **E-mail address** from the business's YellowPages page | ✅ included |
| **Opening hours** per weekday + open-now status | ✅ |
| **Latitude / longitude** | ✅ |
| Description, services, brands, payment methods, languages, neighborhoods | ✅ |
| Extra phone numbers (fax, toll-free), social profiles, other links | ✅ |
| The business's **own website kept apart** from YellowPages-made listing sites | ✅ |
| Results in YellowPages' order, **paid placements flagged** (`isAd`, `placement`) | ✅ |
| Several search terms × several cities, cap shared fairly between them | ✅ |
| A business found by two searches is billed once | ✅ |
| Filters: phone, website, e-mail, minimum rating, minimum reviews, no paid placements | ✅ (never billed for skipped rows) |

### What you get

| Group | Fields |
|---|---|
| Identity | `name`, `ypId`, `listingId`, `yellowPagesUrl`, `aka` (other names) |
| Contact | `phone`, `email`, `emails`, `extraPhones`, `fax`, `tollFreePhone`, `website`, `socialProfiles`, `otherLinks`, `ypMicrositeUrl` |
| Address & location | `street`, `city`, `state`, `postalCode`, `fullAddress`, `serviceArea`, `latitude`, `longitude`, `neighborhoods`, `locationDescription` |
| Hours | `openingHours` (as YellowPages states them, e.g. `Mo-Fr 08:00-17:00`), `hours` (per weekday: e.g. `08:00-17:00`, or `closed`), `hoursText`, `openStatus` |
| Classification | `primaryCategory`, `categories`, `categoryCodes`, `servesCuisine` |
| Reputation | `rating`, `reviewCount`, `reviews` (latest reviews shown on the page), `tripAdvisorRating`, `tripAdvisorReviewCount`, `tripAdvisorUrl`, `photoCount` |
| Profile | `description`, `businessHistory`, `services`, `brands`, `paymentMethods`, `languages`, `associations`, `accreditation`, `amenities`, `ownership`, `freeEstimates`, `otherInformation`, `foundedYear`, `yearsInBusiness`, `yearsWithYellowPages`, `acceptedInsurance`, `medicalSpecialties`, `logoUrl`, `imageUrl` |
| Listing | `isClaimed`, `isAd`, `placement` (`organic` / `paid-listing` / `sponsored`), `listingType`, `isYpPreferred`, `hasCoupons`, `offer`, `slogan`, `snippet`, `isPermanentlyClosed` |
| Search context | `rank` (position in YellowPages' results), `page`, `searchTerm`, `searchLocation`, `sourceUrl`, `detailFetched`, `scrapedAt` |

A field the business has not filled in on YellowPages is `null` - exports never carry fake or placeholder values.

### Use cases

- **Local lead generation** - every plumber, roofer, dentist, law firm or restaurant in a city, with phone, e-mail and website, ready for a CRM or a cold-calling list.
- **E-mail lists for outreach** - switch on "Only businesses with an e-mail address" and you are billed only for businesses that list one.
- **Find businesses without a real website** - `website` is the business's own site; a YellowPages-made listing site is reported separately as `ypMicrositeUrl`, so web-design agencies can spot the gap.
- **Market research** - how many businesses of a trade operate in each city or ZIP code, how established they are (`yearsInBusiness`), how they are rated and when they open.
- **Data enrichment** - categories, hours, coordinates and payment methods for businesses you already track, straight from their YellowPages pages.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) - the free plan is enough to try this actor.
2. Open **YellowPages Scraper**, type one or more **search terms** and a **location**, and click **Start**.
3. Watch the businesses arrive in the dataset table (views: *Businesses*, *Call list*, *E-mails & contacts*, *Hours & location*, *Business profile*).
4. **Export** as JSON, CSV, Excel, XML or HTML, or pull the results with the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchTerms": ["plumber", "electrician"],
    "location": "Chicago, IL; Evanston, IL",
    "maxResults": 200,
    "includeDetails": true,
    "onlyWithPhone": true
}
```

- **searchTerms** - what to look for, as you would type it into YellowPages (`plumber`, `roofing contractor`, `pizza`).
- **location** - `City, ST` or a 5-digit ZIP code. Several places: separate them with `;`. Every search term runs in every place.
- **maxResults** - total businesses to collect (0 = no limit), shared fairly between all searches.
- **includeDetails** *(default on)* - open each business's YellowPages page for e-mail, hours, coordinates, description, services, links and the rest. Turn it off for a faster list with the search-result fields only.
- **startUrls** / **urlsFromFile** - YellowPages search URLs (`yellowpages.com/search?search_terms=...`), category pages (`yellowpages.com/chicago-il/plumbers`) or business pages (`yellowpages.com/.../mip/...`), typed in, pasted as a list or linked as a .txt / .csv file or Google Sheet.
- **Filters** - `excludeAds`, `onlyWithPhone`, `onlyWithWebsite`, `onlyWithEmail`, `minRating`, `minReviews`. A business that does not match is skipped and never billed.
- **maxPagesPerSearch** *(optional)* - limit how deep each search pages; leave empty and the actor pages as far as `maxResults` needs.

### Output

```json
{
    "type": "business",
    "name": "Lakeside Plumbing & Sewer",
    "phone": "(773) 555-0142",
    "email": "office@lakesideplumbing.example",
    "website": "https://www.lakesideplumbing.example/",
    "street": "4100 N Clark St",
    "city": "Chicago",
    "state": "IL",
    "postalCode": "60613",
    "fullAddress": "4100 N Clark St, Chicago, IL 60613",
    "primaryCategory": "Plumbers",
    "categories": ["Plumbers", "Sewer Cleaners & Repairers", "Water Heaters"],
    "rating": 4.5,
    "reviewCount": 12,
    "yearsInBusiness": 21,
    "openStatus": "open now",
    "isClaimed": true,
    "placement": "organic",
    "isAd": false,
    "ypId": "123456789",
    "yellowPagesUrl": "https://www.yellowpages.com/chicago-il/mip/lakeside-plumbing-sewer-123456789",
    "rank": 7,
    "page": 1,
    "searchTerm": "plumber",
    "searchLocation": "Chicago, IL",
    "detailFetched": true,
    "extraPhones": [{ "type": "Fax", "number": "(773) 555-0143" }],
    "latitude": 41.9571,
    "longitude": -87.6581,
    "openingHours": ["Mo-Fr 07:00-18:00", "Sa 08:00-14:00"],
    "hours": { "monday": "07:00-18:00", "tuesday": "07:00-18:00", "wednesday": "07:00-18:00", "thursday": "07:00-18:00", "friday": "07:00-18:00", "saturday": "08:00-14:00", "sunday": "closed" },
    "description": "Family-owned plumbing and sewer company serving the North Side since 2004.",
    "services": ["Drain Cleaning", "Water Heater Installation", "Sewer Repair"],
    "paymentMethods": ["visa", "master card", "check"],
    "socialProfiles": { "facebook": "https://www.facebook.com/lakesideplumbing.example" },
    "foundedYear": 2004,
    "scrapedAt": "2026-10-08T04:12:09.123Z"
}
```

Each run also writes an `OUTPUT_SUMMARY` record (key-value store) with every search, how many results YellowPages lists for it, how many pages were read and how many rows were saved.

### Good to know

- **E-mail addresses** come from the business's own YellowPages page, so you get one only when the business lists it - roughly a third of businesses overall, more than half in trades like contractors, movers and law firms, and few restaurants or medical practices. Placeholder addresses some listings carry (such as `yourname@...`) and the mailboxes of website builders are dropped.
- **Paid placements:** YellowPages ranks its paying advertisers at the top of its own results (`placement: "paid-listing"`) and shows sponsored ads around them (`placement: "sponsored"`, often other trades or towns, with call-tracking phone numbers). Results arrive in YellowPages' order, sponsored ads only after a search's results run out, and `isAd` marks both kinds; "Exclude sponsored results" removes them all.
- **Depth:** YellowPages lists at most 3,000 businesses (100 pages) per search, and a city search also covers nearby towns. For more in a big metro, run the same term over several ZIP codes or neighboring cities - the actor de-duplicates businesses across searches.
- **Ratings and reviews** exist only where customers left them on YellowPages; most small businesses have none, and their `rating` is `null`.
- **Hours** are copied as YellowPages shows them; a late-night business can read `11:00-04:00` (it closes after midnight). A day YellowPages marks as closed reads `closed`; a day the business does not list at all is `null`. The *Hours & location* view shows one column per weekday.
- A search YellowPages cannot run (a misspelled city, for example) ends with a clear message and nothing billed.

### How much does it cost to scrape YellowPages.com?

This Actor uses Apify's **pay-per-event** pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

- **Business listing** - One YellowPages business: name, phone, website, full address, categories, rating, reviews and years in business. With business page details on (the default) also its e-mail when listed, opening hours, map coordinates, description, services, payment methods and social links.

The current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

### Automate & schedule

Run this Actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** - start runs, fetch datasets and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** - official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** - run it hourly, daily or weekly and keep your dataset current.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** - trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/yellowpages-scraper').call({
    "searchTerms": [
        "plumber"
    ],
    "location": "Chicago, IL",
    "maxResults": 20,
    "maxPagesPerSearch": 1,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} records`);
```

### Integrate with any app

Connect the dataset to thousands of apps - no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** - multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** - push new records straight into your CRM or spreadsheet.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** - get notified when a scheduled run finds something new.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** - auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** - pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** - trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this Actor from Claude, ChatGPT or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** - describe the data you need and let the assistant run this Actor for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready**: AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)**: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), with no account and no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)**: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### Tips

- Turn off **includeDetails** when you only need name, phone, address and website: runs finish several times faster.
- Combine several **search terms** with several **ZIP codes** in one run - `maxResults` is shared fairly, so the first search never eats the whole budget.
- For e-mail campaigns use **Only businesses with an e-mail address**: businesses without one are skipped and cost nothing.

### FAQ

**How is this Actor billed?** Pay-per-event: you pay only for the results it delivers, with no monthly rental and no start fee. The per-event price is shown on the Pricing tab.

**Can I schedule it and get results automatically?** Yes - create a [Schedule](https://docs.apify.com/platform/schedules) and add a [webhook](https://docs.apify.com/platform/integrations/webhooks) or an integration (Google Sheets, Slack, Make, Zapier) to push each run's dataset wherever you need it.

**Which export formats are available?** Every run's dataset can be downloaded as JSON, CSV, Excel (XLSX), XML, HTML or RSS from the Apify Console or the API.

**Can I run it from code or an AI agent?** Yes - through the [Apify API](https://docs.apify.com/api/v2) and client libraries, or from Claude, ChatGPT and other assistants via the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

**Is it legal to scrape YellowPages.com?** This Actor collects publicly available data only. You are responsible for using the output in compliance with applicable laws (including data-protection law where personal data is involved) and the source's terms. See **Data & lawful use** and the **Disclaimer** below.

**Is this an official YellowPages.com tool?** No. It is an independent, third-party Actor with no affiliation to, endorsement by or sponsorship from Thryv, Inc. See the **Disclaimer** below.

### Data & lawful use

This Actor reads business and professional listings that the professionals themselves published to be found: names, roles, firms, ratings and the contact details shown on the public listing. Because those details belong to identifiable people, treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for B2B prospecting or market research), keep any outreach relevant to the professional's line of work, honour opt-outs and deletion requests, and do not use the output for spam.

Under [Apify's Standard Actor Contract](https://docs.apify.com/legal/standard-actor-contract), which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

### Disclaimer

**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Thryv, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**

"YellowPages.com" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official YellowPages.com product, is not authorised or certified by Thryv, Inc., and does not distribute YellowPages.com software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

### Need help?

Open an issue on the Actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome - this Actor is actively maintained.

# Actor input Schema

## `searchTerms` (type: `array`):

What to look for, exactly as you would type it into YellowPages - for example plumber, dentist, roofing contractor, pizza. One search per term (and per location).

## `location` (type: `string`):

City and state ("Chicago, IL") or a 5-digit ZIP code ("60601"). Several places: separate them with ";" ("Austin, TX; Dallas, TX") - every search term runs in every place.

## `maxResults` (type: `integer`):

Stop after this many businesses in total (0 = no limit). With several searches the total is shared fairly between them. You are only charged for businesses actually saved.

## `includeDetails` (type: `boolean`):

Open each business's own YellowPages page for its e-mail address, opening hours, map coordinates, description, services, brands, payment methods, social links, extra phone numbers and more. Turn off for a faster list with the search-result fields only (name, phone, address, website, categories, rating).

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

Optional. YellowPages.com URLs to scrape directly: search result pages (yellowpages.com/search?search_terms=...), category pages (yellowpages.com/chicago-il/plumbers) or business pages (yellowpages.com/.../mip/...). Search terms and URLs can be combined.

## `urlsFromFile` (type: `string`):

Optional. Paste a list of YellowPages URLs (one per line), or a link to a .txt / .csv file or a Google Sheet that holds them.

## `excludeAds` (type: `boolean`):

Skip every paid placement (isAd): the paid listings YellowPages ranks at the top of its results, and the sponsored ads shown around them. When this is off, results come in YellowPages' own order and the sponsored ads (often other trades or towns, with call-tracking phone numbers) are only added after a search's result list runs out.

## `onlyWithPhone` (type: `boolean`):

Skip businesses that list no phone number.

## `onlyWithWebsite` (type: `boolean`):

Skip businesses without their own website (a YellowPages-made listing page, reported as ypMicrositeUrl, does not count).

## `onlyWithEmail` (type: `boolean`):

Skip businesses that list no e-mail on their YellowPages page. The e-mail is on the business page, so this opens it even when "Include business page details" is off.

## `minRating` (type: `integer`):

Keep only businesses rated at least this many stars on YellowPages. 0 keeps everything, including unrated businesses.

## `minReviews` (type: `integer`):

Keep only businesses with at least this many YellowPages reviews. 0 keeps everything.

## `maxPagesPerSearch` (type: `integer`):

Optional. Leave empty to page as deep as "Max results" needs. YellowPages shows 30 businesses per page and up to 100 pages (3,000 results) per search.

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

YellowPages sits behind Cloudflare. With the default setting the actor connects through Apify data-center proxies first and moves any refused request to the Apify residential proxies (United States) shown here, so it keeps working when data-center addresses are turned away. If you choose other settings, they are tried first and the residential proxies stay the fallback.

## Actor input object example

```json
{
  "searchTerms": [
    "plumber",
    "electrician"
  ],
  "location": "Chicago, IL",
  "maxResults": 100,
  "includeDetails": true,
  "excludeAds": false,
  "onlyWithPhone": false,
  "onlyWithWebsite": false,
  "onlyWithEmail": false,
  "minRating": 0,
  "minReviews": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

Every scraped business as a JSON item in the default dataset.

## `summary` (type: `string`):

Each search with the number of results YellowPages lists, pages read and rows saved.

# 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 = {
    "searchTerms": [
        "plumber"
    ],
    "location": "Chicago, IL",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/yellowpages-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 = {
    "searchTerms": ["plumber"],
    "location": "Chicago, IL",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/yellowpages-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 '{
  "searchTerms": [
    "plumber"
  ],
  "location": "Chicago, IL",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call scrapesage/yellowpages-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/yellowpages-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/4gcxuX1krHbNZmB3A/builds/xREqEnTRNrV1HGetx/openapi.json
