zSignals API Documentation
Real-time Zora market data and analytics API. Track trending tokens, z100 creators, posts, and recent trading activity.
Base URL
https://api.zsignals.xyz/v1
Live Example: Trending Tokens
LIVE DATA
Updated every minute
[
{
"rank": 1,
"symbol": "propaganda",
"name": "propaganda",
"contract_address": "0xfe9ede4478ad200a2186175a81f9ce9f0e679270",
"creator_handle": "propaganda",
"trade_count": 7,
"volume_24h": 35117.07
},
{
"rank": 2,
"symbol": "coinage",
"name": "coinage",
"contract_address": "0xf4d7fd100b5b03e51261a2e6a673632ef2c68896",
"creator_handle": "coinage",
"trade_count": 10,
"volume_24h": 7696.41
},
{
"rank": 3,
"symbol": "zxbt",
"name": "zxbt is ticker",
"contract_address": "0xe777cad78993d44adb5d19ce3f3376e7bd9b4d91",
"creator_handle": "zoracreatorcoin",
"trade_count": 4,
"volume_24h": 2233.85
}
]
GET
/trending
Live Example: z100 Creators
LIVE DATA
Top performing Zora creators
[
{
"rank": 1,
"handle": "docker",
"name": "docker",
"creator_address": "0x632cdcb65e411c28a92c28ff7e6f18cf00a4fcf7",
"portfolio_value": "$4.4M",
"portfolio_value_raw": 4428824.5,
"volume_24h": "$350.3K",
"total_volume": "$6.9M",
"unique_holders": 6516,
"change_24h": "+5.8%"
},
{
"rank": 2,
"handle": "coinage",
"name": "coinage",
"creator_address": "0x230cd9380e93c080805fa12e8718f49485205721",
"portfolio_value": "$3.0M",
"portfolio_value_raw": 2983003.61,
"volume_24h": "$979.6K",
"total_volume": "$2.2M",
"unique_holders": 651,
"change_24h": "+98.3%"
},
{
"rank": 3,
"handle": "balajis",
"name": "balajis",
"creator_address": "0xdde8346b13d089cca8c0c70c370a84e83e9ecb14",
"portfolio_value": "$2.8M",
"portfolio_value_raw": 2778935.49,
"volume_24h": "$100.0K",
"total_volume": "$21.9M",
"unique_holders": 8003,
"change_24h": "+1.6%"
}
]
GET
/z100/creators
Available Endpoints
Method | Endpoint | Description |
---|---|---|
GET | /v1/market/trending |
Get trending tokens by volume and market cap |
GET | /v1/market/stats |
Overall market statistics |
GET | /v1/market/volume |
Aggregate volume data across all tokens |
GET | /v1/market/recent-swaps |
Recent swaps and trading activity |
GET | /v1/z100/index |
Z100 Index value and aggregate metrics |
GET | /v1/z100/creators |
Top 100 Zora creators by portfolio value |
GET | /v1/z100/posts |
Top 100 Zora posts by engagement |
GET | /v1/z100/historical |
Historical Z100 index data (Pro tier) |
GET | /v1/tokens/:id |
Get specific token details |
GET | /v1/tokens/:id/price-history |
Historical price data for a token |
GET | /v1/tokens/:id/metrics |
Detailed token metrics (supply, ATH/ATL) |
GET | /v1/tokens/:id/holders |
Holder distribution analytics |
GET | /v1/tokens/:id/swaps |
Recent swap history for a token |
GET | /v1/all |
All Z100 data in one call |
GET | /v1/tokens |
Search/filter tokens by field |
GET | /v1/search |
General search across Z100 tokens |
GET | /v1/discover/rising |
Rising/emerging tokens with momentum |
GET | /v1/discover/new-launches |
Recently launched tokens |
Pricing & Rate Limits
Simple, transparent pricing with generous limits. Burst up to 10,000 calls/hour for real-time applications:
Plan | API Calls | Burst Limit | Price |
---|---|---|---|
Developer | 500,000/month | 10,000/hour | $199/month |
Quick Example
curl -X GET "https://api.zsignals.xyz/v1/market/trending" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
const response = await fetch('https://api.zsignals.xyz/v1/market/trending', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
response = requests.get(
'https://api.zsignals.xyz/v1/market/trending',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'application/json'
}
)
data = response.json()
print(data)
require 'net/http'
require 'json'
uri = URI('https://api.zsignals.xyz/v1/market/trending')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer YOUR_API_KEY'
request['Accept'] = 'application/json'
response = http.request(request)
data = JSON.parse(response.body)
puts data