# Mercado Libre Listings Scraper (`karamelo/mercado-libre-listings-scraper`) Actor

Extract Mercado Libre search listings across Latin America. Get products, prices, reviews, seller details, ratings, shipping, and detailed product enrichment.

- **URL**: https://apify.com/karamelo/mercado-libre-listings-scraper.md
- **Developed by:** [karamelo](https://apify.com/karamelo) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 10 total users, 8 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 result items

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

## Mercado Libre Listings Scraper

### Extract public Mercado Libre product data across Latin America

**Mercado Libre Listings Scraper** turns public search results from 18 Latin American Mercado Libre marketplaces into structured records ready for price monitoring, market research, seller analysis, catalog work, and data pipelines.

Enter a keyword, choose a country marketplace and sort order, set a page limit, and decide whether sponsored results should be included. The Actor always saves matching search listings first. Optional product detail enrichment then adds publicly available product information to a capped number of those results, including descriptions, images, attributes, seller details, availability, and condition. Vehicle listings can also include year, mileage, transmission, and down payment when those values are publicly shown.

> **Actor ID:** `karamelo/mercado-libre-listings-scraper`\
> **Coverage:** Argentina, Bolivia, Brazil, Chile, Colombia, Costa Rica, Dominican Republic, Ecuador, Guatemala, Honduras, Mexico, Nicaragua, Panama, Paraguay, Peru, El Salvador, Uruguay, and Venezuela\
> **Exports:** JSON, CSV, Excel, XML, RSS, and JSONL through the Apify Dataset

### Pricing

This Actor uses pay-per-result pricing. Platform usage is included.

| Output record | Price |
|---|---:|
| Search listing | $2.00 per 1,000 records |
| Enriched product detail | $6.00 per 1,000 records |

Every saved search record is charged as a search listing. When product detail enrichment is enabled, each additional saved product record is charged at the enriched product-detail rate. For example, 1,000 search listings and 100 enriched product records are charged as 1,000 search listings plus 100 enriched product details.

### What data does it extract?

For each visible search result, the Actor can collect:

- product title, image, brand, and direct Mercado Libre public URL;
- current price, previous price, currency, and discount;
- visible coupons, promotions, and installment terms;
- sold quantity and free-shipping signals;
- delivery text, availability, stock status, and shipping origin;
- seller name, seller ID, official-store status, and location;
- rating, review count, and commercial highlights;
- listing, catalog product, user product, variation, and SKU identifiers;
- category, domain, vertical, result type, and ranking position;
- quantity-pricing and international-purchase indicators;
- vehicle year, mileage, transmission, and down payment where relevant.

Field availability depends on the category, listing, country, and information Mercado Libre exposes on the search page. Missing text values are returned as empty strings; unavailable booleans and counts can be `null`.

Every record includes `mode`. Search listing records use `"search"`; enriched product detail records use `"product"`. Product records preserve the values already extracted from their source listing and add detail-page data without replacing existing listing fields such as `sellerName`.

Search records omit product-detail-only fields. Those fields appear only on records with `mode: "product"`, so consumers can filter on `mode` before reading product enrichment columns.

### Common use cases

#### Price, discount, and promotion monitoring

Schedule the same search and compare `currentPrice`, `previousPrice`, `discount`, `promotions`, and `scrapedAt` over time.

#### Competitive intelligence and share of search

Combine `sellerName`, `sellerId`, `sellerReputation`, `sellerPowerStatus`, `isOfficialStore`, `resultPosition`, `soldQuantity`, and `rating` to study seller visibility and marketplace competition.

#### Product and demand research

Use `searchKeyword`, `totalResults`, `categoryId`, `domainId`, and `highlights` to identify active categories, promoted offers, and public demand signals.

#### Catalog matching and deduplication

Use `sku`, `publicationId`, `catalogProductId`, `userProductId`, and `variationId` to connect related records and maintain consistent history.

#### Analytics and AI workflows

Export results to spreadsheets, databases, BI tools, alerting systems, RAG pipelines, or autonomous agents. Keep `scrapedAt` and `productUrl` with each record for traceability.

### Quick start

1. Open the Actor in Apify Console.
2. Enter the product or query in `keyword`.
3. Select one of the 18 marketplaces in `country`.
4. Choose `sort`; use `relevance` to keep Mercado Libre's default order.
5. Set `maxPages`.
6. Use `promoted` to include or exclude sponsored results.
7. To enrich listings, enable `extractProductDetails` and set `maxProductDetails`.
8. Click **Start** and open the **Dataset** tab when the run finishes.

Example input for Argentina:

```json
{
  "keyword": "iphone",
  "country": "https://listado.mercadolibre.com.ar/",
  "sort": "relevance",
  "maxPages": 3,
  "promoted": false,
  "extractProductDetails": true,
  "maxProductDetails": 10
}
```

### Input

| Field | Type | Required | Default | Description |
|---|---|:---:|---|---|
| `keyword` | string | Yes | `iphone` | Product name or search phrase. |
| `country` | string | Yes | Argentina URL | Base URL of one supported country marketplace. |
| `sort` | string | No | `relevance` | Listing order: `relevance`, `price_asc`, `price_desc`, or `newest`. |
| `maxPages` | integer | No | `1` | Number of result pages to process, from 1 to 50. |
| `promoted` | boolean | No | `true` | Include sponsored listings. Set to `false` for organic-only results. |
| `extractProductDetails` | boolean | No | `false` | After all listings are saved, append enriched product records. |
| `maxProductDetails` | integer | No | `10` | Maximum product pages to enrich, capped by the number of unique extracted listings. |
| `includeReviews` | boolean | No | `true` | Include reviews found on enriched product pages. |
| `includeQuestions` | boolean | No | `true` | Include questions and answers found on enriched product pages. |
| `includeVariations` | boolean | No | `true` | Include product variations found on enriched product pages. |
| `proxyConfiguration` | object | No | Apify Residential Proxy | Standard Apify Proxy settings. Custom proxy URLs are rejected. |

`relevance` uses Mercado Libre's standard ranking and does not add a sort marker to the search. Choose `price_asc` for the lowest prices first, `price_desc` for the highest prices first, or `newest` for the newest listings first.

### Supported marketplaces

The `country` input takes the complete URL, not an ISO code.

| Country | ISO | Exact `country` value |
|---|:---:|---|
| Argentina | `AR` | `https://listado.mercadolibre.com.ar/` |
| Bolivia | `BO` | `https://listado.mercadolibre.com.bo/` |
| Brazil | `BR` | `https://lista.mercadolivre.com.br/` |
| Chile | `CL` | `https://listado.mercadolibre.cl/` |
| Colombia | `CO` | `https://listado.mercadolibre.com.co/` |
| Costa Rica | `CR` | `https://listado.mercadolibre.co.cr/` |
| Dominican Republic | `DO` | `https://listado.mercadolibre.com.do/` |
| Ecuador | `EC` | `https://listado.mercadolibre.com.ec/` |
| Guatemala | `GT` | `https://listado.mercadolibre.com.gt/` |
| Honduras | `HN` | `https://listado.mercadolibre.com.hn/` |
| Mexico | `MX` | `https://listado.mercadolibre.com.mx/` |
| Nicaragua | `NI` | `https://listado.mercadolibre.com.ni/` |
| Panama | `PA` | `https://listado.mercadolibre.com.pa/` |
| Paraguay | `PY` | `https://listado.mercadolibre.com.py/` |
| Peru | `PE` | `https://listado.mercadolibre.com.pe/` |
| El Salvador | `SV` | `https://listado.mercadolibre.com.sv/` |
| Uruguay | `UY` | `https://listado.mercadolibre.com.uy/` |
| Venezuela | `VE` | `https://listado.mercadolibre.com.ve/` |

Run one task per country when comparing markets. This keeps each currency, domain, ranking, result count, and marketplace condition separate.

### Output example

```json
{
  "mode": "search",
  "thumbnailUrl": "https://http2.mlstatic.com/D_NQ_NP_EXAMPLE-O.webp",
  "currency": "ARS",
  "currentPrice": "89999",
  "previousPrice": "119999",
  "discount": "25% OFF",
  "vehicleYear": "",
  "vehicleMileage": "",
  "downPayment": "",
  "transmission": "",
  "title": "Example iPhone",
  "installments": "6 interest-free installments",
  "promotions": "",
  "soldQuantity": 25,
  "freeShipping": true,
  "inStock": null,
  "sellerName": "EXAMPLE STORE",
  "isOfficialStore": true,
  "sku": "MLA987654321",
  "publicationId": "MLA123456789",
  "catalogProductId": "MLA987654321",
  "userProductId": "MLAU555",
  "variationId": "MLA-VAR-1",
  "resultType": "ORGANIC",
  "isPricePerQuantity": false,
  "isInternationalPurchase": false,
  "searchKeyword": "iphone",
  "rating": "4.8",
  "reviewCount": 320,
  "resultPosition": 1,
  "totalResults": "96",
  "productUrl": "https://www.mercadolibre.com.ar/example-product/p/MLA987654321",
  "shipping": "Free delivery",
  "highlights": "",
  "availableIn": "",
  "shipsFrom": "",
  "brand": "Example Brand",
  "categoryId": "MLA1000",
  "domainId": "MLA-HEADPHONES",
  "sellerId": "SELLER-7",
  "vertical": "CORE",
  "verticalId": "CORE",
  "location": "Buenos Aires",
  "scrapedAt": "2026-08-11T10:00:00.000Z",
}
```

### Output fields

| Field | Type | Meaning |
|---|---|---|
| `mode` | string | `search` for a listing record or `product` for an enriched product record. |
| `thumbnailUrl` | string | Primary image URL shown in search. |
| `currency` | string | Marketplace currency code. |
| `currentPrice` | string | Visible current price without the currency symbol. |
| `previousPrice` | string | Former price when shown. |
| `discount` | string | Visible discount label. |
| `vehicleYear` | string | Vehicle model year, when applicable. |
| `vehicleMileage` | string | Vehicle mileage, when applicable. |
| `downPayment` | string | Visible initial payment for vehicle financing. |
| `transmission` | string | Vehicle transmission, when applicable. |
| `title` | string | Product title. |
| `installments` | string | Visible installment terms. |
| `promotions` | string | Coupons and promotions joined into one value. |
| `soldQuantity` | integer or null | Public sold-quantity signal. |
| `freeShipping` | boolean or null | Explicit free-shipping status. |
| `inStock` | boolean or null | Stock status exposed in page metadata. |
| `sellerName` | string | Seller or store name. |
| `isOfficialStore` | boolean | Official-store indicator. |
| `sku` | string | Best available stable product or listing identifier. |
| `publicationId` | string | Mercado Libre publication identifier, also known as the listing/publication ID. |
| `catalogProductId` | string | Catalog product identifier. |
| `userProductId` | string | Seller product identifier. |
| `variationId` | string | Listing variation identifier. |
| `resultType` | string | Marketplace result classification. |
| `isPricePerQuantity` | boolean or null | Quantity-pricing indicator. |
| `isInternationalPurchase` | boolean | International-purchase indicator. |
| `searchKeyword` | string | Keyword used for the search. |
| `rating` | string or number | Visible aggregate rating. |
| `reviewCount` | string or integer | Visible number of ratings or reviews. |
| `resultPosition` | integer | One-based position across pages. |
| `totalResults` | string | Visible total result count or label. |
| `productUrl` | string | Direct Mercado Libre product or listing URL. |
| `shipping` | string | Delivery and shipping text. |
| `highlights` | string | Commercial badges and highlights. |
| `availableIn` | string | Visible variation availability. |
| `shipsFrom` | string | Visible shipping origin. |
| `brand` | string | Product brand. |
| `categoryId` | string | Mercado Libre category identifier. |
| `domainId` | string | Mercado Libre product-domain identifier. |
| `sellerId` | string | Mercado Libre seller identifier. |
| `sellerReputation` | string or null | Seller reputation level when publicly available on enriched product records. |
| `vertical` | string | Marketplace vertical label. |
| `verticalId` | string | Marketplace vertical identifier. |
| `location` | string | Seller or listing location. |
| `scrapedAt` | string | ISO 8601 extraction timestamp. |
| `isPromoted` | boolean | Whether the result is sponsored. This field is included only when `promoted` is enabled. |
| `countryCode` | string or null | Marketplace country code on product records. |
| `siteId` | string or null | Mercado Libre site identifier. |
| `productId` | string or null | Product identifier extracted from the product URL. |
| `description` | string or null | Plain-text listing description from the product page. |
| `images` | array | Product image URLs. |
| `availability` | string or null | Product availability. |
| `condition` | string or null | Normalized condition: `new`, `used`, or `refurbished`. |
| `ratingCount` | integer or null | Number of product ratings. |
| `sellerPowerStatus` | string or null | Power seller status. |
| `officialStoreName` | string or null | Official store name. |
| `attributes` | array or null | Technical product attributes as name/value pairs. |
| `variations` | array or null | Product variations when requested. |
| `reviews` | array or null | Public product reviews when requested. |
| `questions` | array or null | Public product questions and answers when requested. |
| `returnPolicy` | string or null | Return policy text when available. |
| `shippingDetails` | object or null | Structured free-shipping status and shipping text. |

`soldQuantity` can be rounded or summarized by Mercado Libre. `totalResults` preserves the visible value and does not guarantee that every matching result can be exported.

### Use the Actor through the Apify API

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('karamelo/mercado-libre-listings-scraper').call({
  keyword: 'iphone',
  country: 'https://listado.mercadolibre.com.ar/',
  sort: 'relevance',
  maxPages: 3,
  promoted: false,
  extractProductDetails: true,
  maxProductDetails: 10,
});

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

#### Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('karamelo/mercado-libre-listings-scraper').call(
    run_input={
        'keyword': 'iphone',
        'country': 'https://listado.mercadolibre.com.ar/',
        'sort': 'relevance',
        'maxPages': 3,
        'promoted': False,
        'extractProductDetails': True,
        'maxProductDetails': 10,
    }
)

