# Goofish Xianyu Scraper - 闲鱼 Idlefish Listings, Prices & Sellers (`dami_studio/goofish-scraper`) Actor

Goofish scraper for Xianyu (闲鱼, Idlefish): turn item or seller links into a table. Each listing row has the title, price in yuan, the 10-point condition, want and view counts, location, the seller's nickname and good-review rate, every photo and the description. $3.50 per 1,000 listings.

- **URL**: https://apify.com/dami_studio/goofish-scraper.md
- **Developed by:** [Dami's Studio](https://apify.com/dami_studio) (community)
- **Categories:** E-commerce
- **Stats:** 350 total users, 107 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.35 / 1,000 items

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

**Goofish Xianyu scraper for item or seller links (闲鱼), one row per listing**: the
title, asking price in yuan, Goofish's 10-point condition, want and view counts, location, the
seller's masked nickname and good-review rate, every photo and the description.

There is no keyword search. This works from links you already have: from the app, from a shared
link or from a seller you follow.

| | |
|---|---|
| **Input** | Goofish item links or ids, and seller profile links or ids |
| **Output** | One row per listing: price, condition, want and view counts, location, category and specs, seller rating and credit, photos and description |
| **Ceiling** | 5,000 listings per run |
| **Account needed** | None |
| **Price** | $3.50 per 1,000 listings on the free plan, down to $3.35 on Business. The free plan's $5 a month covers about 1,400 |

| Using an AI agent? | |
|---|---|
| Actor | `dami_studio/goofish-scraper` |
| Set one field | `itemUrls`, labelled "Item links" in the Console |
| Cap the bill | `maxTotalChargeUsd` on the run, for example `0.25`: it never charges past that |
| MCP, one link | `https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/goofish-scraper` |
| How often | Daily, to follow the price of items you watch |

### 🔍 What Goofish Scraper does

Goofish (闲鱼, Xianyu, sometimes written Idlefish) is Alibaba's second-hand marketplace. This takes
listings you can already see and turns them into a table.

An item link can be the full `goofish.com/item?id=` address, the mobile `h5.m.goofish.com` version
or just the number. A seller link is a `goofish.com/personal?userId=` address or its number, and
every listing on that profile is walked and returned in the same shape as an item link. Item links
are done first, then sellers.

Before any of a seller's listings are kept, the first one is read back to check it really belongs
to that seller. If it does not, you get a free note and nothing from that profile. Rows that did
come from a profile you asked for carry `foundViaSeller`.

Each row is put together from two parts of Goofish, and `sourceItemRecord` and `sourceDetailPage`
say which answered. When one is missing, its fields are null rather than guessed. Old listings are
the usual case: on a 150-listing seller walk, 140 rows were complete and 10 came back thinner, all
of them listings from earlier years. That walk took 87 seconds on a test run, and a run of 13 item
links took 11.

Filters are off unless you set them: a price band, how recently it was listed, a minimum condition
and free shipping only. A listing a filter leaves out is not charged. If your filters match very
few of the listings read, the run stops early and leaves a free note saying how many it read and
kept.

Lite mode returns the listing record alone: no want, view or save counts and nothing about the
seller. It is billed at its own lower price once that price is on the Pricing tab. Until then, a
run with it on writes one free note and stops without fetching anything.

### 📋 What data you get from each Goofish listing

| What you get | Field |
|---|---|
| Listing id and link | `itemId`, `url` |
| Title and the seller's description | `title`, `description` |
| Asking price, the "was" price, currency and shipping fee | `price`, `originalPrice`, `currency`, `shippingFee` |
| Goofish's 10-point condition | `conditionLevel`, `conditionText` |
| Interest: wants, views and saves | `wantCount`, `viewCount`, `collectCount` |
| Sold counter and units on offer | `soldCount`, `quantity` |
| Where the item is | `city`, `province`, `district` |
| The seller: id, masked nickname, good-review rate, reply rate, last seen, shelf size and sales | `sellerId`, `sellerNick`, `sellerGoodReviewRate`, `sellerReplyRate24h`, `sellerLastSeen`, `sellerItemCount`, `sellerSoldCount`, `sellerUrl` |
| Category, status and the date it was listed | `categoryId`, `categoryName`, `status`, `listedAt` |
| Specs the seller picked, brand and model | `specs`, `brand`, `model` |
| Auction listing, free shipping, shop seller | `auction`, `freeShipping`, `sellerIsShop` |
| The seller's credit as Goofish shows it: Zhima credit label, real-person check, member since, good and bad reviews, usual reply time | `sellerZhimaCredit`, `sellerVerified`, `sellerSince`, `sellerGoodReviews`, `sellerBadReviews`, `sellerReplyTime` |
| The seller's other listings, as links | `sellerOtherItems` |
| On listings Goofish inspected and stores itself: the inspection summary and the other units on sale | `inspection`, `variants`, `variantCount` |
| Every photo | `images`, `imageCount` |
| Which part of Goofish answered, and whether it came from a seller you asked for | `sourceItemRecord`, `sourceDetailPage`, `foundViaSeller` |
| When the row was read | `scrapedAt` |

### ▶️ How to scrape Goofish listings

1. Open [Goofish Scraper](https://apify.com/dami_studio/goofish-scraper) and click **Try for free**.
2. Paste listing links into **Item links**, or profile links into **Seller links**, one per line.
3. Set **Maximum listings**.
4. Untick **Include the seller's description** if you only want prices and counts.
5. Click **Start**, then download the dataset as JSON, CSV or Excel.

With neither item links nor seller links you get one free example row telling you what to put where.

### 💰 How much does it cost to scrape Goofish listings?

**$3.50 per 1,000 listings.** That is the free plan's price; paid plans pay a little less: $3.45 on Starter, $3.40 on Scale and $3.35 on Business. On the free plan, the $5
Apify gives you each month covers about 1,400 listings.

Not charged: the example row, every note listed further down, listings your filters leave out, and
a listing that turns up twice, which is delivered once. If you set a maximum cost for the run, it stops when that is reached and
says so in the log; if the limit is too low for a single listing, nothing is fetched at all.

### 📥 What you give it

```json
{
  "itemUrls": ["https://www.goofish.com/item?id=1080166744321", "1081033347338"],
  "sellerUrls": ["https://www.goofish.com/personal?userId=605970805"],
  "maxItems": 100,
  "includeDescription": true
}
```

| Field | Default | What it is |
|---|---|---|
| `itemUrls` | none | Listing links, one per line. A full link, the mobile link or the bare number all work. The form opens with one example link. |
| `sellerUrls` | none | Seller profile links or their numbers, one per line. Every listing on the profile is walked, up to the limit below. |
| `maxItems` | `100` | 1 to 5,000 listings across the whole run. Only listings that come back count; free notes do not. |
| `includeDescription` | `true` | Keeps the seller's full description. Turn it off for a narrower table. |
| `minPrice`, `maxPrice` | none | Keep only listings asking at least or at most this many yuan. |
| `listedWithinDays` | none | Keep only listings put up in the last N days, 1 to 3,650. |
| `minCondition` | none | Keep only listings at or above this grade, 1 to 10, where 10 is brand new. |
| `freeShippingOnly` | off | Keep only listings Goofish marks as shipped free (包邮). |
| `liteMode` | off | The listing record only. See above for when it opens. |
| `proxyConfiguration` | none | Only for your own servers, which are used as given. Leave it alone otherwise. |

A value a filter can't use, such as a lowest price above the highest, stops the run before it fetches
anything, with a free `invalid_filters` note.

### 📤 What you get back

![Real run output](https://api.apify.com/v2/key-value-stores/BTBHU3DdiuoF4JOsK/records/goofish-scraper-output.png)

A real row from a real run, with the photo list and the seller's other listings cut short:

```json
{
  "itemId": "1080166744321",
  "url": "https://www.goofish.com/item?id=1080166744321",
  "title": "全新正版《我住长江尾》，段志强著，中华书局出版！未拆封，正品",
  "price": 35,
  "originalPrice": 68,
  "currency": "CNY",
  "shippingFee": 0,
  "conditionLevel": 10,
  "conditionText": "Brand new",
  "wantCount": 23,
  "viewCount": 494,
  "collectCount": 10,
  "soldCount": 0,
  "quantity": 2,
  "city": "上海",
  "province": "上海",
  "district": "闵行区",
  "sellerId": "2208434265414",
  "sellerNick": "正***店",
  "sellerGoodReviewRate": "99%",
  "sellerItemCount": 262,
  "sellerSoldCount": 2991,
  "sellerReplyRate24h": "96%",
  "sellerLastSeen": "2小时前来过",
  "sellerUrl": "https://www.goofish.com/personal?userId=2208434265414",
  "categoryId": 50023914,
  "status": "在线",
  "listedAt": "2026-08-28T12:51:10.000Z",
  "images": ["https://img.alicdn.com/bao/uploaded/i2/2208434265414/O1CN01fTSS3lERTGG1chua_!!4611686018427387206-0-xy_item.jpg"],
  "imageCount": 4,
  "description": "保证，印刷清晰，纸张手感好～\n\n内容讲复旦教授回归土地的田园生活，真实生动，适合喜欢历史、乡村、治愈系文学的朋友阅读收藏，也适合送礼～\n\n全国包邮（偏远地区除外），喜欢直接拍，细节随时问我～",
  "sourceItemRecord": true,
  "sourceDetailPage": true,
  "categoryName": "社科心理",
  "brand": null,
  "model": null,
  "specs": {
    "成色": "全新"
  },
  "auction": false,
  "freeShipping": true,
  "sellerIsShop": null,
  "sellerZhimaCredit": null,
  "sellerVerified": true,
  "sellerSince": "2020-06-27T03:56:53.000Z",
  "sellerGoodReviews": 487,
  "sellerBadReviews": 4,
  "sellerReplyTime": "38分钟",
  "sellerOtherItems": [
    "https://www.goofish.com/item?id=1036944580767",
    "https://www.goofish.com/item?id=1090669018994"
  ],
  "inspection": null,
  "variants": null,
  "variantCount": null,
  "scrapedAt": "2026-10-17T17:46:47.528Z"
}
```

| Field | How to read it |
|---|---|
| `price`, `originalPrice`, `currency` | The asking price in yuan, and the "was" price where the seller set one. Nothing is converted. |
| `conditionLevel`, `conditionText` | Goofish's own 10-point scale, where 10 is brand new. Read straight from the listing, never guessed from the photos. |
| `wantCount`, `viewCount`, `collectCount` | How many people want it, looked at it and saved it. On a second-hand market these say more than the price. |
| `sellerNick`, `sellerLastSeen` | Nicknames arrive masked by Goofish, and "last seen" is Goofish's own Chinese wording. |
| `sellerItemCount`, `sellerSoldCount` | From the seller's profile header. Goofish's numbers, not a count of your rows. |
| `sourceItemRecord`, `sourceDetailPage` | Which part of Goofish answered for this row. Both true is a complete row. |
| `foundViaSeller` | Present only on rows from a seller profile you asked for, when the listing's own seller matches it. Lite rows never carry it, since lite mode doesn't read the seller. |
| `categoryName`, `specs`, `brand`, `model` | The category and the labels the seller picked when listing it, in Chinese as Goofish shows them. `specs` is an object of label and value. |
| `sellerZhimaCredit` | The credit label Goofish shows for the seller, such as 信用极好, and null when it shows none. It is never a score we work out. |
| `sellerVerified` | `true` when Goofish shows the seller's real-person check as passed, otherwise null. |
| `sellerSince`, `sellerReplyTime` | When the seller joined, and their usual reply time in Goofish's own Chinese wording. |
| `sellerIsShop` | `true` when the listing page marks the seller as a shop, null when it doesn't say. |
| `inspection` | Only on listings Goofish inspected: the report's conclusion, how many points were checked, how many were abnormal and the defects found. |
| `variants`, `variantCount` | Only on listings Goofish stores itself: other units on sale under the same listing, each with its own id, link, price and grade. `variantCount` is Goofish's total, and the list holds the ones it shows on the page. |
| `scrapedAt` | When the row was read. |

### 🧾 Reading the output

Real rows have no `charged` field. Every free row carries `charged: false`, so dropping those leaves
only listings.

| Row | How to spot it | Billed |
|---|---|---|
| A listing | An `itemId` and no `charged` field | yes |
| The example row | `_sample: true` | no |
| A note | `_diagnostic: true`, with a `reason` and a `note` | no |

Notes use `reason`, not an error code:

| `reason` | What it means |
|---|---|
| `not_found` | The listing is gone, sold, withdrawn or deleted, or there is no public profile with that seller id. |
| `unreadable_input` | No id could be read from that line. |
| `seller_mismatch` | The listings returned for that profile belong to other sellers, so none were kept. |
| `no_listings` | The seller has nothing on show right now. |
| `blocked` | Goofish did not answer for that listing or seller. It usually clears in a few minutes. |
| `NOT_SERVED` | This listing was not served this run. Re-run it later. Until 12 October 2026 this code was called `all_exits_refused`. |
| `UNEXPECTED_ERROR` | The run stopped early on an unexpected error. The results before this row are kept. |
| `charge_limit_reached` | The run's maximum cost was too low for even one listing, so nothing was fetched. |
| `invalid_filters` | A filter was set to a value no listing could match, so nothing was fetched. |
| `few_matches` | Your filters matched very few of the listings read, so the run stopped early. It says how many were read and kept. |
| `lite_mode_not_open` | Lite mode was on before its price is listed, so nothing was fetched. |
| `unreadable_record` | Goofish answered for that listing in a shape the actor could not read. |
| `route_changed` | Goofish changed how it answers, so the run stopped. Try again later, or open an issue. |
| `time_limit` | The run got close to its time limit and stopped on its own. The listings delivered before that are complete and charged. Give the run more time, or ask for fewer listings, to get the rest. A run the time limit stopped before any listing came back still ends as succeeded, with an amber status message. |

### 💡 What people use it for

- Watching the asking price and the want and view counts on listings you already follow, on a
  schedule.
- Reading a seller's whole shelf before buying from them: good-review rate, reply rate and what else
  they sell.
- Comparing interest across listings of the same kind. A ¥3 listing with 2,119 wants and 10,356
  views is a very different thing from a ¥2,569 camera with none.
- Keeping a record of listings, with their photo links and descriptions, before they sell and
  disappear.

### 🚧 What it does not do

- **No keyword search.** If you need "every listing for X", this is the wrong tool.
- **No sold history.** A seller profile shows the current shelf. Sold and delisted items are not on
  it.
- **`soldCount` is 0 on most listings,** and a 0 does not mean nothing sold. Goofish fills it in
  unevenly. The want and view counts are the reliable ones.
- **No translation.** Titles, cities, conditions and "last seen" stay in Chinese, as listed.
- **No currency conversion.** Prices are in yuan.
- **No unmasked nicknames.** Goofish masks them for anyone who is not signed in.
- **A row is a snapshot.** Sellers change prices and relist the same thing often.
- It is not an official Goofish (Xianyu) tool. Dami's Studio is independent and is not affiliated with or endorsed by Goofish (Xianyu) or Alibaba, or by any other company named on this page.

### 🧭 Which China marketplace scraper do you need?

| If you want | Use |
|---|---|
| Second-hand Xianyu listings, from links you already have | This one |
| Retail products in a Taobao category | [Taobao Category Products Scraper](https://apify.com/dami_studio/taobao-category-products-scraper) |
| Whatever Taobao's homepage feed is recommending right now | [Taobao Product Feed Scraper](https://apify.com/dami_studio/taobao-product-feed-scraper) |
| 1688 offers by search term: unit price, MOQ and the quantity price ladder | [1688 Wholesale Scraper](https://apify.com/dami_studio/1688-wholesale-scraper) |
| Public RedNote (Xiaohongshu) notes with their engagement | [RedNote Scraper](https://apify.com/dami_studio/rednote-scraper) |

### ❓ Questions people ask

#### Can it search Goofish by keyword?

No. It works from listing and seller links.

#### Do I need a Goofish account, a cookie or a token?

No. You paste links, and nothing else is asked for.

#### Is Xianyu the same as Goofish?

Yes. 闲鱼 (Xianyu) is the Chinese name, Goofish the name on the international site, and Idlefish a
common translation.

#### How many listings can I pull from one seller?

As many as their profile shows, up to your **Maximum listings**.

#### Why are some fields null on an old listing?

Goofish keeps less for long-archived listings. `sourceItemRecord: false` marks those rows, and the
missing fields are left empty rather than filled with a guess.

#### Can I call it from code or connect it to an AI assistant?

The [API tab](https://apify.com/dami_studio/goofish-scraper/api/python) has code for Python, JavaScript and the CLI.
MCP clients like Claude and ChatGPT use
`https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/goofish-scraper`; coding assistants can load [our skill
file](https://api.apify.com/v2/key-value-stores/BTBHU3DdiuoF4JOsK/records/apify-ecommerce-SKILL.md). All three bill
your Apify account at the same price.

```python
## pip install apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("dami_studio/goofish-scraper").call(
    run_input={
        "itemUrls": ["https://www.goofish.com/item?id=1080166744321"],
        "maxItems": 20,
    },
    max_total_charge_usd=0.25,  # the most this run may spend
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    if row.get("ok") is False:  # free note rows, not results
        continue
    print(row.get("price"), (row.get("title") or "")[:80])
```

#### Is scraping Goofish legal?

It reads listings anyone can open without signing in. Apify's write-up on
[the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) is a good starting
point, and we are not lawyers.

### 🆘 If something breaks

Open the **Issues** tab on the actor page and send the links you used and the run ID. The note rows
in the dataset usually name the reason already.

# Actor input Schema

## `itemUrls` (type: `array`):

Goofish listing links, one per line. A full link like https://www.goofish.com/item?id=1080166744321 works, and so does the bare number. Each one comes back as a full row.

## `sellerUrls` (type: `array`):

Goofish seller profile links, one per line, like https://www.goofish.com/personal?userId=605970805, or just the number. Every listing on the profile is walked and returned in the same shape as an item link, up to the limit below.

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

Stop after this many listings across the whole run. Item links are done first, then sellers. Counts only listings that actually came back; rows explaining a dead link are free and do not count.

## `includeDescription` (type: `boolean`):

Keep the full listing description in each row. Turn it off for a narrower table when you only want prices and counts.

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

Optional filter. Keep only listings asking at least this much. Leave every filter empty to get every listing. A listing a filter leaves out is not charged and doesn't count toward the maximum. If the filters match very few of the listings read, the run stops early and says so in a free note.

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

Optional. Keep only listings asking at most this much.

## `listedWithinDays` (type: `integer`):

Optional. Keep only listings put up within this many days. Handy on a seller you check again and again.

## `minCondition` (type: `integer`):

Optional. Keep only listings at or above this grade on Goofish's 10-point scale, where 10 is brand new and 9 is what Goofish calls 9新.

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

Optional. Keep only listings Goofish marks as shipped free (包邮).

## `liteMode` (type: `boolean`):

Optional. Each row keeps the title, price, condition, location, category, specs, photos and description, without the want, view and save counts or anything about the seller. Lite rows are billed at their own lower price once it is listed on the Pricing tab. Until then, a run with this on writes one free note and stops without fetching anything.

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

Optional. Leave this alone unless you need the run to go out through a particular network. Your own proxy servers are used exactly as given.

## Actor input object example

```json
{
  "itemUrls": [
    "https://www.goofish.com/item?id=1080166744321"
  ],
  "sellerUrls": [],
  "maxItems": 100,
  "includeDescription": true
}
```

# Actor output Schema

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

One row per Goofish listing: item id and link, title, asking price and original price, condition on the 10-point scale, want / view / collect / sold counts, quantity, city, province and district, seller id, nickname, good-review rate, listing count and reply rate, category id, listing date, every image URL, and the description. A listing that has been sold or withdrawn, a link nothing can be read from, and a seller with no public profile each write a free row explaining what happened instead. Empty input writes one free example row.

# 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 = {
    "itemUrls": [
        "https://www.goofish.com/item?id=1080166744321"
    ],
    "sellerUrls": [],
    "maxItems": 100,
    "includeDescription": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("dami_studio/goofish-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 = {
    "itemUrls": ["https://www.goofish.com/item?id=1080166744321"],
    "sellerUrls": [],
    "maxItems": 100,
    "includeDescription": True,
}

# Run the Actor and wait for it to finish
run = client.actor("dami_studio/goofish-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 '{
  "itemUrls": [
    "https://www.goofish.com/item?id=1080166744321"
  ],
  "sellerUrls": [],
  "maxItems": 100,
  "includeDescription": true
}' |
apify call dami_studio/goofish-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/goofish-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/H8y2wo45N6ReyC8XM/builds/CKnYyazleFFKR3EN7/openapi.json
