{
  "openapi": "3.0.1",
  "info": {
    "title": "Hyperliquid Perp & Spot Markets: Price, Funding, Open Interest",
    "description": "One row per Hyperliquid market from the exchange's public info API: mark, mid and oracle price, 24h volume, open interest in USD, hourly funding and its yearly rate, spot pairs with readable names. Two extra modes give an order-book snapshot with USD depth and past funding samples per coin.",
    "version": "0.1",
    "x-build-id": "CpzkQ4NYJIPGU2q0e"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yadroo~hyperliquid-markets/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yadroo-hyperliquid-markets",
        "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/yadroo~hyperliquid-markets/runs": {
      "post": {
        "operationId": "runs-sync-yadroo-hyperliquid-markets",
        "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/yadroo~hyperliquid-markets/run-sync": {
      "post": {
        "operationId": "run-sync-yadroo-hyperliquid-markets",
        "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": {
          "mode": {
            "title": "What to fetch",
            "enum": [
              "markets",
              "orderBook",
              "fundingHistory"
            ],
            "type": "string",
            "description": "`markets` reads the whole market table in two calls and writes a row per market. `orderBook` takes a book snapshot for each coin in *Coins* and condenses it into one row (plus the raw levels). `fundingHistory` walks the funding payments of each coin in *Coins* backwards over *Hours back* and writes one row per sample (funding settles hourly).",
            "default": "markets"
          },
          "marketType": {
            "title": "Market type",
            "enum": [
              "perp",
              "spot",
              "both"
            ],
            "type": "string",
            "description": "Which side of the exchange to read in `markets` mode. Funding, open interest, oracle price and leverage exist only on perpetuals; supply and market cap only on spot. `orderBook` and `fundingHistory` always use perpetuals.",
            "default": "perp"
          },
          "coins": {
            "title": "Coins",
            "type": "array",
            "description": "Base symbols as the exchange writes them, e.g. BTC, ETH, HYPE, SOL, XRP. Required for `orderBook` and `fundingHistory`; in `markets` mode it narrows the table and an empty list returns every market. Case is ignored; a symbol the exchange does not list is reported as a row with `found: false`. Run `markets` with an empty list once to see the full symbol dictionary.",
            "items": {
              "type": "string"
            }
          },
          "minDayVolumeUsd": {
            "title": "Minimum 24h volume (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop markets that traded less than this in the last 24 hours. Useful to skip the long tail of thin listings. Empty = keep everything. `markets` mode only."
          },
          "includePredictedFunding": {
            "title": "Add predicted funding per venue",
            "type": "boolean",
            "description": "Adds one extra call that returns the funding rate each venue is about to charge for the same coin, so every perpetual row also carries the rate expected on other perp venues and the next funding timestamp in UTC. This is what a funding-spread screen needs.",
            "default": false
          },
          "includeDelisted": {
            "title": "Include delisted perpetuals",
            "type": "boolean",
            "description": "The exchange keeps delisted contracts in its market table with a frozen price and no volume. They are skipped by default; turn this on to see them too (`isDelisted` marks them). `markets` mode only.",
            "default": false
          },
          "sortBy": {
            "title": "Sort rows by",
            "enum": [
              "dayVolumeUsd",
              "openInterestUsd",
              "fundingApr",
              "dayChangePct",
              "marketCapUsd",
              "symbol"
            ],
            "type": "string",
            "description": "Order of the rows before *Max rows* cuts the list, so sorting by volume with a small limit gives you the busiest markets.",
            "default": "dayVolumeUsd"
          },
          "sortDesc": {
            "title": "Largest first",
            "type": "boolean",
            "description": "Off = smallest first. Turn it off with *Sort rows by* = funding rate to find the most negative funding, where shorts pay longs.",
            "default": true
          },
          "bookDepth": {
            "title": "Book levels per side",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many price levels of bids and of asks to keep in the `bids` and `asks` arrays of an `orderBook` row. The summary numbers (spread, depth, imbalance) are computed from the levels kept.",
            "default": 10
          },
          "depthUsdWindowPct": {
            "title": "Depth window (% from mid)",
            "minimum": 0.01,
            "maximum": 10,
            "type": "number",
            "description": "Width of the band used for `bidDepthUsd` and `askDepthUsd`: with 0.5 the row tells you how many USD of resting size sit within half a percent below and above the mid price. That is the number behind \"how big a market order can this book absorb\".",
            "default": 0.5
          },
          "sinceHours": {
            "title": "Hours back",
            "minimum": 1,
            "maximum": 2160,
            "type": "integer",
            "description": "Window for `fundingHistory`, counted back from the moment the run starts, in UTC. Funding settles once an hour, so 24 gives about 24 rows per coin and 720 covers a month. Schedule the actor hourly with a small window to keep a funding table up to date.",
            "default": 24
          },
          "maxItems": {
            "title": "Max rows",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on dataset rows. The exchange lists a few hundred perpetuals and several hundred spot pairs, so raise this when you want the complete table.",
            "default": 50
          },
          "fields": {
            "title": "Output fields",
            "type": "array",
            "description": "Keep only these fields, in this order, e.g. [\"symbol\", \"markPx\", \"fundingApr\"]. Empty = every field the mode produces.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}