{
  "openapi": "3.0.1",
  "info": {
    "title": "eBay to 1688 Sourcing Bridge: Suppliers & Margins",
    "description": "Find 1688.com suppliers for eBay items by image search. Each row: wholesale and consign price in CNY, MOQ, factory signals, soldCount and an estimated per-unit margin. $0.005 per eBay lookup, $0.008 per supplier row, $0.00005 run base fee. Failed lookups are free.",
    "version": "0.2",
    "x-build-id": "pgHFcqVRuHEwZrjZb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawleast~ebay-to-1688-sourcing-bridge/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawleast-ebay-to-1688-sourcing-bridge",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/crawleast~ebay-to-1688-sourcing-bridge/runs": {
      "post": {
        "operationId": "runs-sync-crawleast-ebay-to-1688-sourcing-bridge",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/crawleast~ebay-to-1688-sourcing-bridge/run-sync": {
      "post": {
        "operationId": "run-sync-crawleast-ebay-to-1688-sourcing-bridge",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "ebayUrls": {
            "title": "eBay item URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Public eBay item URLs (ebay.com/itm/... or /p/...) from any of the four supported marketplaces (.com, .co.uk, .de, .com.au), up to 100 per run. Each successfully looked-up item costs one $0.005 ebay-item-lookup event; blocked and not-found lookups are free. Batch items in one run to pay the $0.00005 run base fee once. ebay.ca URLs are rejected before any request and are not charged (reason unsupported_marketplace_ebay_ca).",
            "items": {
              "type": "string"
            }
          },
          "itemIds": {
            "title": "eBay item IDs",
            "maxItems": 100,
            "type": "array",
            "description": "Numeric eBay item IDs (the number in the item URL), up to 100 per run. Items are fetched from the selected marketplace. Billing is identical to ebayUrls: $0.005 per successfully looked-up item, failures are free. Mix with ebayUrls and imageUrls in one run.",
            "items": {
              "type": "string",
              "pattern": "^[0-9]{6,}$"
            }
          },
          "imageUrls": {
            "title": "Product image URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Public product photo URLs (jpg/png/webp/avif, about 1 MB or less), up to 100 per run. These skip the eBay lookup entirely: no ebay-item-lookup fee and no eBay price, so margin fields are null. Mix with ebayUrls/itemIds to process both kinds in one run. Note: relevantMatch is false on every image-only row, because relevance is judged by comparing titles and an image-only item has no eBay title; mix in ebayUrls/itemIds if you need that flag.",
            "items": {
              "type": "string"
            }
          },
          "marketplace": {
            "title": "eBay marketplace",
            "enum": [
              "com",
              "co.uk",
              "de",
              "au"
            ],
            "type": "string",
            "description": "Which eBay site to fetch bare item IDs from. URL inputs always use their own host's marketplace; this setting only fills in bare item IDs. Each marketplace is fetched through a residential exit in its own country (US/GB/DE/AU). Prices and margins come back in the currency the listing's price is denominated in — normally the marketplace's currency (USD, GBP, EUR or AUD); a listing priced in a foreign currency keeps its own. ebay.ca is not supported: the site serves an interactive human-verification challenge to every automated session tested (10/10 across US and CA residential exits), so .ca URLs are rejected before any request, uncharged, with reason unsupported_marketplace_ebay_ca.",
            "default": "com"
          },
          "maxItems": {
            "title": "Max items per run",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Global cap across all three inputs combined (URLs, IDs and images), first come first served. Each delivered item costs one $0.005 ebay-item-lookup plus its supplier-match rows. Memory is not the binding limit: runs default to 1024 MB and a measured maxItems=100 run peaked at 457 MB. The run window is — the Actor caps its own working budget at 1,110 seconds, and a measured 100-item run delivered 89 complete supplier shortlists before cutting the last 7 with trigger=\"deadline\" (partial: true, nothing unbilled). Split very large jobs across runs, and raise the run memory to 2048 MB only if you also raise maxSuppliersPerItem well above its default.",
            "default": 20
          },
          "maxSuppliersPerItem": {
            "title": "Max 1688 suppliers per item",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many visually matching 1688 offers to return per item, in similarity order. Each delivered match row costs $0.008 (FREE tier); matches cut by your maxTotalChargeUsd are not charged. Image matches include both exact and loosely-similar results — filter on the relevantMatch flag: it is true only when the offer title shares meaningful product vocabulary with the item title (similarityRank orders rows but never marks them relevant), and service-type offers (processing/recycling/franchise) are always false.",
            "default": 10
          },
          "maxTotalChargeUsd": {
            "title": "Max total charge (USD)",
            "minimum": 0.04,
            "type": "number",
            "description": "Hard budget cap for this run including the run base fee. When the next item cannot be delivered within the cap, the run stops gracefully, marks the remaining items in skippedBy.budget and reports trigger=\"budget\". Minimum 0.04 (Apify platform limit). Budgeting note: the eBay leg is billed per looked-up item and the 1688 leg per delivered supplier row — with a very small cap (under ~$0.10) send only 1-2 items, or the cap may be consumed by item lookups before many supplier rows can be delivered.",
            "default": 2
          },
          "maxRequestsPerRun": {
            "title": "Max requests per run",
            "minimum": 50,
            "maximum": 2000,
            "type": "integer",
            "description": "Request quota guard across both legs, metered as per-item reserved slots (each item reserves its eBay navigations, challenge retries, image download and 1688 upload/search calls). When the remaining slots cannot cover the next item, remaining items are marked skippedBy.quota and trigger=\"quota\". The default 1,200 covers 100 items with retry headroom.",
            "default": 1200
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}