# AliExpress Search Scraper: Prices, Orders & Shipping (`xmolodtsov/aliexpress-search-scraper`) Actor

AliExpress search scraper for product prices, exact orders, ratings, images, shipping and delivery estimates. Filter by price, rating, orders, free shipping or Choice; choose destination, currency and language. Pay only for saved results.

- **URL**: https://apify.com/xmolodtsov/aliexpress-search-scraper.md
- **Developed by:** [GoFetch](https://apify.com/xmolodtsov) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 aliexpress search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### AliExpress Search Scraper: Prices, Orders & Shipping

Turn AliExpress keyword searches into structured product data: prices, exact order counts where available, ratings, images, shipping labels, delivery estimates and search positions. AliExpress Search Scraper collects public search cards and saves them to an Apify dataset, ready for spreadsheets, price monitoring and repeatable market research.

Dropshippers can shortlist products by demand and shipping signals. E-commerce sellers can compare listed prices across keywords and destinations. Market researchers can follow product categories over time, while affiliate sites can collect product links, images and displayed prices for editorial research. Keep the same ship-to country and currency between runs to make comparisons useful.

Each row represents one product for one keyword. Welcome and bundle prices have separate flags so you can identify conditional offers before comparing them with ordinary prices. You can start in Console, call the API, or give an AI agent access through Apify MCP.

### What data you get

Examples below come from the real `wireless earbuds` proof run `aJxZB2AoOSM5fYvXB`, captured on 17 October 2026. Coverage was measured separately across the 1,500 saved rows in the five reliability proof runs. Percentages describe that sample, not a promise about future searches. Missing scalar values are `null`.

| Field | Real example | Meaning and measured coverage where incomplete |
|---|---|---|
| `keyword` | `wireless earbuds` | Original search term |
| `page`, `position` | `1`, `1` | Page and unique-card rank before filters |
| `productId` | `1005012594430190` | Canonical product ID, stored as a string |
| `url` | `https://www.aliexpress.com/item/1005012594430190.html` | Canonical product link |
| `title` | `HTC NE79 TWS Bluetooth 6.0 Earbuds AI Translation 135 Languages ENC Noise Cancelling HiFi Stereo Headphones with LED Display` | Search-card title |
| `imageUrl` | `https://ae-pic-a1.aliexpress-media.com/kf/Sff7e4be36c804173b8bf2ad0f4a81b0bA.png` | Main image |
| `images` | Same image URL, plus other card images | Array of available image URLs |
| `salePrice`, `currency` | `7.39`, `USD` | Displayed price and returned currency |
| `originalPrice` | `17.21` | Comparison price; 98% filled |
| `discountPercent` | `57` | Displayed discount; 91.87% filled |
| `priceText` | `US $7.39` | Formatted price; 96.13% filled |
| `isWelcomeDeal`, `isBundleDeal` | `true`, `true` | Independent conditional-price signals |
| `rating` | `4.9` | Card rating; 73.47% filled |
| `orders`, `ordersText` | `14603`, `10,000+ sold` | Exact count and separate rounded label; each 92% filled |
| `shippingText`, `isFreeShipping` | `null`, `false` | Shipping label, 24.4% filled; explicit free-shipping flag |
| `shipFrom` | `CN` | Origin country; 94.07% filled |
| `deliveryText` | `Delivery: Oct 23 - 28` | Card delivery label; 41% filled |
| `deliveryMinDays`, `deliveryMaxDays` | `6`, `11` | Site-provided day bounds; each 62.8% filled |
| `tags` | `["Delivery: Oct 23 - 28"]` | Plain-text selling points; 92.67% nonempty |
| `isChoice`, `isSponsored` | `true`, `false` | Choice and advertising markers |
| `categoryId` | `63705` | Leaf category ID; 98% filled |
| `scrapedAt` | `2026-10-17T12:17:09.529Z` | UTC capture time |

An exact order count is never inferred from a rounded sold label. Review counts, seller profiles and store details are outside this search-card dataset.

### How to use it

1. Open the Actor in Apify Console and choose **Input**.
2. Enter **Keywords**, one search term per entry. The form starts with `wireless earbuds`.
3. Set **Maximum products per keyword**. The form prefills 20; choose filters and your destination if needed.
4. Keep the residential proxy default for your first run. Set a maximum charge in the run options to control spending.
5. Click **Start**, then inspect **Output**. Export JSON, CSV or Excel, or retrieve the dataset through the API.

#### JavaScript API

Install `apify-client`, set your `APIFY_TOKEN` environment variable, and run this example. The [Apify JavaScript client](https://docs.apify.com/api/client/js/docs/introduction/quick-start) waits for the run and provides its dataset ID.

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('xmolodtsov/aliexpress-search-scraper').call({
    keywords: ['wireless earbuds'],
    maxItems: 20,
    shipToCountry: 'US',
    currency: 'USD',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### curl and MCP

This synchronous API request returns dataset rows when the run completes. For longer batches, start an asynchronous run and fetch its `defaultDatasetId` afterwards.

```bash
curl --request POST \
  'https://api.apify.com/v2/acts/xmolodtsov~aliexpress-search-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{"keywords":["wireless earbuds"],"maxItems":20}'
```

Always send `keywords` in API input: Console prefill is a form convenience, and an empty API body is rejected. For AI workflows, connect an [Apify MCP](https://docs.apify.com/mcp) client and expose `xmolodtsov/aliexpress-search-scraper` as a tool. Pricing and account limits also apply to MCP calls.

### Pricing

Pay for products saved to the dataset. Billing uses PAY_PER_EVENT with the standard `apify-default-dataset-item` event. Proxy and platform usage are included, with no start fee or separate usage surcharge.

| Apify plan | Price per 1,000 results |
|---|---|
| Free | $2.50 |
| Bronze (Starter) | $2.20 |
| Silver (Scale) | $1.90 |
| Gold (Business) | $1.60 |

Filtered cards and duplicates within a keyword are never saved or charged. A product matching two different keywords produces one row for each keyword, and each saved row is billable. Set your maximum charge per run to bound the result bill.

#### Is it free?

You can try the Actor using your available Apify credit on the Free plan; the Free tier price still applies. Free plan: **100 results per run, 20 runs per calendar month** (a limit set by the developer, not by Apify). The result cap is shared across all keywords in the run. The monthly quota is per account and resets on the 1st.

After the monthly quota, a run ends successfully with an explanation and no results. Any paid Apify plan removes these developer free-plan caps; your requested result limit, available results and maximum charge still govern the run.

### Input

Start with this small request, then add filters for your research:

```json
{
    "keywords": ["wireless earbuds"],
    "maxItems": 20,
    "sort": "default",
    "shipToCountry": "US",
    "currency": "USD",
    "language": "en_US",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

| Input | Default | How it works |
|---|---|---|
| `keywords` | Required | 1–100 nonempty terms; whitespace trimmed and repeated terms removed |
| `maxItems` | `100`; form prefill `20` | Matching products per keyword, from 1 to 5000 |
| `sort` | `default` | Best match, `orders`, `price_asc`, or `price_desc` |
| `minPrice`, `maxPrice` | Unset | Inclusive displayed-price limits in the requested currency |
| `minRating` | Unset | Minimum rating from 0 to 5; unrated cards are excluded when set |
| `minOrders` | Unset | Minimum exact order count; unknown counts are excluded when set |
| `freeShippingOnly` | `false` | Require an explicit unconditional free-shipping marker |
| `choiceOnly` | `false` | Require the AliExpress Choice marker |
| `shipToCountry` | `US` | Destination country from the form's supported ISO country codes |
| `currency` | `USD` | Requested display currency; the row records what AliExpress returned |
| `language` | `en_US` | Requested page language; some text may remain untranslated |
| `proxyConfiguration` | Residential Apify Proxy | Select a specific datacenter group to opt into datacenter |

Filters apply to every keyword. Price, free-shipping and Choice settings are sent to AliExpress, then returned cards are checked locally. Rating and exact-order filters are applied locally. Paging continues to find matching products, rather than stopping after examining only `maxItems` cards.

The proof verified US/USD, DE/EUR, GB/GBP and German-language results. It also checked orders and both price sorts. Sponsored cards remain included and flagged, so advertised placements can interrupt an otherwise sorted sequence. A “free shipping over…” offer does not pass `freeShippingOnly` merely because it mentions free shipping.

### Output

The Overview table shows images, keyword, rank, title, price, currency, discount, rating, orders, shipping, delivery, bundle status and product link. Download the full dataset to access every field.

![First eight real AliExpress search rows, with prices, ratings, orders, shipping and delivery](https://api.apify.com/v2/key-value-stores/2DxCOvbMjhvK3S1qP/records/aliexpress-search-output.png)

This complete row comes from proof run `aJxZB2AoOSM5fYvXB`. The displayed offer has both conditional-price flags, and its absent shipping label remains `null`.

```json
{
    "keyword": "wireless earbuds",
    "page": 1,
    "position": 1,
    "productId": "1005012594430190",
    "url": "https://www.aliexpress.com/item/1005012594430190.html",
    "title": "HTC NE79 TWS Bluetooth 6.0 Earbuds AI Translation 135 Languages ENC Noise Cancelling HiFi Stereo Headphones with LED Display",
    "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sff7e4be36c804173b8bf2ad0f4a81b0bA.png",
    "images": [
        "https://ae-pic-a1.aliexpress-media.com/kf/Sff7e4be36c804173b8bf2ad0f4a81b0bA.png",
        "https://ae-pic-a1.aliexpress-media.com/kf/S25359d9379c446fda439fce29d51cb2dr.jpg",
        "https://ae-pic-a1.aliexpress-media.com/kf/S1c0239287fab4907bc957afb4c622d22z.jpg",
        "https://ae-pic-a1.aliexpress-media.com/kf/S44a300ec91be44e6847eccb29e8a18b6e.jpg",
        "https://ae-pic-a1.aliexpress-media.com/kf/S273586500c16458dbe1aecada2e95e99v.jpg",
        "https://ae-pic-a1.aliexpress-media.com/kf/S7c8a630cd9f54980a1e8437dcc26ce51y.jpg"
    ],
    "salePrice": 7.39,
    "originalPrice": 17.21,
    "currency": "USD",
    "discountPercent": 57,
    "priceText": "US $7.39",
    "isWelcomeDeal": true,
    "isBundleDeal": true,
    "rating": 4.9,
    "orders": 14603,
    "ordersText": "10,000+ sold",
    "shippingText": null,
    "isFreeShipping": false,
    "shipFrom": "CN",
    "deliveryText": "Delivery: Oct 23 - 28",
    "deliveryMinDays": 6,
    "deliveryMaxDays": 11,
    "tags": [
        "Delivery: Oct 23 - 28"
    ],
    "isChoice": true,
    "isSponsored": false,
    "categoryId": "63705",
    "scrapedAt": "2026-10-17T12:17:09.529Z"
}
```

Products are deduplicated by canonical product ID within each keyword. `position` counts unique cards before filters, so gaps in the exported rank are expected. The same product may appear under another keyword with a different position. Search stops at the requested limit, exhausted results, repeated products, a repeated page, or the page cap; `maxItems` is an upper bound.

### Guarantees and failure semantics

Only product rows are saved and charged. Error messages, filtered cards and repeated cards within a keyword never become billable dataset rows. Requests receive up to four attempts using fresh sessions in the selected proxy mode. Retries keep that mode.

If every keyword remains unanswered, the run is **FAILED** with a status beginning `blocked:`, `network:` or `timeout:`, according to the dominant cause. Invalid requests can produce `invalid:`. A persistent unreadable page layout with no saved products produces **FAILED** with `outdated:`; it is not presented as an empty search.

Partial results are **SUCCEEDED**, with affected keywords named in the status message when a keyword or later page fails. Saved rows remain available. A genuine answered search with no matches is also **SUCCEEDED**. The run stops at your maximum charge and keeps the rows saved within that budget. The runtime guard preserves saved results; reaching it before saving any products fails with `timeout:`.

The run's key-value store contains `STATISTICS` for request and blocked-attempt counts, rows saved, filtered and duplicate cards, and each keyword's stopping reason. In the 17 October reliability proof, 30 logical pages were answered across 15 keywords, yielding 1,500 rows; two timed-out attempts recovered on retry. This is a measured sample, not a future availability guarantee.

### Integrations

Use Apify schedules for recurring price and search-position monitoring. Keep historical datasets and compare `productId`, `keyword`, `salePrice` and `scrapedAt` between captures. For cross-currency analysis, retain the returned currency alongside each price.

Apify API clients can feed saved rows into your application. Webhooks can trigger processing after success or failure, while Apify integrations connect workflows with spreadsheets, Make, Zapier and n8n. Check the status message before treating a successful run as complete: partial runs deliberately retain usable rows. AI agents can use the same input and output through MCP.

### More scrapers from this developer

**TikTok:** [TikTok Search Scraper](https://apify.com/xmolodtsov/tiktok-search-scraper): videos and creators for any keyword, pay per result · [TikTok Profile Scraper (Pay Per Result)](https://apify.com/xmolodtsov/tiktok-profile-scraper): profiles, followers and latest posts by username · [TikTok Comments Scraper](https://apify.com/xmolodtsov/tiktok-comments-scraper): comments and full reply threads from any video · [TikTok Hashtag Scraper](https://apify.com/xmolodtsov/tiktok-hashtag-scraper): videos for any hashtag, with views, likes and music · [TikTok Sound & Music Scraper](https://apify.com/xmolodtsov/tiktok-sound-scraper): videos that use a sound or song

**Social & news:** [Reddit Search Scraper](https://apify.com/xmolodtsov/reddit-scraper): posts by keyword, subreddit or author · [Google News Scraper](https://apify.com/xmolodtsov/google-news-scraper): Google News results as clean full-text articles

**E-commerce:** [Prom.ua Product Search Scraper](https://apify.com/xmolodtsov/prom-ua): Prom.ua product search results, no browser needed · [Amazon Product Search & Bestsellers Scraper](https://apify.com/xmolodtsov/amazon-search-scraper): search results, Best Sellers and product details from Amazon

**Maps & leads:** [Google Maps Scraper](https://apify.com/xmolodtsov/google-maps-scraper): places, leads and emails from Google Maps

**Ads:** [Facebook Ad Library Scraper (Meta Ads Library)](https://apify.com/xmolodtsov/facebook-ads-library-scraper): ads from the Meta Ad Library, with EU reach and payers

**Video:** [YouTube Transcript Scraper](https://apify.com/xmolodtsov/youtube-transcript-scraper): transcripts, subtitles and captions from YouTube videos · [YouTube Shorts Scraper](https://apify.com/xmolodtsov/youtube-shorts-scraper): Shorts of any channel with exact views, likes and duration · [YouTube Channel Scraper](https://apify.com/xmolodtsov/youtube-channel-scraper): every video of a channel, with channel stats · [YouTube Search Scraper](https://apify.com/xmolodtsov/youtube-search-scraper): search results and videos for any keyword · [YouTube Comments Scraper](https://apify.com/xmolodtsov/youtube-comments-scraper): comments, replies and likes from any video

### FAQ

#### Is it legal to scrape AliExpress?

This Actor collects public product search data without signing in or accessing private account information. Legality depends on jurisdiction and use, including website terms and intellectual-property rights. Public availability does not remove GDPR or CCPA obligations where personal data is involved. Assess your intended processing and obtain legal advice when needed. See [Apify's web scraping legality guide](https://blog.apify.com/is-web-scraping-legal/) for background.

#### Why are some ratings/delivery dates empty?

AliExpress does not supply every field on every search card. Missing values stay `null`, never invented. Delivery text and numeric day bounds are separate signals and can have different coverage. Neither an empty shipping label nor `isFreeShipping: false` establishes a shipping fee; inspect the available offer information.

#### Datacenter vs residential proxy?

Residential Apify Proxy is the default. The explicit datacenter proof run `sMnjthtXcbGuI9WKh` returned 120 rows with **0 blocked attempts out of 3 (0%)**. That small sample does not establish a general datacenter block rate. Select a specific datacenter group only if you want to test it for your searches; retries retain your choice. Free-plan runs use Apify Proxy.

#### Does it get seller/store details?

No. The search cards used here do not carry the seller/store details needed for that output. The Actor does not visit stores or product detail pages for enrichment. It also omits review counts because the inspected cards do not provide them.

#### Are the listed prices final checkout prices?

They are search-card prices for the requested destination and currency. Welcome and bundle offers can have conditions; check `isWelcomeDeal` and `isBundleDeal` independently. Shipping labels and delivery estimates are observations, not checkout guarantees.

### Support

Open an issue in the Actor's **Issues** tab on Apify with your run ID, input and the field or keyword affected. Include the status message for blocked, partial or outdated runs. Remove API tokens and other credentials before sharing input. Reproducible searches help us investigate changes to AliExpress cards.

# Changelog

This Actor's version history is a separate document: https://apify.com/xmolodtsov/aliexpress-search-scraper/changelog.md

# Actor input Schema

## `keywords` (type: `array`):

Enter 1–100 nonempty search terms, one per entry. Whitespace is trimmed and repeated terms are removed. Free Apify plan: up to 100 results per run and 20 runs per calendar month (a limit set by the developer, not by Apify).

## `maxItems` (type: `integer`):

Maximum matching products per keyword. The form starts at 20; omitted API input defaults to 100. Paging continues until this limit, exhausted results or the page cap. Free Apify plan: up to 100 results per run and 20 runs per calendar month (a limit set by the developer, not by Apify).

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

Choose best match, highest orders, price low to high or price high to low. Sponsored cards remain included and can interrupt the sorted sequence.

## `minPrice` (type: `number`):

Minimum displayed sale price in the requested currency, inclusive. Returned cards are checked locally.

## `maxPrice` (type: `number`):

Maximum displayed sale price in the requested currency, inclusive. Returned cards are checked locally.

## `minRating` (type: `number`):

Minimum card rating from 0 to 5. Unrated cards are excluded when this filter is set.

## `minOrders` (type: `integer`):

Minimum exact order count. Cards without an exact count are excluded when this filter is set; rounded sold labels are never used as exact counts.

## `freeShippingOnly` (type: `boolean`):

Require an explicit unconditional free-shipping marker. Conditional offers such as free shipping over a minimum spend are excluded. Paging continues to find matches.

## `choiceOnly` (type: `boolean`):

Require the AliExpress Choice marker. Paging continues to find matching products.

## `shipToCountry` (type: `string`):

Choose the destination country. Prices, shipping labels and delivery estimates depend on this destination.

## `currency` (type: `string`):

Choose the requested display currency. Each row records the currency AliExpress returned.

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

Choose the requested page language. Some product titles and tags may remain untranslated.

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

Residential Apify Proxy is the default, including automatic selection. Choose a specific datacenter group to opt into datacenter. Retries retain your selected mode. Free-plan runs use Apify Proxy.

## Actor input object example

```json
{
  "keywords": [
    "wireless earbuds"
  ],
  "maxItems": 20,
  "sort": "default",
  "freeShippingOnly": false,
  "choiceOnly": false,
  "shipToCountry": "US",
  "currency": "USD",
  "language": "en_US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

One product per keyword: images, prices, ratings, exact orders where available, shipping, delivery estimates and the bundle-deal flag. Download the full dataset for every field.

# 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 = {
    "keywords": [
        "wireless earbuds"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("xmolodtsov/aliexpress-search-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 = {
    "keywords": ["wireless earbuds"],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("xmolodtsov/aliexpress-search-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 '{
  "keywords": [
    "wireless earbuds"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call xmolodtsov/aliexpress-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,xmolodtsov/aliexpress-search-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/uY3YfSDK7ZH7oaVlh/builds/JrJD6CMfnfK3JFy6q/openapi.json
