{"id":19170593,"url":"https://github.com/ccob/bittrex4j","last_synced_at":"2025-05-07T15:52:14.244Z","repository":{"id":26945325,"uuid":"108969696","full_name":"CCob/bittrex4j","owner":"CCob","description":"Java library for accessing the Bittrex Web API's and Web Sockets","archived":false,"fork":false,"pushed_at":"2021-11-07T05:32:40.000Z","size":410,"stargazers_count":32,"open_issues_count":0,"forks_count":23,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-19T23:32:08.940Z","etag":null,"topics":["api","bittrex","bittrex-api","btc","cryptocurrency","java","java-library","signalr","websockets"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CCob.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-31T08:55:25.000Z","updated_at":"2024-05-28T08:39:45.000Z","dependencies_parsed_at":"2022-07-27T09:02:36.736Z","dependency_job_id":null,"html_url":"https://github.com/CCob/bittrex4j","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCob%2Fbittrex4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCob%2Fbittrex4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCob%2Fbittrex4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCob%2Fbittrex4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CCob","download_url":"https://codeload.github.com/CCob/bittrex4j/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252911635,"owners_count":21824056,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","bittrex","bittrex-api","btc","cryptocurrency","java","java-library","signalr","websockets"],"created_at":"2024-11-09T09:54:34.540Z","updated_at":"2025-05-07T15:52:14.206Z","avatar_url":"https://github.com/CCob.png","language":"Java","readme":"\u003ca name=\"documentr_top\"\u003e\u003c/a\u003e\n\n# bittrex4j\n\n\n![bittrex4j Logo](docs/bittrex4j.png)  \n![Travis CI Status](https://travis-ci.org/CCob/bittrex4j.svg?branch=master) [![codecov](https://codecov.io/gh/CCob/bittrex4j/branch/master/graph/badge.svg)](https://codecov.io/gh/CCob/bittrex4j)  ![Maven Version](https://maven-badges.herokuapp.com/maven-central/com.github.ccob/bittrex4j/badge.svg)\n\n\n\n\u003e Java library for accessing the Bittrex Web API's and Web Sockets.  It currently uses a mix of v1.1 and the undocumented v2 API. \n\n\nWhere can I get the latest release?\n-----------------------------------\n\nbittrex4j is published on the maven central repository and can be imported into you project using the following maven coordinates.\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.ccob\u003c/groupId\u003e\n  \u003cartifactId\u003ebittrex4j\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.12\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nSnapshot builds are also available and published to the Sonatype Nexus repository.  You need to enable The Sonatype snapshot repository, for example:\n\n```xml\n  \u003crepositories\u003e\n      \u003crepository\u003e\n          \u003cid\u003esonatype-snapshots\u003c/id\u003e\n          \u003curl\u003ehttps://oss.sonatype.org/content/repositories/snapshots/\u003c/url\u003e\n          \u003csnapshots\u003e\n              \u003cenabled\u003etrue\u003c/enabled\u003e\n          \u003c/snapshots\u003e\n      \u003c/repository\u003e\n  \u003c/repositories\u003e\n```\nThen add the latest bittrex4j snapshot to your dependencies section\n\n## Examples\n\n**Print Markets by Volume (REST API)**\n\n```java\npackage com.github.ccob.bittrex4j.samples;\n\nimport com.github.ccob.bittrex4j.BittrexExchange;\nimport com.github.ccob.bittrex4j.dao.MarketSummaryResult;\nimport com.github.ccob.bittrex4j.dao.Response;\n\nimport java.io.IOException;\nimport java.util.Arrays;\nimport java.util.Comparator;\n\nimport static java.util.Comparator.comparing;\n\npublic class PrintMarketsByVolume {\n\n    public static void main(String[] args) throws IOException {\n\n        BittrexExchange bittrexExchange = new BittrexExchange();\n\n        Response\u003cMarketSummaryResult[]\u003e markets = bittrexExchange.getMarketSummaries();\n\n        if(!markets.isSuccess()){\n            System.out.println(\"Failed to fetch available markets with error \" + markets.getMessage());\n        }\n\n        System.out.println(String.format(\"Fetched %d available markets\",markets.getResult().length));\n\n        Arrays.stream(markets.getResult())\n                .sorted(comparing(m -\u003e m.getSummary().getBaseVolume(),Comparator.reverseOrder()))\n                .forEachOrdered(m -\u003e System.out.println(String.format(\"Market Name: %s, Volume %s\",m.getMarket().getMarketName(),m.getSummary().getBaseVolume())));\n\n    }\n}\n\n```\n**Show Realtime Fills(WebSocket API)**\n\n```java\npackage com.github.ccob.bittrex4j.samples;\n\nimport com.github.ccob.bittrex4j.BittrexExchange;\nimport com.github.ccob.bittrex4j.dao.Fill;\nimport com.github.ccob.bittrex4j.dao.OrderType;\n\nimport java.io.FileInputStream;\nimport java.io.IOException;\nimport java.util.Arrays;\nimport java.util.Properties;\n\npublic class ShowRealTimeFills {\n\n    public static void main(String[] args) throws IOException {\n\n        System.out.println(\"Press any key to quit\");\n\n        Properties prop = new Properties();\n        prop.load(new FileInputStream(\"test_keys.properties\"));\n\n        try(BittrexExchange bittrexExchange = new BittrexExchange(prop.getProperty(\"apikey\"),prop.getProperty(\"secret\"))) {\n\n            bittrexExchange.onUpdateSummaryState(exchangeSummaryState -\u003e {\n                if (exchangeSummaryState.getDeltas().length \u003e 0) {\n\n                    Arrays.stream(exchangeSummaryState.getDeltas())\n                            .filter(marketSummary -\u003e marketSummary.getMarketName().equals(\"BTC-BCC\") || marketSummary.getMarketName().equals(\"BTC-ETH\"))\n                            .forEach(marketSummary -\u003e System.out.println(\n                                    String.format(\"24 hour volume for market %s: %s\",\n                                            marketSummary.getMarketName(),\n                                            marketSummary.getVolume().toString())));\n                }\n            });\n\n            bittrexExchange.onUpdateExchangeState(updateExchangeState -\u003e {\n                double volume = Arrays.stream(updateExchangeState.getFills())\n                        .mapToDouble(Fill::getQuantity)\n                        .sum();\n\n                if(updateExchangeState.getFills().length \u003e 0) {\n                    System.out.println(String.format(\"N: %d, %02f volume across %d fill(s) for %s\", updateExchangeState.getNounce(),\n                            volume, updateExchangeState.getFills().length, updateExchangeState.getMarketName()));\n                }\n            });\n\n            bittrexExchange.onOrderStateChange(orderDelta -\u003e {\n                if(orderDelta.getType() == OrderType.Open || orderDelta.getType() == OrderType.Partial){\n                    System.out.println(String.format(\"%s order open with id %s, remaining %.04f\", orderDelta.getOrder().getExchange(),\n                            orderDelta.getOrder().getOrderUuid(),orderDelta.getOrder().getQuantityRemaining()));\n                }else if(orderDelta.getType() == OrderType.Filled ){\n                    System.out.println(String.format(\"%s order with id %s filled, qty %.04f\", orderDelta.getOrder().getExchange(),\n                            orderDelta.getOrder().getOrderUuid(),orderDelta.getOrder().getQuantity()));\n                }else if(orderDelta.getType() == OrderType.Cancelled){\n                    System.out.println(String.format(\"%s order with id %s cancelled\", orderDelta.getOrder().getExchange(),\n                            orderDelta.getOrder().getOrderUuid()));\n                }\n            });\n\n            bittrexExchange.onBalanceStateChange(balanceDelta -\u003e {\n                System.out.println(String.format(\"%s wallet balance updated, available: %s, pending: %s\", balanceDelta.getBalance().getCurrency(),\n                        balanceDelta.getBalance().getAvailable(),balanceDelta.getBalance().getPending()));\n            });\n\n            bittrexExchange.connectToWebSocket(() -\u003e {\n                bittrexExchange.queryExchangeState(\"BTC-ETH\",exchangeState -\u003e {\n                    System.out.println(String.format(\"BTC-ETH order book has %d open buy orders and %d open sell orders (500 return limit)\",exchangeState.getBuys().length, exchangeState.getSells().length));\n\n                });\n                bittrexExchange.subscribeToExchangeDeltas(\"BTC-ETH\", null);\n                bittrexExchange.subscribeToMarketSummaries(null);\n            });\n\n            System.in.read();\n        }\n\n        System.out.println(\"Closing websocket and exiting\");\n    }\n}\n```\n**Show Deposit History for BTC (Authenticated REST API)**\n\n```java\npackage com.github.ccob.bittrex4j.samples;\n\nimport com.github.ccob.bittrex4j.BittrexExchange;\nimport com.github.ccob.bittrex4j.dao.Response;\nimport com.github.ccob.bittrex4j.dao.WithdrawalDeposit;\n\nimport java.io.IOException;\nimport java.util.Arrays;\n\npublic class PrintDepositHistory {\n\n    /* Replace apikey and secret values below */\n    private static final String apikey = \"*\";\n    private static final String secret = \"*\";\n\n    public static void main(String[] args) throws IOException {\n\n        BittrexExchange bittrexExchange = new BittrexExchange(5, apikey,secret);\n\n        Response\u003cWithdrawalDeposit[]\u003e markets = bittrexExchange.getDepositHistory(\"BTC\");\n\n        if(!markets.isSuccess()){\n            System.out.println(\"Failed to fetch deposit history with error \" + markets.getMessage());\n        }\n\n        Arrays.stream(markets.getResult())\n                .forEach(deposit -\u003e System.out.println(String.format(\"Address %s, Amount %02f\",deposit.getAddress(),deposit.getAmount())));\n\n    }\n}\n\n```\n\n## Thanks\n\nThanks to platelminto for the java-bittrex project and dparlevliet for the node.bittrex.api where both have been used for inspiration.\n\n## Donations\n\nDonation welcome: \n  * BTC **1PXx92jaFZF92jLg64GF7APAsVCU4Tsogx**\n  * UBQ **0xAa14EdE8541d1022121a39892821f271A9cdAF33**\n  * ETH **0xC7DC0CADbb497d3e11379c7A2aEE8b08bEc9F30b**   ","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccob%2Fbittrex4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccob%2Fbittrex4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccob%2Fbittrex4j/lists"}