List Pairs
Retrieves all available cryptocurrency trading pairs on Gate.io exchange. Essential for discovering tradeable pairs, validating pair names, and building multi-pair trading strategies.
Common Properties
- Name - The custom name of the node.
- Color - The custom color of the node.
- Delay Before (sec) - Waits in seconds before executing the node.
- Delay After (sec) - Waits in seconds after executing node.
- Continue On Error - Automation will continue regardless of any error. The default value is false.
If the ContinueOnError property is true, no error is caught when the project is executed, even if a Catch node is used.
Inputs
This node has no inputs. It retrieves all available trading pairs.
Output
- Result - An array of currency pair objects, where each object contains:
id- Trading pair identifier (e.g.,BTC_USDT)base- Base currency (e.g.,BTC)quote- Quote currency (e.g.,USDT)fee- Trading fee percentagemin_base_amount- Minimum order amount in base currencymin_quote_amount- Minimum order amount in quote currencyamount_precision- Decimal precision for amountprecision- Price decimal precisiontrade_status- Trading status (tradable, untradable, etc.)- And other pair-specific fields
How It Works
The List Pairs node executes the following steps:
- Creates a new Gate.io client (no authentication required)
- Queries the Gate.io API for all currency pairs
- Returns the complete list of trading pair configurations
Requirements
- No authentication required (this is public market data)
- No inputs needed
Error Handling
The node will return specific errors in the following cases:
- ErrListCurrency - Failed to retrieve currency pairs from Gate.io API
Usage Notes
- This retrieves public data (no authentication needed)
- Returns all pairs regardless of trading status
- Check
trade_statusfield to verify if pair is actively tradable - Data includes minimum order sizes and precision requirements
- Result can contain hundreds of trading pairs
- Use filtering to find specific pairs of interest
- Trading rules (min amounts, precision) are crucial for order placement
Best Practices
- Cache the results to reduce API calls (pairs don't change frequently)
- Filter by
trade_status = "tradable"for active pairs - Use
min_base_amountandmin_quote_amountto validate order sizes - Check
precisionfields to format prices correctly - Filter by quote currency to find all pairs trading against USDT, BTC, etc.
- Validate user-provided pair names against this list
- Use for discovering new trading opportunities
Example Usage Scenarios
List All Trading Pairs
Inputs: (none)
Output:
[
{
id: "BTC_USDT",
base: "BTC",
quote: "USDT",
fee: "0.2",
min_base_amount: "0.00001",
min_quote_amount: "1",
amount_precision: 8,
precision: 2,
trade_status: "tradable",
...
},
{
id: "ETH_USDT",
base: "ETH",
quote: "USDT",
...
},
...
]
Example Flow: Find All USDT Pairs
[List Pairs]
|
+-> [Filter]
|
+-> [For Each: pair in result]
|
+-> [If: pair.quote = "USDT" AND pair.trade_status = "tradable"]
|
+-> [Add to: usdt_pairs array]
|
[Log: Found X tradable USDT pairs]
[Store: usdt_pairs]
Example Flow: Validate Trading Pair
[Set: user_pair = "BTC_USDT"]
|
[List Pairs]
|
+-> [Find: pair where pair.id = user_pair]
|
+-> [If: found]
| |
| +-> [Check: pair.trade_status = "tradable"]
| | |
| | +-> True: [Log: Pair is valid and tradable]
| | +-> False: [Error: Pair exists but not tradable]
| |
| +-> [Store: pair.min_base_amount, pair.precision]
|
+-> [Else: Error: Invalid pair name]
Example Flow: Multi-Pair Price Monitor
[List Pairs]
|
+-> [Filter: quote = "USDT", trade_status = "tradable"]
| |
| +-> [Sort by: 24h volume (if available)]
| +-> [Take: top 10 pairs]
|
+-> [For Each: pair in top_pairs]
|
+-> [Get Price: pair.id]
+-> [Store: prices[pair.id] = price data]
|
[Generate Price Report]
Example Flow: Discover New Listings
[Schedule: Daily]
|
+-> [List Pairs]
| |
| +-> [Store: current_pairs]
|
+-> [Compare with: yesterday_pairs]
|
+-> [Find: new_pairs = current - yesterday]
|
+-> [If: new_pairs.length > 0]
|
+-> [For Each: pair in new_pairs]
| |
| +-> [Send Alert: New pair listed: pair.id]
|
+-> [Store: current_pairs as yesterday_pairs]
Example Flow: Build Trading Universe
[List Pairs]
|
+-> [Filter Criteria]
|
+-> trade_status = "tradable"
+-> quote in ["USDT", "BTC"]
+-> min_quote_amount <= max_investment
|
[Store: trading_universe]
|
[For Each: pair in trading_universe]
|
+-> [Get Price]
+-> [Calculate metrics]
+-> [Score for trading potential]
Understanding Pair Configuration
Critical Fields
id: Trading pair identifier
pair.id = "BTC_USDT" // Use this for all trading operations
Base and Quote
pair.base = "BTC" // What you're buying/selling
pair.quote = "USDT" // What you're paying/receiving
Minimum Order Sizes
pair.min_base_amount = "0.00001" // Minimum BTC to trade
pair.min_quote_amount = "1" // Minimum USDT value
Precision
pair.precision = 2 // Price has 2 decimal places
pair.amount_precision = 8 // Amount has 8 decimal places
Trading Status
pair.trade_status = "tradable" // Can trade
pair.trade_status = "untradable" // Cannot trade
Filtering Examples
Find All Pairs for a Specific Base Currency
const btcPairs = result.filter(p => p.base === "BTC");
// Returns: BTC_USDT, BTC_USD, BTC_EUR, etc.
Find All Pairs Quoting in USDT
const usdtPairs = result.filter(p => p.quote === "USDT");
// Returns: BTC_USDT, ETH_USDT, GT_USDT, etc.
Find Tradable Pairs Only
const tradablePairs = result.filter(p => p.trade_status === "tradable");
Find Pairs with Low Minimum Investment
const lowMinPairs = result.filter(p => {
return parseFloat(p.min_quote_amount) <= 10; // $10 minimum
});
Example: Validate Order Parameters
[List Pairs]
|
+-> [Find: pair = "BTC_USDT"]
|
[User wants to buy: amount = 0.00005 BTC at price = 50000.123]
|
[Validate]
|
+-> [Check: amount >= pair.min_base_amount]
| +-> 0.00005 >= 0.00001 ✓
|
+-> [Check: amount * price >= pair.min_quote_amount]
| +-> 0.00005 * 50000.123 = 2.5 >= 1 ✓
|
+-> [Check: price precision]
| +-> Round to pair.precision (2 decimals)
| +-> 50000.123 -> 50000.12
|
+-> [Check: amount precision]
| +-> Round to pair.amount_precision (8 decimals)
| +-> 0.00005 already valid
|
[Place Order with validated parameters]
Building a Pair Lookup Function
// Store pairs for quick lookup
const pairMap = {};
result.forEach(pair => {
pairMap[pair.id] = pair;
});
// Quick lookup
function validatePair(pairId) {
const pair = pairMap[pairId];
if (!pair) {
throw new Error(`Pair ${pairId} not found`);
}
if (pair.trade_status !== "tradable") {
throw new Error(`Pair ${pairId} is not tradable`);
}
return pair;
}
function validateOrderSize(pairId, amount, price) {
const pair = validatePair(pairId);
if (parseFloat(amount) < parseFloat(pair.min_base_amount)) {
throw new Error(`Amount below minimum ${pair.min_base_amount}`);
}
const quoteAmount = parseFloat(amount) * parseFloat(price);
if (quoteAmount < parseFloat(pair.min_quote_amount)) {
throw new Error(`Order value below minimum ${pair.min_quote_amount}`);
}
return true;
}
Common Use Cases
1. Pair Validation
Validate user-provided pair names before trading
2. Order Size Validation
Check minimum order requirements before placing orders
3. Price Formatting
Use precision settings to format prices correctly
4. Market Discovery
Find new or high-volume trading pairs
5. Multi-Pair Strategies
Build trading strategies across multiple pairs
6. Fee Comparison
Compare trading fees across different pairs
Related Nodes
- Get Price - Get price data for pairs discovered by this node
- Buy Order - Use pair configuration to validate order parameters
- Sell Order - Use pair configuration to validate order parameters
- List Orders - Analyze order book for discovered pairs