{
  "openapi": "3.0.1",
  "info": {
    "title": "Exchange Listing Monitor - Binance, Upbit, OKX, Bybit Feed",
    "description": "Change feed for new coin listings and delistings across Binance, Upbit, Bithumb, OKX, Bybit, KuCoin and Kraken. Keeps state between runs and emits only NEW announcements with extracted symbols and event type. Schedule every 5-15 minutes; pay only per listing detected.",
    "version": "0.1",
    "x-build-id": "N0w5W21Pf4OA4lv2n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datadeltas~exchange-listing-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datadeltas-exchange-listing-monitor",
        "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/datadeltas~exchange-listing-monitor/runs": {
      "post": {
        "operationId": "runs-sync-datadeltas-exchange-listing-monitor",
        "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/datadeltas~exchange-listing-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-datadeltas-exchange-listing-monitor",
        "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": {
          "venues": {
            "title": "Exchanges to monitor",
            "uniqueItems": true,
            "type": "array",
            "description": "Which exchange announcement channels to poll. Default: all seven. Every venue is a keyless official announcement API. A venue that is temporarily unreachable degrades to a warning - the others still emit. Only if ALL selected venues fail does the run fail.",
            "items": {
              "type": "string",
              "enum": [
                "binance",
                "upbit",
                "bithumb",
                "okx",
                "bybit",
                "kucoin",
                "kraken"
              ],
              "enumTitles": [
                "Binance - New Cryptocurrency Listing + Delisting catalogs",
                "Upbit (KR) - trading notices",
                "Bithumb (KR) - public notices",
                "OKX - new listings + delistings",
                "Bybit - new listings + delistings",
                "KuCoin - new listings + delistings",
                "Kraken - blog 'Asset Listings' posts"
              ]
            },
            "default": [
              "binance",
              "upbit",
              "bithumb",
              "okx",
              "bybit",
              "kucoin",
              "kraken"
            ]
          },
          "eventTypes": {
            "title": "Event types",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional filter on the classified event type. 'listing' = the venue is adding a coin, pair or contract; 'delisting' = the venue is removing one; 'unknown' = the announcement arrived on a listing channel but its title does not clearly say either (promotions, deposit/withdrawal pauses, Upbit caution designations). Classification is deliberately conservative - see the README. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "listing",
                "delisting",
                "unknown"
              ],
              "enumTitles": [
                "Listing (new coin, pair or contract)",
                "Delisting (coin, pair or contract removed)",
                "Unknown (on a listing channel, title not conclusive)"
              ]
            }
          },
          "symbols": {
            "title": "Tickers to watch",
            "type": "array",
            "description": "Optional filter, e.g. [\"PEPE\", \"WIF\", \"ARB\"]. An announcement is emitted when any listed ticker was extracted from its title, or - when extraction was too cautious to label it - when the ticker appears in the title text. Case-insensitive. Leave empty to monitor every announcement.",
            "items": {
              "type": "string"
            }
          },
          "sinceHours": {
            "title": "Backfill window (hours)",
            "minimum": 1,
            "maximum": 8760,
            "type": "integer",
            "description": "The first run emits announcements published within this many HOURS; later runs emit only announcements never seen before. Hours, not days, because listing latency is measured in minutes. NOTE: Kraken's feed carries 10 posts and Bithumb's API caps at 20 notices with no paging (~1 week each), so a very large window is bounded by what those venues publish. Binance, Upbit, OKX, Bybit and KuCoin page back much further.",
            "default": 48
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on announcement records emitted in one run (keeps test runs cheap). Records beyond the cap are NOT marked as seen, so they emit on the next run - nothing is lost.",
            "default": 300
          },
          "userAgent": {
            "title": "User-Agent",
            "type": "string",
            "description": "Override the browser User-Agent used for venue requests. Several venues return 403 or 429 to bare non-browser clients, so leave this empty unless you have a specific reason to change it."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}