# Local Business Lead Builder (`mambalabs/local-business-lead-builder`) Actor

Build local business lead lists from Google Maps. Enter a category and a place, or a search like dentist in Austin, TX. Get one row per business with website, phone, full address, coordinates, categories, rating, review count, and hours. No Google API key. CSV or Clay ready.

- **URL**: https://apify.com/mambalabs/local-business-lead-builder.md
- **Developed by:** [Mamba Labs](https://apify.com/mambalabs) (community)
- **Categories:** Lead generation, Automation, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.55 / 1,000 place rows

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

## Local Business Lead Builder

Build a local business lead list from Google Maps. Enter a business category and a place, such as roofing contractor and Denver, CO, or a full search such as dentist in Austin, TX. You get one row per business with its name, website, phone, full address, coordinates, categories, star rating, review count, and opening hours, plus one free summary row per search. Rows are flat, so they export to CSV or drop into a Clay table.

### Features

- **Categories times places.** Give a list of categories and a list of locations and every pair is searched, or paste your own searches one per line. Up to 100 searches and 500 businesses per search in one run.
- **The fields a lead list needs.** Website (tracking parameters removed) and its domain, phone in local and international format, street, city, postal code, state, country, latitude, longitude, every Google Maps category, rating, review count, and weekly hours.
- **Filters that save money.** Minimum rating, minimum reviews, website required, and phone required. A business your filters drop is not returned and not charged.
- **No repeats.** A business found by two searches in the same run is returned once and charged once. The Google place ID is on every row, so you can dedupe across runs too.
- **A summary per search.** Each search ends with one free row that says how many businesses Google Maps listed, how many were returned, and how many pages were read.
- **Cost guards.** Max places per search and a max charge per run.

### How it reads Google Maps

The actor sends the same search request the Google Maps web page sends and reads the businesses from the answer, 20 per page, through the Apify proxy. A refused request moves to Apify residential addresses on its own. No Google account, no Google API key, and no other developer's actor.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `queries` | array | | Searches, one per line, the way you type them in Google Maps. The Console form starts with `plumber in Austin, TX` |
| `categories` | array | | Business categories. Each is searched in every location |
| `locations` | array | | Places: a city with its state or country, a ZIP code, or a neighborhood |
| `max_places_per_query` | string | `20` | Place rows per search, 1 to 500 |
| `min_rating` | string | | Keep businesses rated at or above this, for example `4.0` |
| `min_reviews` | string | | Keep businesses with at least this many reviews |
| `require_website` | string | `false` | Skip businesses with no website |
| `require_phone` | string | `false` | Skip businesses with no phone |
| `dedupe` | string | `true` | Skip a business an earlier search in the run returned |
| `language` | string | `en` | Language of the results |
| `country` | string | `us` | Country Google uses to rank results |
| `max_charge_usd` | string | | Stop before a row would pass this amount |
| `proxy_mode` | string | `auto` | `auto` (Apify proxy, residential when refused) or `residential`. A reliability choice |

Every field is text, so a Clay column can fill any of them: numbers as `"60"`, yes or no as `"true"` or `"false"`. Lists also accept text: one item per line, items split by a semicolon or a pipe, or a JSON array. A comma does not split, so `Austin, TX` stays one place.

### Output

| Field | Example |
|---|---|
| `row_type` | `place` or `query_summary` |
| `query`, `category_searched`, `location_searched`, `rank` | `plumber in Austin, TX`, `null`, `null`, `1` |
| `name`, `place_id`, `google_maps_url` | `Reliant Plumbing - Austin`, `ChIJO3z3jPnLRIYRdSUTGwQd_dk`, link |
| `website`, `website_domain` | `https://reliantplumbing.com/plumbing-projects-austin/`, `reliantplumbing.com` |
| `phone`, `phone_international` | `(512) 675-4220`, `+1 512-675-4220` |
| `address`, `street`, `city`, `postal_code`, `state`, `country_code` | `12111 Menchaca Rd, Austin, TX 78748`, ..., `US` |
| `latitude`, `longitude` | `30.1421389`, `-97.8326841` |
| `primary_category`, `categories` | `Plumber`, `["Plumber"]` |
| `rating`, `review_count` | `4.7`, `1717` |
| `hours_text`, `open_status_text` | `Wednesday: Open 24 hours; ...`, `Open 24 hours` |
| `places_found`, `places_returned`, `pages_read` | query summary rows only |
| `row_status`, `error_reason`, `billable_events_json` | `ok`, `null`, `{"place-row":1}` |

The run summary (key-value store record `RUN_SUMMARY`) lists searches, places, filtered and repeat counts, requests, and the proxy route used.

### Pricing

Pay per event. You pay only these events; the Apify platform and proxy costs of your run are paid by Mamba Labs.

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Place row (`place-row`), one business | $0.003 | $0.00285 | $0.0027 | $0.00255 |
| Actor start (`apify-actor-start`), once per run | $0.0005 | $0.0005 | $0.0005 | $0.0005 |

Free rows: the search summary rows, and blocked, error, and no results rows. Businesses removed by your filters and repeats skipped by `dedupe` are not returned and not charged. On the Apify free plan the actor stops at 1.50 USD of evaluation a month (about 500 place rows); any paid Apify plan removes that cap.

Example: 3 searches with 60 places each return 180 place rows for about 0.54 USD plus the 0.0005 USD start.

### Usage examples

#### Apify Console or API

```json
{ "queries": ["plumber in Austin, TX", "dentist in Manchester, UK"], "max_places_per_query": "60" }
```

```json
{ "categories": ["roofing contractor", "HVAC contractor"], "locations": ["Denver, CO", "Boulder, CO"], "min_rating": "4.0", "require_website": "true", "max_places_per_query": "100" }
```

#### Clay

Add an HTTP API or Apify column that sends a category and a city from your table, then map `name`, `website_domain`, `phone`, `city`, `rating`, and `review_count` into columns. Send `website_domain` on to an email finder or a company enricher.

#### MCP

The MCP server `@mambalabsdev/mcp-local-business-lead-builder` exposes this actor as a tool for Claude and other MCP clients.

### Error handling

| Situation | What you get |
|---|---|
| Google Maps refuses every route for a search | One free summary row with `row_status` `blocked` and the reason |
| A search has no businesses, or none pass your filters | One free summary row with `row_status` `no_results` and the counts |
| Google stops answering mid search | The rows already read ship, and the summary row says where it stopped |
| Max charge reached | The run stops before the next billable row and says why in the status message |

### Limitations

- Google Maps lists at most a few hundred businesses for one search. For a whole metro area, split it into neighborhoods or ZIP codes.
- The place is read from your search text. Name the state or country (`Portland, OR`, `Portland, ME`) to avoid the wrong city.
- Fields are what the Google Maps profile shows. A business with no website or phone on its profile returns null for that field. The actor does not visit business websites or find emails.
- Hours are as listed on the day of the run and include holiday changes Google shows.
- Google can change the format of its Maps answers without notice. A change shows as `blocked` or `error` summary rows until the actor is updated.
- Google's terms govern its services, and its robots.txt asks crawlers not to request `/search`. You are responsible for how you use the rows.

### More from Mamba Labs

| Actor | Actor ID |
|---|---|
| [Account Hiring Watch](https://apify.com/mambalabs/account-hiring-watch?fpr=mamba) | `gRAZA5WBi1r6L0gy7` |
| [Agent Accessibility Auditor](https://apify.com/mambalabs/agent-accessibility-auditor?fpr=mamba) | `anxbRv0lKrpQ1pnua` |
| [Agent to Brokerage Resolver](https://apify.com/mambalabs/agent-brokerage-resolver?fpr=mamba) | `ePRRGLxOGyaVHO4dI` |
| [AI Tooling Detector](https://apify.com/mambalabs/ai-tooling-detector?fpr=mamba) | `EwkHhmqiuJgRoVEbE` |
| [B2B Reddit Conversation Monitor](https://apify.com/mambalabs/b2b-reddit-conversation-monitor?fpr=mamba) | `SoDryzzsjmY3SsiyG` |
| [Bluesky Brand Presence Mapper](https://apify.com/mambalabs/bluesky-brand-presence-mapper?fpr=mamba) | `eLpxzP4IuXznlFVND` |
| [Career Change Signal Engine](https://apify.com/mambalabs/career-change-signal-engine?fpr=mamba) | `vX2Yga1a6wGaXaP14` |
| [Company Change Event Feed](https://apify.com/mambalabs/company-change-event-feed?fpr=mamba) | `oX44rS0fkEJ3rXLWe` |
| [Company Contact Details Extractor](https://apify.com/mambalabs/company-contact-details-extractor?fpr=mamba) | `4mMncKaJykiq94grz` |
| [Company Discovery List Builder](https://apify.com/mambalabs/company-discovery-list-builder?fpr=mamba) | `jch0HdaZnpbMqlcGS` |
| [Company Firmographic Enricher](https://apify.com/mambalabs/company-firmographic-enricher?fpr=mamba) | `YlUtLWjfPpqykmB8g` |
| [Company Funding Record](https://apify.com/mambalabs/funding-investor-record?fpr=mamba) | `OFS4Mt1gyYNtGfUbE` |
| [Company Identity Resolver](https://apify.com/mambalabs/company-identity-resolver?fpr=mamba) | `lr8fTRAmZCBZmuwwh` |
| [Company Social Presence Mapper](https://apify.com/mambalabs/company-social-presence-mapper?fpr=mamba) | `4k6CCemkgBDz18m2h` |
| [Contact Classifier](https://apify.com/mambalabs/contact-classifier?fpr=mamba) | `0lGSeYJmniXhGANnO` |
| [Cookie Consent Audit](https://apify.com/mambalabs/cookie-consent-audit?fpr=mamba) | `TrKyOS0KBoGC35nbr` |
| [Domain Deliverability Checker](https://apify.com/mambalabs/domain-deliverability-checker?fpr=mamba) | `0tVgxI7A6o9jMlxmc` |
| [Domain to LinkedIn URL Resolver](https://apify.com/mambalabs/domain-to-linkedin-url-resolver?fpr=mamba) | `3HtnSaqPHOg1Qg5gx` |
| [Ecommerce Platform Profiler](https://apify.com/mambalabs/ecommerce-platform-profiler?fpr=mamba) | `5G2NeYjBbQTjaTn9L` |
| [Event Presence Index](https://apify.com/mambalabs/event-presence-index?fpr=mamba) | `WLhMy8fMDgsxdYxv5` |
| [Expert Witness Directory](https://apify.com/mambalabs/expert-witness-directory?fpr=mamba) | `LIpwlgfE3LaQBaXd4` |
| [Funding and Press Signal Scanner](https://apify.com/mambalabs/funding-press-signal-scanner?fpr=mamba) | `FS13X6dhQVgX3XOM6` |
| [GitHub Organization Signal Scanner](https://apify.com/mambalabs/github-organization-signal-scanner?fpr=mamba) | `ahF8RRpv5mzPao5CN` |
| [Google Ads Transparency Monitor](https://apify.com/mambalabs/google-ads-transparency-monitor?fpr=mamba) | `1eOwxhBVxzvOXAm4s` |
| [Government Contract Award Monitor](https://apify.com/mambalabs/public-award-monitor?fpr=mamba) | `zhEtllASykOcx9hJ8` |
| [GTM Hiring Signal Scraper](https://apify.com/mambalabs/gtm-hiring-signal-scraper?fpr=mamba) | `D7O1SA2EqwHGsGr1P` |
| [GTM Signals Aggregator](https://apify.com/mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay?fpr=mamba) | `xKdRfnfFNkdMpFuNs` |
| [ICP Fit Scorer](https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay?fpr=mamba) | `W161DT8W4kW55dMFh` |
| [Influencer Change Monitor](https://apify.com/mambalabs/creator-change-monitor?fpr=mamba) | `d2VVgahNL6UmcLkhg` |
| [Influencer Finder](https://apify.com/mambalabs/creator-finder?fpr=mamba) | `tpkedmloIIWtXx6sg` |
| [Influencer Lead List Builder](https://apify.com/mambalabs/creator-lead-list-all-in-one?fpr=mamba) | `KnmByszcv135yM30G` |
| [Influencer Profile Scraper](https://apify.com/mambalabs/creator-profile-reader?fpr=mamba) | `EqEnklDVMIcB1V499` |
| [Influencer Talent Agency Lookup](https://apify.com/mambalabs/talent-agency-lookup?fpr=mamba) | `zCuX4Mgyg6JvXgGzd` |
| [Instagram Facebook Brand Presence Mapper](https://apify.com/mambalabs/meta-brand-presence-mapper?fpr=mamba) | `HXh65I0JBjPsunbY8` |
| [Integration and Marketplace Presence Mapper](https://apify.com/mambalabs/integration-marketplace-presence-mapper?fpr=mamba) | `V0guNuvM85Q61f2gj` |
| [Job Board Keyword Signal Scanner](https://apify.com/mambalabs/job-board-keyword-signal-scanner?fpr=mamba) | `4DvqpvhMR74NLcDDY` |
| [Job Change Tracker](https://apify.com/mambalabs/job-change-tracker?fpr=mamba) | `L8UbEmMJC1XYPSZOb` |
| [Job Posting Monitor](https://apify.com/mambalabs/gtm-job-discovery?fpr=mamba) | `QCfICD9kOPiOdj5iI` |
| [Legal Entity Resolver](https://apify.com/mambalabs/legal-entity-resolver?fpr=mamba) | `KHFyPCDIx7CyqULYm` |
| [Link in Bio Scraper and Newsletter Detector](https://apify.com/mambalabs/link-in-bio-newsletter-checker?fpr=mamba) | `OorucdheTIgu7RFzK` |
| [LinkedIn Company Page Mapper](https://apify.com/mambalabs/linkedin-company-presence-mapper?fpr=mamba) | `zOPm6A9JEhUGcIdFW` |
| [LinkedIn Post Tracker](https://apify.com/mambalabs/linkedin-post-engager-capture?fpr=mamba) | `oiGLNPuaf5BRaz9K5` |
| [Meta Ad Library Monitor](https://apify.com/mambalabs/meta-ad-library-monitor?fpr=mamba) | `J1GWlSXfSGU3u8Wng` |
| [Mobile Phone Waterfall](https://apify.com/mambalabs/mobile-phone-waterfall-orchestrator?fpr=mamba) | `6OOgPktf7RIa5XCOP` |
| [New Hire Finder](https://apify.com/mambalabs/new-hire-finder?fpr=mamba) | `cKuc38p4nYHNF3IW8` |
| [Outbound Stack Detector](https://apify.com/mambalabs/outbound-infrastructure-fingerprint?fpr=mamba) | `v43UJC8r7qW7cBSTG` |
| [Page Finder and Extractor](https://apify.com/mambalabs/page-finder-extractor?fpr=mamba) | `TpurgcOZbVnknlaiC` |
| [People Finder & Email Verifier](https://apify.com/mambalabs/people-finder?fpr=mamba) | `LEgloG7tWgQl4o6TD` |
| [Person Social Footprint Mapper](https://apify.com/mambalabs/person-social-footprint-mapper?fpr=mamba) | `jfQXa2zW9FHCJot9K` |
| [Pinterest Brand Presence Mapper](https://apify.com/mambalabs/pinterest-brand-presence-mapper?fpr=mamba) | `d1HvjZfKhgvWsoEwn` |
| [Prospect Engine](https://apify.com/mambalabs/b2b-prospect-engine?fpr=mamba) | `q9rT6v64nUJdPexOQ` |
| [Publishing Frequency Tracker](https://apify.com/mambalabs/blog-publishing-frequency?fpr=mamba) | `TbLwaUUATdYb6wp4N` |
| [Reddit Brand Presence Mapper](https://apify.com/mambalabs/reddit-brand-presence-mapper?fpr=mamba) | `pKQZmDaT70SEb54bZ` |
| [Reporting Window Finder](https://apify.com/mambalabs/public-company-reporting-window-finder?fpr=mamba) | `uINxR7a1IW8qUTRUX` |
| [Sequencer Lead Push](https://apify.com/mambalabs/clay-to-instantly-smartlead-push?fpr=mamba) | `0Jv27VeWM5tSZQs9x` |
| [Team Page People Extractor](https://apify.com/mambalabs/team-page-people-extractor?fpr=mamba) | `j8a9zX0k4mNbvDbWK` |
| [Tech Stack Signal Detector](https://apify.com/mambalabs/gtm-tech-stack-signal-scraper?fpr=mamba) | `qyd7nNyqFPelQViBx` |
| [TikTok Brand Presence Mapper](https://apify.com/mambalabs/tiktok-brand-presence-mapper?fpr=mamba) | `fco8FvoJcSafbeyd1` |
| [Trustpilot Reputation Enricher](https://apify.com/mambalabs/review-platform-reputation-enricher?fpr=mamba) | `3lIqfCt61j4hqE1xz` |
| [WCAG Accessibility Audit](https://apify.com/mambalabs/wcag-accessibility-audit?fpr=mamba) | `P3jBj3FRghKEhX52z` |
| [Website Traffic Rank Estimator](https://apify.com/mambalabs/website-traffic-rank-estimator?fpr=mamba) | `GnOFUzlNVIoXgeJjH` |
| [Work Email Waterfall](https://apify.com/mambalabs/email-waterfall-orchestrator?fpr=mamba) | `OT6xqTFThC0Rjf7Zj` |
| [Workplace Program Detector](https://apify.com/mambalabs/workplace-program-detector?fpr=mamba) | `Li6pPDhqbdzFz3h7G` |
| [X Brand Presence Mapper](https://apify.com/mambalabs/x-brand-presence-mapper?fpr=mamba) | `oLOgadhHUkNAyDA3w` |
| [YouTube Channel Stats Extractor](https://apify.com/mambalabs/youtube-channel-transcript-extractor?fpr=mamba) | `6hSpD3kd2s2IQ4VSs` |

Built by [Mamba Labs](https://apify.com/mambalabs?fpr=mamba).

# Actor input Schema

## `queries` (type: `array`):

One search per line, the way you would type it in Google Maps: a business category and a place, for example dentist in Austin, TX. Up to 100 searches per run. Leave empty when you use Categories and Locations.

## `categories` (type: `array`):

Business categories, for example roofing contractor or dental clinic. Each category is searched in every location below. Use this or Searches, or both.

## `locations` (type: `array`):

Places to search in: a city with its state or country (Denver, CO or Manchester, UK), a ZIP code, or a neighborhood. Each is combined with every category above.

## `max_places_per_query` (type: `string`):

Stop each search after this many place rows. Google Maps lists about 20 businesses per page; dense categories in large cities go past 200.

## `min_rating` (type: `string`):

Keep only businesses rated at or above this, for example 4.0. Filtered businesses are not returned and are not charged.

## `min_reviews` (type: `string`):

Keep only businesses with at least this many Google reviews. Filtered businesses are not charged.

## `require_website` (type: `string`):

Skip businesses with no website on their Google Maps profile. Skipped businesses are not charged.

## `require_phone` (type: `string`):

Skip businesses with no phone number on their Google Maps profile. Skipped businesses are not charged.

## `dedupe` (type: `string`):

When on, a business that an earlier search in the same run already returned is skipped and not charged. When off, it is returned again with Repeat set to true and charged again.

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

Language of the Google Maps results as a two letter code, for example en, de, or fr.

## `country` (type: `string`):

Two letter country code Google uses to rank results, for example us, gb, or de. Name the place in the search too.

## `max_charge_usd` (type: `string`):

Stop before a row would push this run past this amount. Empty: no limit beyond the one you set in Apify.

## `proxy_mode` (type: `string`):

Auto sends requests through the Apify proxy pool and moves a request to residential addresses only when Google refuses it. Residential only is slower. This is a reliability choice; under pay per event the proxy is not billed to you.

## `source_tag` (type: `string`):

Internal attribution tag for published tasks. Leave empty.

## Actor input object example

```json
{
  "queries": [
    "plumber in Austin, TX"
  ],
  "max_places_per_query": "20",
  "require_website": "false",
  "require_phone": "false",
  "dedupe": "true",
  "language": "en",
  "country": "us",
  "proxy_mode": "auto"
}
```

# Actor output Schema

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

No description

## `run_summary` (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 = {
    "queries": [
        "plumber in Austin, TX"
    ],
    "max_places_per_query": "20"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/local-business-lead-builder").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 = {
    "queries": ["plumber in Austin, TX"],
    "max_places_per_query": "20",
}

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/local-business-lead-builder").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 '{
  "queries": [
    "plumber in Austin, TX"
  ],
  "max_places_per_query": "20"
}' |
apify call mambalabs/local-business-lead-builder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mambalabs/local-business-lead-builder"
        }
    }
}
```

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/qMN97aoHhsAS5bznV/builds/nuWvAYKL0nfEanNxh/openapi.json