items = list(client.dataset(run['defaultDatasetId']).iterate_items())
print(items)
```

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/karamelo~mercado-libre-listings-scraper/run-sync-get-dataset-items?format=json&clean=true" \
  -H "Authorization: Bearer APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "iphone",
    "country": "https://listado.mercadolibre.com.ar/",
    "sort": "relevance",
    "maxPages": 3,
    "promoted": false,
    "extractProductDetails": true,
    "maxProductDetails": 10
  }'
```

### MCP and agent workflows

Expose the Actor to an MCP-compatible client through Apify's hosted MCP server:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=karamelo/mercado-libre-listings-scraper"
    }
  }
}
```

The hosted server requests Apify authorization when the client first connects. Keep API tokens outside source files and shared configuration.

Example agent request:

```text
Search for "gaming laptop" on Mercado Libre Mexico, process two pages without
promoted listings, and compare current price, discount, installments, shipping,
rating, seller, and product URL.
```

### Automation and integrations

- Use **Schedules** to capture recurring price and ranking snapshots.
- Use **Webhooks** to notify another system when a run succeeds or fails.
- Export Dataset records to Google Sheets, Excel, databases, or data warehouses.
- Connect the Actor to Make, Zapier, BI tools, or AI-agent workflows.

### Tips for consistent results

- Begin with one or two pages to confirm that the selected marketplace exposes the fields you need.
- Set `promoted` to `false` for organic ranking analysis.
- Keep `scrapedAt`, `searchKeyword`, `resultPosition`, and `productUrl` in historical snapshots.
- Interpret `currentPrice` together with `currency`; do not combine currencies without conversion.
- Deduplicate with identifiers while remembering that listings, catalog products, and variations are separate entities.
- Treat empty strings and `null` values as unavailable data, not zero values.
- Use a reasonable schedule and page limit for your research goal.

### Limitations

- Product detail enrichment is optional and only visits URLs from listings extracted in the same run.
- `maxProductDetails` cannot produce more product records than the number of unique listing URLs extracted.
- Slow or unavailable product pages are skipped after bounded attempts so they do not hold up the complete run.
- Reviews, questions, variations, descriptions, and exact inventory depend on what Mercado Libre exposes publicly on each product page.
- Sold quantity, total results, shipping, and delivery estimates can be rounded or summarized.
- Category, location, availability, experiments, and marketplace layout changes affect which fields are visible.
- A page can return fewer unique records when Mercado Libre hides, duplicates, or removes results.
- Set a timeout of at least 100 seconds for the selected search and enrichment scope.

### FAQ

#### Which Mercado Libre countries are supported?

All 18 marketplaces listed above are supported. Supply the complete marketplace URL through `country`.

#### Can I compare the same query across countries?

Yes. Run one task per country, then combine the datasets while retaining `currency`, `searchKeyword`, `scrapedAt`, and `productUrl`.

#### Can it extract coupons and promotions?

Yes, when they appear in public search data. They are combined in `promotions`.

#### Does it return sold quantity?

Yes, through `soldQuantity` when Mercado Libre exposes the signal. The value can be rounded.

#### Can promoted listings be removed?

Yes. Set `promoted` to `false`. Included sponsored listings are marked with `isPromoted: true`.

#### Can it extract product details?

Yes. Set `extractProductDetails` to `true` and choose `maxProductDetails`. The Actor saves every search listing first, then appends up to that many product records. Use `mode` to distinguish the two record types.

#### How do I create a price monitor?

Save a task with stable input, schedule recurring runs, and compare price fields and `scrapedAt` by `publicationId`, `catalogProductId`, or `sku`.

#### Can I download JSON results?

Yes. Select JSON in the Dataset export options, or request JSON through the Dataset items API.

#### Can I download CSV files?

Yes. Select CSV in the Dataset export options, or request CSV through the Dataset items API.

#### Can I download Excel files?

Yes. Select Excel in the Dataset export options, or request Excel through the Dataset items API.

### Responsible use

Collect only public information and follow applicable laws, privacy rules, marketplace terms, and reasonable request rates. Avoid collecting unnecessary personal data. This independent Actor is not affiliated with, sponsored by, or endorsed by Mercado Libre or Apify.

### Support

For a reproducible support request, include the marketplace, `maxPages`, `promoted`, product detail settings, run ID, and the expected field. Do not share tokens, cookies, proxy URLs, or credentials.

# Actor input Schema

## `keyword` (type: `string`):

Product or phrase to search for on Mercado Libre.

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

Base URL of the Mercado Libre country marketplace to search.

## `sort` (type: `string`):

Choose how Mercado Libre orders matching listings. Relevance keeps the marketplace's default ranking.

## `maxPages` (type: `integer`):

Maximum number of search result pages to process.

## `promoted` (type: `boolean`):

Include sponsored listings. Disable this for organic-only ranking analysis.

## `extractProductDetails` (type: `boolean`):

After all search listings are extracted, visit product pages and append enriched product records.

## `maxProductDetails` (type: `integer`):

Maximum number of listing product pages to enrich. The runtime limit is always capped by the number of unique listings extracted.

## `includeReviews` (type: `boolean`):

Include public reviews found on enriched product pages.

## `includeQuestions` (type: `boolean`):

Include public questions and answers found on enriched product pages.

## `includeVariations` (type: `boolean`):

Include product variations found on enriched product pages.

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

Apify Proxy settings used for marketplace requests. Custom proxy URLs are not accepted.

## Actor input object example

```json
{
  "keyword": "iphone",
  "country": "https://listado.mercadolibre.com.ar/",
  "sort": "relevance",
  "maxPages": 1,
  "promoted": true,
  "extractProductDetails": false,
  "maxProductDetails": 10,
  "includeReviews": true,
  "includeQuestions": true,
  "includeVariations": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "sort": "relevance"
};

// Run the Actor and wait for it to finish
const run = await client.actor("karamelo/mercado-libre-listings-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 = { "sort": "relevance" }

# Run the Actor and wait for it to finish
run = client.actor("karamelo/mercado-libre-listings-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 '{
  "sort": "relevance"
}' |
apify call karamelo/mercado-libre-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,karamelo/mercado-libre-listings-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/DTN7k1vRPHI0FkJKZ/builds/qG7szD5daEkfxWanm/openapi.json
