# US Labor Union Leads & Financials Scraper (DOL OLMS) (`scrapesage/us-labor-union-leads`) Actor

Scrape every US labor union from official DOL OLMS LM-2/3/4 reports: union name, affiliation, named contact, mailing address, members, assets, receipts, disbursements, officer salaries, dues & vendors + lead score. Filter by state, affiliation & size, with monitoring.

- **URL**: https://apify.com/scrapesage/us-labor-union-leads.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 union lead records

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## US Labor Union Leads & Financials Scraper — DOL OLMS (Contacts, Officers, Members & Money)

Extract **every US labor union** from the official **[U.S. Department of Labor — OLMS Online Public Disclosure Room](https://olmsapps.dol.gov/olpdr/)** in one run. Every union in the country files an annual financial report (**Form LM-2 / LM-3 / LM-4**), and this actor turns those filings into a clean, ready-to-use **B2B lead + financial-intelligence record**: union name, **national affiliation**, file number, local designation, a **named contact + full mailing address**, **members**, total **assets / liabilities / receipts / disbursements** with itemized breakdowns, the **officer & employee roster with reported compensation**, the **membership breakdown**, the **dues schedule**, the union's **largest vendors & payees**, and a derived **lead score**.

The same run also pulls two related OLMS datasets that nobody else has on Apify: the **labor-relations / "persuader" consultants** that file **LM-20/21** (the union-avoidance consulting industry) and the **employers** that file **LM-10** persuader-activity reports — each identified by `recordType` so you can keep them together or split them out.

No login, no cookies, no browser, **no API key** — fast, reliable extraction straight from the federal source files.

### Why this labor union scraper?

Generic Google-Maps or LinkedIn scrapers give you a union's name and a guessed phone number and nothing else. This actor reads the official OLMS annual reports directly and ships the **richest union dataset in the category** — firmographics **and** the full financial picture (assets, receipts, disbursements, officer pay, dues, vendors) in one clean table, for the entire country.

| Data | Maps / LinkedIn scrapers | This actor |
|---|---|---|
| Union name, local designation, national affiliation | partial | ✅ full name + affiliation decoded |
| **Named contact** + full mailing address | guessed | ✅ from the federal record |
| **Members** | ❌ | ✅ |
| Total **assets / liabilities / receipts / disbursements** | ❌ | ✅ |
| Itemized **receipts & disbursements** (dues, political, benefits, per-capita…) | ❌ | ✅ |
| **Officer & employee roster** + reported compensation | ❌ | ✅ top earners first |
| **Membership breakdown** + **dues / initiation-fee schedule** | ❌ | ✅ |
| **Top vendors & payees** (CPA, law firm, investments, printing…) | ❌ | ✅ optional |
| Form type (LM-2 / LM-3 / LM-4), fiscal-year end, PAC / trust flags | ❌ | ✅ |
| Derived **lead score + lead signals** | ❌ | ✅ |
| Only-new / amended **monitoring mode** | ❌ | ✅ |

### Who buys labor union data?

- **Insurance, benefits & retirement providers** — unions sponsor health, pension and welfare funds; target them by size and assets for group benefits, fiduciary services, and D\&O / fidelity-bond coverage. Pairs perfectly with the **[Form 5500 ERISA Scraper](https://apify.com/scrapesage/form-5500-erisa-scraper)** for the plans those unions run.
- **Banks, credit unions & investment managers** — unions hold **billions in assets and investments**; the financials show exactly who has cash, securities and treasuries to manage.
- **Union & association software (CRM, dues, member management, compliance)** — sell to active filers segmented by form type, members and budget.
- **Law firms & labor-relations consultants** — the full competitive field of organized labor, with officers, finances and activity, in one table.
- **Vendors that sell to unions** — printing, travel, events, promotional items, telecom, professional services; see who each union already pays and how much.
- **Researchers, journalists, PACs & policy teams** — officer compensation, political spending, per-capita taxes and PAC flags for the entire labor movement.
- **Labor-relations & union-organizing market** — the **LM-20/21 persuader consultants** are the complete directory of the union-avoidance consulting industry; the **LM-10 employers** are companies that reported persuader activity. Gold for unions, organizers, labor-law firms and journalists tracking who hires whom.

### 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 the **US Labor Union Leads & Financials Scraper**, optionally set **states**, **affiliations** (e.g. `USW`, `IBEW`, `SEIU`), a **form type** or a **minimum members / assets**, and choose your limit and sort.
3. Click **Start** and watch records stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "states": ["CA", "NY", "IL"],
    "affiliations": ["USW", "IBEW", "SEIU"],
    "formTypes": ["LM-2"],
    "minMembers": 500,
    "includeOfficers": true,
    "includeVendors": true,
    "sortBy": "assetsHigh",
    "maxResults": 1000
}
```

- **includeUnions / includeLaborConsultants / includeEmployerReports** *(all default true)* — pick which OLMS datasets to pull: labor unions (LM-2/3/4), labor-relations persuader consultants (LM-20/21) and/or employer persuader reports (LM-10). Turn off the ones you don't need.
- **years** — specific filing years (e.g. `["2025","2024"]`). Each union's most recent report across the chosen years is kept. Leave empty to use **recentYears**. *(Applies to unions only.)*
- **recentYears** *(default 2)* — when `years` is empty, load the N newest years; 2 covers the full current universe of active filers.
- **states** — 2-letter US state codes. Leave empty for all.
- **affiliations** — national affiliation abbreviations (`USW`, `IBEW`, `IBT`, `SEIU`, `UAW`, `NALC`, `AFGE`…). Use `UNAFF` for independent unions.
- **formTypes** — `LM-2` (large, $250k+), `LM-3` (mid, $10k–250k), `LM-4` (small).
- **unionNameQuery** — keep only unions whose name / affiliation / local contains this text.
- **activeOnly** *(default true)* — drop unions that filed a terminal (dissolution / merger) report.
- **minMembers / maxMembers / minAssets / minReceipts** — size filters.
- **hasPacFunds / withContactNameOnly / minLeadScore** — record filters.
- **includeOfficers / maxOfficers** — attach the officer & employee roster with compensation (top earners first).
- **includeVendors** — attach the union's largest itemized vendors & payees.
- **sortBy** — `leadScore` (default), `assetsHigh`, `receiptsHigh`, `disbursementsHigh`, `membersHigh`, `newestFiling`, or `name`.
- **maxResults / includeRawFields** — output controls.
- **monitorMode / monitorKey** — only return unions whose report is new or was amended since the last run with the same key.
- **proxyConfiguration** — optional; the source is public and needs no proxy, so leave it off for the fastest runs.

### Output

By default you get **one clean, dense table** of labor unions. A record:

```json
{
    "recordType": "laborUnion",
    "source": "DOL OLMS Union Annual Report (LM-2/LM-3/LM-4)",
    "unionName": "Electrical Workers IBEW AFL-CIO",
    "affiliationAbbr": "IBEW",
    "affiliationName": "International Brotherhood of Electrical Workers",
    "fileNumber": "38430",
    "localDesignation": "LU 322",
    "formType": "LM-2",
    "formTypeLabel": "LM-2 (large union, $250k+ in receipts)",
    "yearCovered": 2025,
    "fiscalYearEndMonth": "August",
    "status": "active",
    "contactName": "Jerry Payne",
    "street": "691 English Drive",
    "city": "Casper",
    "state": "WY",
    "zip": "82601",
    "fullAddress": "691 English Drive, Casper, WY, 82601",
    "members": 790,
    "totalAssets": 8172038,
    "totalLiabilities": 0,
    "netAssets": 8172038,
    "totalReceipts": 2219060,
    "totalDisbursements": 1807380,
    "receipts": { "dues": 542527, "interest": 79958, "dividends": 198776, "fees": 1298289, "fromMembers": 26167 },
    "disbursements": { "representationalActivities": 326825, "politicalActivities": 0, "benefits": 207667, "toOfficers": 320753, "perCapitaTax": 429945 },
    "assets": { "cash": 2007124, "investments": 5869320, "fixedAssets": 240592 },
    "officers": [
        { "name": "Jerry D Payne", "title": "Business Manager/Fin Sec", "type": "officer", "totalCompensation": 133003 }
    ],
    "officerCount": 18,
    "totalOfficerCompensation": 531131,
    "membershipBreakdown": [{ "category": "\"A\" Members", "number": 742, "votingEligible": true }],
    "duesRates": [{ "rateType": "Regular dues/fees", "amount": "$42.00-$104.00", "unit": "MONTH" }],
    "topVendors": [{ "name": "Miller Kaplan Arase", "city": "Burbank", "state": "CA", "typeOrClass": "Cpa Firm", "total": 28790 }],
    "hasPacFunds": false,
    "hasTrust": true,
    "leadScore": 77,
    "leadSignals": ["Named contact (Jerry Payne)", "790 members", "$8.2M in assets", "Sponsors a trust/benefit fund"],
    "scrapedAt": "2026-06-21T16:03:33.000Z"
}
```

Every record also carries the raw OLMS report row under `sourceFields` unless you turn off **includeRawFields**. Switch the dataset view to **Leads**, **Financials**, **Officers**, or **Labor-relations filers** for a focused table.

#### Record types

The dataset mixes three record types (use the `recordType` field, or the source toggles, to split them):

- **`laborUnion`** — the LM-2/3/4 union record shown above (the main, richest dataset).
- **`laborRelationsConsultant`** — an LM-20/21 labor-relations / "persuader" consulting firm.
- **`employerReport`** — an employer that filed an LM-10 persuader-activity report.

A labor-relations consultant / employer record:

```json
{
    "recordType": "laborRelationsConsultant",
    "source": "DOL OLMS LM-20/21 (Labor Relations Consultant Report)",
    "filerType": "LM-20/21",
    "entityName": "Colon, Edwin A.",
    "companyName": "Colon, Edwin A.",
    "relatedNames": ["Industrial Relations Consultants", "Quigley, Robert J."],
    "city": "Beverly Hills",
    "state": "CA",
    "allStates": ["CA"],
    "srNumber": "257",
    "filerIds": ["100228", "100229", "100230"],
    "filingCount": 3,
    "leadScore": 67,
    "leadSignals": ["Labor relations / persuader consultant (LM-20/21)", "3 related entities / DBAs", "3 filings on record"]
}
```

#### What to expect (field coverage)

OLMS reports are official regulatory filings, so the core fields are near-complete. Note that the federal bulk file **does not publish phone or e-mail** — it provides a **named contact and full mailing address** (ideal for direct mail and CRM enrichment), plus the deepest financial detail available on any union.

| Field group | Coverage |
|---|---|
| Union name, affiliation, file number, form type, state | ✅ ~100% |
| Named contact + full mailing address | ✅ ~99% |
| Members | ✅ ~93% |
| Total assets / receipts / disbursements | ✅ ~89% (LM-2/LM-3; LM-4 are small unions) |
| Officer roster + compensation (LM-2/LM-3) | ✅ |
| Membership breakdown, dues schedule, vendors | ✅ where the union itemizes them |
| Phone / e-mail | ❌ not published by OLMS |

A blank field means the source doesn't publish that signal for that report — not that scraping failed. Nothing is dropped, so you always get the richest record available.

### Automate & schedule

- **[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 weekly/monthly with **monitoring mode** to capture newly-filed and amended union reports as fresh leads (OLMS refreshes the public disclosure data continuously as unions file).
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, e-mail sequence) the moment a run finishes.

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

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

const run = await client.actor('scrapesage/us-labor-union-leads').call({
    states: ['CA', 'NY'],
    affiliations: ['SEIU', 'IBEW'],
    minMembers: 1000,
    sortBy: 'assetsHigh',
    maxResults: 500,
});

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

### Integrate with any app

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new union leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored state or affiliation gets a new or amended filing.
- **[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 it from your AI agent

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find every active LM-2 union in California with over 1,000 members and at least $5M in assets, with its officers and top vendors" and let it run the scraper 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) — no account, 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.

### More scrapers from scrapesage

- **[Form 5500 ERISA Scraper](https://apify.com/scrapesage/form-5500-erisa-scraper)** — retirement, health & welfare benefit-plan sponsors with assets, participants and service providers (the plans unions run).
- **[Nonprofit & IRS 990 Scraper](https://apify.com/scrapesage/nonprofit-990-scraper)** — tax-exempt organizations with finances and decision-maker leads.
- **[FEC Campaign Finance Scraper](https://apify.com/scrapesage/fec-campaign-finance-scraper)** — committees, PACs, donors and lobbying spend.
- **[US Banks & Credit Unions Scraper](https://apify.com/scrapesage/us-banks-credit-unions-scraper)** — FDIC banks + NCUA credit unions in one schema with assets and branch contacts.
- **[Financial Advisor Scraper](https://apify.com/scrapesage/financial-advisor-scraper)** — SEC / FINRA registered investment advisers and brokers.
- **[SBA Loan Leads Scraper](https://apify.com/scrapesage/sba-loan-leads-scraper)** — small businesses financed under SBA 7(a) & 504.
- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — newly-registered companies as fresh leads.
- **[USASpending Scraper](https://apify.com/scrapesage/usaspending-scraper)** — federal awards and the companies that win them.

***

*Data sourced from the public U.S. Department of Labor, Office of Labor-Management Standards (OLMS) Online Public Disclosure Room. This actor accesses information that labor organizations are required by law to report and that the DOL publishes for public inspection. Use it in compliance with Apify's Terms of Service and applicable laws.*

# Actor input Schema

## `includeUnions` (type: `boolean`):

Include US labor unions from their annual financial reports — the main dataset with members, financials, officers, dues and vendors.

## `includeLaborConsultants` (type: `boolean`):

Include labor-relations ('persuader') consulting firms that file LM-20/21 reports — the union-avoidance / labor-consultant industry, with company names and locations.

## `includeEmployerReports` (type: `boolean`):

Include employers that filed an LM-10 report (payments or arrangements to influence employees' union activity), with company names and locations.

## `years` (type: `array`):

Specific filing years to load (e.g. \["2025","2024"]). Each union's most recent report across the selected years is kept. Leave empty to use 'Recent years' instead.

## `recentYears` (type: `integer`):

When 'Report years' is empty, load the N most recent years and keep each union's newest report. 2 covers the full current universe of active filers. Increase for deeper history.

## `states` (type: `array`):

Keep only unions located in these US states (2-letter codes, e.g. \["CA","NY","TX"]). Leave empty for all states.

## `affiliations` (type: `array`):

Keep only unions affiliated with these national organizations (the abbreviation, e.g. \["USW","IBEW","SEIU","IBT","UAW","NALC"]). Use UNAFF for independent / unaffiliated unions. Leave empty for all.

## `formTypes` (type: `array`):

Keep only these report types: LM-2 (large unions, $250k+ in annual receipts), LM-3 (mid-size, $10k–250k) or LM-4 (small, under $10k). Leave empty for all.

## `unionNameQuery` (type: `string`):

Keep only unions whose name, affiliation or local designation contains this text (case-insensitive). Optional.

## `activeOnly` (type: `boolean`):

Drop unions that filed a terminal report (i.e. that have dissolved or merged away). On by default.

## `minMembers` (type: `integer`):

Keep only unions reporting at least this many members.

## `maxMembers` (type: `integer`):

Keep only unions reporting at most this many members (e.g. to target small locals).

## `minAssets` (type: `integer`):

Keep only unions with at least this much in total assets (USD).

## `minReceipts` (type: `integer`):

Keep only unions with at least this much in total annual receipts (USD).

## `hasPacFunds` (type: `boolean`):

Keep only unions that report maintaining a political action committee (separate segregated fund).

## `withContactNameOnly` (type: `boolean`):

Keep only unions that list a named contact person on the report.

## `minLeadScore` (type: `integer`):

Keep only unions with a lead score at or above this value (0-100).

## `includeOfficers` (type: `boolean`):

Attach the union's officers & employees with titles and reported compensation (top earners first).

## `maxOfficers` (type: `integer`):

How many officers / employees (top compensation first) to attach per union.

## `includeVendors` (type: `boolean`):

Attach the union's largest itemized vendors and payees (name, city/state, type, amount) — who the union pays for legal, accounting, investments, printing, travel, etc. Adds detail and run time.

## `sortBy` (type: `string`):

Order of the output.

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

Maximum number of unions to return.

## `includeRawFields` (type: `boolean`):

Attach the raw OLMS report row (all original columns) under sourceFields on each record.

## `monitorMode` (type: `boolean`):

Only return unions whose report is new or was amended since the last run with the same monitor key. Ideal on a Schedule to catch newly-filed and updated union reports as fresh leads.

## `monitorKey` (type: `string`):

Namespace for monitoring mode so independent monitors don't collide. Use a distinct key per saved configuration.

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

Optional. The DOL OLMS source is public government data and needs no proxy, so leave this off for the fastest runs. Enable only if you need to route requests through a proxy.

## Actor input object example

```json
{
  "includeUnions": true,
  "includeLaborConsultants": true,
  "includeEmployerReports": true,
  "years": [],
  "recentYears": 2,
  "activeOnly": true,
  "hasPacFunds": false,
  "withContactNameOnly": false,
  "includeOfficers": true,
  "maxOfficers": 12,
  "includeVendors": false,
  "sortBy": "leadScore",
  "maxResults": 1000,
  "includeRawFields": true,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All scraped union records in the default dataset, each with firmographics, contacts, financials, officers and a lead score.

# 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 = {
    "years": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/us-labor-union-leads").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 = { "years": [] }

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/us-labor-union-leads").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 '{
  "years": []
}' |
apify call scrapesage/us-labor-union-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/us-labor-union-leads"
        }
    }
}

```

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/6MUMzWZbgwFL6CP8U/builds/Haw19XgspKKNFT36H/openapi.json
